From 5c7441241cc85010de42cdb525a58151cb8ec6bd Mon Sep 17 00:00:00 2001 From: Astrash Date: Sat, 25 Nov 2023 12:37:56 +1100 Subject: [PATCH 001/116] Replace Loader with java.nio.files --- .../dfsek/terra/addons/yaml/YamlAddon.java | 25 +++++- .../terra/addons/image/ImageLibraryAddon.java | 4 +- .../addons/image/config/image/ImageCache.java | 24 ++---- .../image/config/image/ImageTemplate.java | 7 +- .../config/image/StitchedImageTemplate.java | 7 +- .../addons/sponge/SpongeSchematicAddon.java | 24 ++++-- .../addons/terrascript/TerraScriptAddon.java | 47 ++++++----- .../dfsek/terra/api/config/ConfigPack.java | 3 +- .../com/dfsek/terra/api/config/Loader.java | 47 ----------- .../config/ConfigurationDiscoveryEvent.java | 10 +-- .../com/dfsek/terra/api/util/FileUtil.java | 39 +++++++++ .../com/dfsek/terra/api/util/StringUtil.java | 25 ------ .../com/dfsek/terra/AbstractPlatform.java | 6 +- .../config/fileloaders/FolderLoader.java | 66 --------------- .../terra/config/fileloaders/LoaderImpl.java | 83 ------------------- .../terra/config/fileloaders/ZIPLoader.java | 63 -------------- .../loaders/config/BufferedImageLoader.java | 8 +- .../terra/config/pack/ConfigPackImpl.java | 69 ++++++--------- .../terra/registry/master/ConfigRegistry.java | 46 +++------- .../com/dfsek/terra/bukkit/PlatformImpl.java | 8 +- .../com/dfsek/terra/forge/ForgePlatform.java | 8 +- .../terra/lifecycle/LifecyclePlatform.java | 9 +- 22 files changed, 186 insertions(+), 442 deletions(-) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/config/Loader.java create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/FileUtil.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/StringUtil.java delete mode 100644 common/implementation/base/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java delete mode 100644 common/implementation/base/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java delete mode 100644 common/implementation/base/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.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 08cb9751a..31aad8be5 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 @@ -8,6 +8,9 @@ package com.dfsek.terra.addons.yaml; import com.dfsek.tectonic.yaml.YamlConfiguration; + +import com.dfsek.terra.api.util.FileUtil; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,6 +21,9 @@ import com.dfsek.terra.api.event.events.config.ConfigurationDiscoveryEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.annotations.Inject; +import java.io.IOException; +import java.nio.file.Files; + public class YamlAddon implements AddonInitializer { @@ -33,10 +39,21 @@ public class YamlAddon implements AddonInitializer { platform.getEventManager() .getHandler(FunctionalEventHandler.class) .register(addon, ConfigurationDiscoveryEvent.class) - .then(event -> event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> { - LOGGER.debug("Discovered config {}", entry.getKey()); - event.register(entry.getKey(), new YamlConfiguration(entry.getValue(), entry.getKey())); - })).close()) + .then(event -> { + try { + FileUtil.filesWithExtension(event.getPack().getPackDirectory(), ".yml") + .forEach((key, value) -> { + LOGGER.debug("Discovered config {}", key); + try { + event.register(key, new YamlConfiguration(Files.newInputStream(value), key)); + } catch(IOException e) { + throw new RuntimeException(e); + } + }); + } catch(IOException e) { + throw new RuntimeException(e); + } + }) .failThrough(); } } diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java index b383c4ca7..b29920160 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java @@ -60,8 +60,8 @@ public class ImageLibraryAddon implements AddonInitializer { .then(event -> { ConfigPack pack = event.getPack(); CheckedRegistry>> imageRegistry = pack.getOrCreateRegistry(IMAGE_REGISTRY_KEY); - imageRegistry.register(addon.key("BITMAP"), () -> new ImageTemplate(pack.getLoader(), pack)); - imageRegistry.register(addon.key("STITCHED_BITMAP"), () -> new StitchedImageTemplate(pack.getLoader(), pack)); + imageRegistry.register(addon.key("BITMAP"), () -> new ImageTemplate(pack)); + imageRegistry.register(addon.key("STITCHED_BITMAP"), () -> new StitchedImageTemplate(pack)); }) .then(event -> { event.getPack() diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageCache.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageCache.java index 9283aa4b7..be352ac47 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageCache.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageCache.java @@ -4,8 +4,10 @@ import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; import javax.imageio.ImageIO; -import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.concurrent.TimeUnit; import com.dfsek.terra.addons.image.config.ImageLibraryPackConfigTemplate; @@ -13,7 +15,6 @@ import com.dfsek.terra.addons.image.image.BufferedImageWrapper; import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.image.SuppliedImage; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.Loader; import com.dfsek.terra.api.properties.Properties; import com.dfsek.terra.api.util.generic.Lazy; @@ -22,13 +23,13 @@ import com.dfsek.terra.api.util.generic.Lazy; * Cache prevents configs from loading the same image multiple times into memory */ record ImageCache(LoadingCache cache) implements Properties { - public static Image load(String path, ConfigPack pack, Loader files) throws IOException { + public static Image load(String path, ConfigPack pack) throws IOException { ImageLibraryPackConfigTemplate config = pack.getContext().get(ImageLibraryPackConfigTemplate.class); ImageCache images; if(!pack.getContext().has(ImageCache.class)) { var cacheBuilder = Caffeine.newBuilder(); if(config.unloadOnTimeout()) cacheBuilder.expireAfterAccess(config.getCacheTimeout(), TimeUnit.SECONDS); - images = new ImageCache(cacheBuilder.build(s -> loadImage(s, files))); + images = new ImageCache(cacheBuilder.build(s -> loadImage(s, pack.getPackDirectory()))); pack.getContext().put(images); } else images = pack.getContext().get(ImageCache.class); @@ -45,17 +46,8 @@ record ImageCache(LoadingCache cache) implements Properties { return images.cache.get(path); } - private static Image loadImage(String path, Loader files) throws IOException { - try { - return new BufferedImageWrapper(ImageIO.read(files.get(path))); - } catch(IllegalArgumentException e) { - throw new IllegalArgumentException("Unable to load image (image might be too large?)", e); - } catch(IOException e) { - if(e instanceof FileNotFoundException) { - // Rethrow using nicer message - throw new IOException("Unable to load image: No such file or directory: " + path, e); - } - throw new IOException("Unable to load image", e); - } + private static Image loadImage(String path, Path directory) throws IOException { + InputStream is = Files.newInputStream(directory.resolve(path)); + return new BufferedImageWrapper(ImageIO.read(is)); } } diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageTemplate.java index dc33bf13c..0ef7ee751 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageTemplate.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageTemplate.java @@ -7,25 +7,22 @@ import java.io.IOException; import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.Loader; public class ImageTemplate implements ObjectTemplate { - private final Loader files; private final ConfigPack pack; @Value("path") private String path; - public ImageTemplate(Loader files, ConfigPack pack) { - this.files = files; + public ImageTemplate(ConfigPack pack) { this.pack = pack; } @Override public Image get() { try { - return ImageCache.load(path, pack, files); + return ImageCache.load(path, pack); } catch(IOException e) { throw new RuntimeException(e); } diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/StitchedImageTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/StitchedImageTemplate.java index 3a834a218..f7f7fb7e4 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/StitchedImageTemplate.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/StitchedImageTemplate.java @@ -11,12 +11,10 @@ import java.io.IOException; import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.image.StitchedImage; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.Loader; public class StitchedImageTemplate implements ObjectTemplate, ValidatedConfigTemplate { - private final Loader files; private final ConfigPack pack; @Value("path-format") private String path; @@ -28,8 +26,7 @@ public class StitchedImageTemplate implements ObjectTemplate, ValidatedCo @Default private boolean zeroIndexed = false; - public StitchedImageTemplate(Loader files, ConfigPack pack) { - this.files = files; + public StitchedImageTemplate(ConfigPack pack) { this.pack = pack; } @@ -39,7 +36,7 @@ public class StitchedImageTemplate implements ObjectTemplate, ValidatedCo for(int i = 0; i < rows; i++) { for(int j = 0; j < cols; j++) { try { - grid[i][j] = ImageCache.load(getFormattedPath(i, j), pack, files); + grid[i][j] = ImageCache.load(getFormattedPath(i, j), pack); } catch(IOException e) { throw new RuntimeException(e); } diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java index 199864cd1..a3715048d 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.sponge; +import com.dfsek.terra.api.util.FileUtil; + import net.querz.nbt.io.NBTDeserializer; import net.querz.nbt.tag.ByteArrayTag; import net.querz.nbt.tag.CompoundTag; @@ -16,6 +18,7 @@ import net.querz.nbt.tag.Tag; import java.io.IOException; import java.io.InputStream; import java.io.PushbackInputStream; +import java.nio.file.Files; import java.util.HashMap; import java.util.Map; import java.util.zip.GZIPInputStream; @@ -29,7 +32,6 @@ import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.StringUtil; import com.dfsek.terra.api.util.vector.Vector3Int; @@ -58,13 +60,21 @@ public class SpongeSchematicAddon implements AddonInitializer { .register(addon, ConfigPackPreLoadEvent.class) .then(event -> { CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); - event.getPack() - .getLoader() - .open("", ".schem") - .thenEntries(entries -> entries + try { + FileUtil.filesWithExtension(event.getPack().getPackDirectory(), ".schem") + .entrySet() .stream() - .map(entry -> convert(entry.getValue(), StringUtil.fileName(entry.getKey()))) - .forEach(structureRegistry::register)).close(); + .map(entry -> { + try { + return convert(Files.newInputStream(entry.getValue()), FileUtil.fileName(entry.getKey())); + } catch(IOException e) { + throw new RuntimeException(e); + } + }) + .forEach(structureRegistry::register); + } catch(IOException e) { + throw new RuntimeException(e); + } }) .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 b555b7bac..a494eef77 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 @@ -19,7 +19,10 @@ import com.dfsek.terra.api.inject.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.StringUtil; +import com.dfsek.terra.api.util.FileUtil; + +import java.io.IOException; +import java.nio.file.Files; public class TerraScriptAddon implements AddonInitializer { @@ -37,26 +40,28 @@ public class TerraScriptAddon implements AddonInitializer { .then(event -> { CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); - event.getPack().getLoader().open("", ".tesf").thenEntries( - entries -> - entries.stream() - .parallel() - .map(entry -> { - try { - String id = StringUtil.fileName(entry.getKey()); - return new StructureScript(entry.getValue(), - addon.key(id), - platform, - structureRegistry, - lootRegistry, - event.getPack().getOrCreateRegistry(FunctionBuilder.class)); - } catch(ParseException e) { - throw new RuntimeException("Failed to load script \"" + entry.getKey() + "\"", e); - } - }) - .toList() - .forEach(structureRegistry::register)) - .close(); + try { + FileUtil.filesWithExtension(event.getPack().getPackDirectory(), ".tesf") + .entrySet() + .stream() + .parallel() + .map(entry -> { + try { + String id = FileUtil.fileName(entry.getKey()); + return new StructureScript(Files.newInputStream(entry.getValue()), + addon.key(id), + platform, + structureRegistry, + lootRegistry, + event.getPack().getOrCreateRegistry(FunctionBuilder.class)); + } catch(ParseException | IOException e) { + throw new RuntimeException("Failed to load script \"" + entry.getKey() + "\"", e); + } + }) + .forEach(structureRegistry::register); + } catch(IOException e) { + throw new RuntimeException(e); + } }) .priority(100) .failThrough(); 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 8e0214ff0..837c44d0b 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 @@ -10,6 +10,7 @@ package com.dfsek.terra.api.config; import ca.solostudios.strata.version.Version; import ca.solostudios.strata.version.VersionRange; +import java.nio.file.Path; import java.util.List; import java.util.Map; @@ -43,7 +44,7 @@ public interface ConfigPack extends LoaderRegistrar, List getStages(); - Loader getLoader(); + Path getPackDirectory(); String getAuthor(); 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 deleted file mode 100644 index 5b12e43c2..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/config/Loader.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra API is licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in the common/api directory. - */ - -package com.dfsek.terra.api.config; - -import com.dfsek.tectonic.api.exception.ConfigException; - -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(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. - * - * @param directory Directory to open - * @param extension File extension - */ - Loader open(String directory, String extension); - - /** - * Close all InputStreams opened. - */ - Loader close(); -} 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 fbe1c8a28..ee8b6489b 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 @@ -9,10 +9,10 @@ package com.dfsek.terra.api.event.events.config; import com.dfsek.tectonic.api.config.Configuration; +import java.nio.file.Path; 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; @@ -25,13 +25,11 @@ import com.dfsek.terra.api.event.events.PackEvent; */ 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) { + public ConfigurationDiscoveryEvent(ConfigPack pack, BiConsumer consumer) { this.pack = pack; - this.loader = loader; this.consumer = consumer; } @@ -43,8 +41,4 @@ public class ConfigurationDiscoveryEvent implements PackEvent, FailThroughEvent public ConfigPack getPack() { return pack; } - - public Loader getLoader() { - return loader; - } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/FileUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/FileUtil.java new file mode 100644 index 000000000..3d9f22fbe --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/FileUtil.java @@ -0,0 +1,39 @@ +package com.dfsek.terra.api.util; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static java.util.function.Function.*; + + +public class FileUtil { + public static Map filesWithExtension(Path start, String... extensions) throws IOException { + if(Files.notExists(start) || !Files.isDirectory(start)) return Collections.emptyMap(); + try (Stream paths = Files.walk(start)) { + return paths + .filter(Files::isRegularFile) + .filter(p -> Arrays.stream(extensions).anyMatch(e -> p.getFileName().toString().endsWith(e))) + .collect(Collectors.toMap(p -> start.relativize(p).toString(), identity())); + } + } + + public static String fileName(String path) { + if(path.contains(File.separator)) { + return path.substring(path.lastIndexOf(File.separatorChar) + 1, path.lastIndexOf('.')); + } else if(path.contains("/")) { + return path.substring(path.lastIndexOf("/") + 1, path.lastIndexOf('.')); + } else if(path.contains(".")) { + return path.substring(0, path.lastIndexOf('.')); + } else { + return path; + } + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/StringUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/StringUtil.java deleted file mode 100644 index d48753fb2..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/StringUtil.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra API is licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in the common/api directory. - */ - -package com.dfsek.terra.api.util; - -import java.io.File; - - -public class StringUtil { - public static String fileName(String path) { - if(path.contains(File.separator)) { - return path.substring(path.lastIndexOf(File.separatorChar) + 1, path.lastIndexOf('.')); - } else if(path.contains("/")) { - return path.substring(path.lastIndexOf("/") + 1, path.lastIndexOf('.')); - } else if(path.contains(".")) { - return path.substring(0, path.lastIndexOf('.')); - } else { - return path; - } - } -} diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java index 86d22bc2a..08c9acbce 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -149,7 +149,11 @@ public abstract class AbstractPlatform implements Platform { .register(internalAddon, PlatformInitializationEvent.class) .then(event -> { logger.info("Loading config packs..."); - configRegistry.loadAll(this); + try { + configRegistry.loadAll(this); + } catch(IOException e) { + logger.error("Error loading config packs", e); + } logger.info("Loaded packs."); }) .global(); diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java deleted file mode 100644 index fb236f6d7..000000000 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of Terra. - * - * Terra is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Terra is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Terra. If not, see . - */ - -package com.dfsek.terra.config.fileloaders; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.stream.Stream; - - -/** - * Load all {@code *.yml} files from a {@link java.nio.file.Path}. - */ -public class FolderLoader extends LoaderImpl { - private static final Logger logger = LoggerFactory.getLogger(FolderLoader.class); - - private final Path path; - - public FolderLoader(Path path) { - this.path = path; - } - - @Override - public InputStream get(String singleFile) throws IOException { - return new FileInputStream(new File(path.toFile(), singleFile)); - } - - protected void load(String directory, String extension) { - File newPath = new File(path.toFile(), directory); - newPath.mkdirs(); - try(Stream paths = Files.walk(newPath.toPath())) { - paths.filter(Files::isRegularFile).filter(file -> file.toString().toLowerCase().endsWith(extension)).forEach(file -> { - try { - String rel = newPath.toPath().relativize(file).toString(); - streams.put(rel, new FileInputStream(file.toFile())); - } catch(FileNotFoundException e) { - logger.error("Could not find file to load", e); - } - }); - } catch(IOException e) { - logger.error("Error while loading files", e); - } - } -} diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java deleted file mode 100644 index b1cfe97c6..000000000 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * This file is part of Terra. - * - * Terra is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Terra is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Terra. If not, see . - */ - -package com.dfsek.terra.config.fileloaders; - -import com.dfsek.tectonic.api.exception.ConfigException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.Consumer; - -import com.dfsek.terra.api.config.Loader; - - -public abstract class LoaderImpl implements Loader { - private static final Logger logger = LoggerFactory.getLogger(LoaderImpl.class); - - protected final Map streams = new HashMap<>(); - - @Override - public Loader thenNames(Consumer> consumer) throws ConfigException { - consumer.accept(new ArrayList<>(streams.keySet())); - return this; - } - - @Override - public Loader thenEntries(Consumer>> consumer) throws ConfigException { - consumer.accept(streams.entrySet()); - return this; - } - - /** - * Open a subdirectory. - * - * @param directory Directory to open - * @param extension File extension - */ - @Override - public LoaderImpl open(String directory, String extension) { - if(!streams.isEmpty()) throw new IllegalStateException("Attempted to load new directory before closing existing InputStreams"); - load(directory, extension); - return this; - } - - /** - * Close all InputStreams opened. - */ - @Override - public Loader close() { - streams.forEach((name, input) -> { - try { - input.close(); - } catch(IOException e) { - logger.error("Error occurred while loading", e); - } - }); - streams.clear(); - return this; - } - - protected abstract void load(String directory, String extension); -} diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java deleted file mode 100644 index 9bcd5962c..000000000 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of Terra. - * - * Terra is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Terra is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Terra. If not, see . - */ - -package com.dfsek.terra.config.fileloaders; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Enumeration; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - - -public class ZIPLoader extends LoaderImpl { - private static final Logger logger = LoggerFactory.getLogger(ZIPLoader.class); - - private final ZipFile file; - - public ZIPLoader(ZipFile file) { - this.file = file; - } - - @Override - public InputStream get(String singleFile) throws IOException { - Enumeration entries = file.entries(); - while(entries.hasMoreElements()) { - ZipEntry entry = entries.nextElement(); - if(!entry.isDirectory() && entry.getName().equals(singleFile)) return file.getInputStream(entry); - } - throw new IllegalArgumentException("No such file: " + singleFile); - } - - protected void load(String directory, String extension) { - Enumeration entries = file.entries(); - while(entries.hasMoreElements()) { - ZipEntry entry = entries.nextElement(); - if(!entry.isDirectory() && entry.getName().startsWith(directory) && entry.getName().endsWith(extension)) { - try { - String rel = entry.getName().substring(directory.length()); - streams.put(rel, file.getInputStream(entry)); - } catch(IOException e) { - logger.error("Error while loading file from zip", e); - } - } - } - } -} diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java index 078e62e87..61585aa27 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java @@ -27,10 +27,10 @@ import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.IOException; import java.lang.reflect.AnnotatedType; +import java.nio.file.Files; import java.util.concurrent.ConcurrentHashMap; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.Loader; import com.dfsek.terra.api.properties.Properties; @@ -39,12 +39,10 @@ import com.dfsek.terra.api.properties.Properties; */ @Deprecated public class BufferedImageLoader implements TypeLoader { - private final Loader files; private final ConfigPack pack; - public BufferedImageLoader(Loader files, ConfigPack pack) { - this.files = files; + public BufferedImageLoader(ConfigPack pack) { this.pack = pack; if(!pack.getContext().has(ImageCache.class)) pack.getContext().put(new ImageCache(new ConcurrentHashMap<>())); @@ -55,7 +53,7 @@ public class BufferedImageLoader implements TypeLoader { throws LoadException { return pack.getContext().get(ImageCache.class).map.computeIfAbsent((String) c, s -> { try { - return ImageIO.read(files.get(s)); + return ImageIO.read(Files.newInputStream(pack.getPackDirectory().resolve(s))); } catch(IOException e) { throw new LoadException("Unable to load image", e, depthTracker); } diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 06b617cd8..fb0f96739 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -32,7 +32,6 @@ import com.dfsek.terra.api.addon.BaseAddon; 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; @@ -45,15 +44,12 @@ import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.tectonic.ShortcutLoader; -import com.dfsek.terra.api.util.generic.Construct; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.reflection.ReflectionUtil; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; import com.dfsek.terra.api.world.chunk.generation.util.provider.ChunkGeneratorProvider; -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.*; @@ -72,11 +68,13 @@ import java.awt.image.BufferedImage; import java.io.*; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; /** @@ -92,7 +90,7 @@ public class ConfigPackImpl implements ConfigPack { private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); private final ConfigLoader selfLoader = new ConfigLoader(); private final Platform platform; - private final Loader loader; + private final Path packDirectory; private final Map addons; @@ -106,40 +104,25 @@ public class ConfigPackImpl implements ConfigPack { private final RegistryKey key; - public ConfigPackImpl(File folder, Platform platform) { - this(new FolderLoader(folder.toPath()), Construct.construct(() -> { - try { - return new YamlConfiguration(new FileInputStream(new File(folder, "pack.yml")), "pack.yml"); - } catch(FileNotFoundException e) { - throw new UncheckedIOException("No pack.yml file found in " + folder.getAbsolutePath(), e); - } - }), platform); - } - - public ConfigPackImpl(ZipFile file, Platform platform) { - this(new ZIPLoader(file), Construct.construct(() -> { - ZipEntry pack = null; - Enumeration entries = file.entries(); - while(entries.hasMoreElements()) { - ZipEntry entry = entries.nextElement(); - if(entry.getName().equals("pack.yml")) pack = entry; - } - - if(pack == null) throw new IllegalArgumentException("No pack.yml file found in " + file.getName()); - - try { - return new YamlConfiguration(file.getInputStream(pack), "pack.yml"); - } catch(IOException e) { - throw new UncheckedIOException("Unable to load pack.yml from ZIP file", e); - } - }), platform); - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - private ConfigPackImpl(Loader loader, Configuration packManifest, Platform platform) { + @SuppressWarnings({ "rawtypes" }) + public ConfigPackImpl(Path path, Platform platform) throws IOException { long start = System.nanoTime(); - this.loader = loader; + if(Files.notExists(path)) throw new FileNotFoundException("Could not create config pack, " + path + " does not exist"); + + if(Files.isDirectory(path)) { + this.packDirectory = path; + } else if(Files.isRegularFile(path) && path.getFileName().toString().endsWith(".zip")) { + FileSystem zipfs = FileSystems.newFileSystem(path); + this.packDirectory = zipfs.getPath("/"); + } else { + throw new IllegalArgumentException("Could not load config pack from " + path + ", not a directory or zip file"); + } + + Path packManifestPath = packDirectory.resolve("pack.yml"); + if(Files.notExists(packManifestPath)) throw new FileNotFoundException("No pack.yml found in " + path); + Configuration packManifest = new YamlConfiguration(Files.newInputStream(packManifestPath), packManifestPath.getFileName().toString()); + this.platform = platform; this.configTypeRegistry = createConfigRegistry(); @@ -223,7 +206,7 @@ public class ConfigPackImpl implements ConfigPack { private Map discoverConfigurations() { Map configurations = new HashMap<>(); - platform.getEventManager().callEvent(new ConfigurationDiscoveryEvent(this, loader, + platform.getEventManager().callEvent(new ConfigurationDiscoveryEvent(this, (s, c) -> configurations.put(s.replace("\\", "/"), c))); // Create all the configs. return configurations; @@ -268,7 +251,7 @@ public class ConfigPackImpl implements ConfigPack { @Override public void register(TypeRegistry registry) { registry.registerLoader(ConfigType.class, configTypeRegistry) - .registerLoader(BufferedImage.class, new BufferedImageLoader(loader, this)); + .registerLoader(BufferedImage.class, new BufferedImageLoader(this)); registryMap.forEach(registry::registerLoader); shortcuts.forEach(registry::registerLoader); // overwrite with delegated shortcuts if present } @@ -333,8 +316,8 @@ public class ConfigPackImpl implements ConfigPack { } @Override - public Loader getLoader() { - return loader; + public Path getPackDirectory() { + return packDirectory; } @Override diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java b/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java index 28886b354..1a4ed5d15 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java @@ -17,14 +17,13 @@ package com.dfsek.terra.registry.master; -import com.dfsek.tectonic.api.exception.ConfigException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; import java.io.IOException; -import java.util.Objects; -import java.util.zip.ZipFile; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.stream.Stream; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigPack; @@ -37,44 +36,19 @@ import com.dfsek.terra.registry.OpenRegistryImpl; * Class to hold config packs */ public class ConfigRegistry extends OpenRegistryImpl { - private static final Logger logger = LoggerFactory.getLogger(ConfigRegistry.class); public ConfigRegistry() { super(TypeKey.of(ConfigPack.class)); } - public void load(File folder, Platform platform) throws ConfigException { - ConfigPack pack = new ConfigPackImpl(folder, platform); - registerChecked(pack.getRegistryKey(), pack); - } - - public boolean loadAll(Platform platform) { - boolean valid = true; - File packsFolder = new File(platform.getDataFolder(), "packs"); - packsFolder.mkdirs(); - for(File dir : Objects.requireNonNull(packsFolder.listFiles(File::isDirectory))) { - try { - load(dir, platform); - } catch(ConfigException e) { - logger.error("Error loading config pack {}", dir.getName(), e); - valid = false; + public void loadAll(Platform platform) throws IOException { + Path packsDirectory = platform.getDataFolder().toPath().resolve("packs"); + Files.createDirectories(packsDirectory); + try (Stream packs = Files.list(packsDirectory)) { + for (Path path : packs.toList()) { + ConfigPack pack = new ConfigPackImpl(path, platform); + registerChecked(pack.getRegistryKey(), pack); } } - for(File zip : Objects.requireNonNull( - packsFolder.listFiles(file -> file.getName().endsWith(".zip") || file.getName().endsWith(".terra")))) { - try { - logger.info("Loading ZIP archive: {}", zip.getName()); - load(new ZipFile(zip), platform); - } catch(IOException | ConfigException e) { - logger.error("Error loading config pack {}", zip.getName(), e); - valid = false; - } - } - return valid; - } - - public void load(ZipFile file, Platform platform) throws ConfigException { - ConfigPackImpl pack = new ConfigPackImpl(file, platform); - registerChecked(pack.getRegistryKey(), pack); } } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java index 0ef6164d8..14be9a7d0 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java @@ -27,6 +27,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.io.IOException; import java.util.List; import java.util.Locale; @@ -64,7 +65,12 @@ public class PlatformImpl extends AbstractPlatform { public boolean reload() { getTerraConfig().load(this); getRawConfigRegistry().clear(); - boolean succeed = getRawConfigRegistry().loadAll(this); + boolean succeed = true; + try { + getRawConfigRegistry().loadAll(this); + } catch(IOException e) { + succeed = false; + } Bukkit.getWorlds().forEach(world -> { if(world.getGenerator() instanceof BukkitChunkGeneratorWrapper wrapper) { diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgePlatform.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgePlatform.java index c07bde6f3..301d37226 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgePlatform.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgePlatform.java @@ -34,6 +34,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -63,7 +64,12 @@ public class ForgePlatform extends ModPlatform { public boolean reload() { getTerraConfig().load(this); getRawConfigRegistry().clear(); - boolean succeed = getRawConfigRegistry().loadAll(this); + boolean succeed = true; + try { + getRawConfigRegistry().loadAll(this); + } catch(IOException e) { + succeed = false; + } MinecraftServer server = getServer(); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java index be845eb19..00f74bd1b 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java @@ -14,6 +14,7 @@ import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -64,8 +65,12 @@ public abstract class LifecyclePlatform extends ModPlatform { public boolean reload() { getTerraConfig().load(this); getRawConfigRegistry().clear(); - boolean succeed = getRawConfigRegistry().loadAll(this); - + boolean succeed = true; + try { + getRawConfigRegistry().loadAll(this); + } catch(IOException e) { + succeed = false; + } if(server != null) { BiomeUtil.registerBiomes(server.getRegistryManager().get(RegistryKeys.BIOME)); From 4ba71e9c27b9835dfd5da796f9e3e705b6d5d79d Mon Sep 17 00:00:00 2001 From: Astrash Date: Sat, 25 Nov 2023 15:07:45 +1100 Subject: [PATCH 002/116] packDirectory -> rootPath --- .../dfsek/terra/addons/yaml/YamlAddon.java | 2 +- .../addons/image/config/image/ImageCache.java | 2 +- .../addons/sponge/SpongeSchematicAddon.java | 2 +- .../addons/terrascript/TerraScriptAddon.java | 2 +- .../dfsek/terra/api/config/ConfigPack.java | 2 +- .../loaders/config/BufferedImageLoader.java | 2 +- .../terra/config/pack/ConfigPackImpl.java | 28 +++++++++---------- 7 files changed, 20 insertions(+), 20 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 31aad8be5..87b391860 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 @@ -41,7 +41,7 @@ public class YamlAddon implements AddonInitializer { .register(addon, ConfigurationDiscoveryEvent.class) .then(event -> { try { - FileUtil.filesWithExtension(event.getPack().getPackDirectory(), ".yml") + FileUtil.filesWithExtension(event.getPack().getRootPath(), ".yml") .forEach((key, value) -> { LOGGER.debug("Discovered config {}", key); try { diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageCache.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageCache.java index be352ac47..a227fa47a 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageCache.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageCache.java @@ -29,7 +29,7 @@ record ImageCache(LoadingCache cache) implements Properties { if(!pack.getContext().has(ImageCache.class)) { var cacheBuilder = Caffeine.newBuilder(); if(config.unloadOnTimeout()) cacheBuilder.expireAfterAccess(config.getCacheTimeout(), TimeUnit.SECONDS); - images = new ImageCache(cacheBuilder.build(s -> loadImage(s, pack.getPackDirectory()))); + images = new ImageCache(cacheBuilder.build(s -> loadImage(s, pack.getRootPath()))); pack.getContext().put(images); } else images = pack.getContext().get(ImageCache.class); diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java index a3715048d..e1536dce4 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java @@ -61,7 +61,7 @@ public class SpongeSchematicAddon implements AddonInitializer { .then(event -> { CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); try { - FileUtil.filesWithExtension(event.getPack().getPackDirectory(), ".schem") + FileUtil.filesWithExtension(event.getPack().getRootPath(), ".schem") .entrySet() .stream() .map(entry -> { 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 a494eef77..91acb1832 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 @@ -41,7 +41,7 @@ public class TerraScriptAddon implements AddonInitializer { CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); try { - FileUtil.filesWithExtension(event.getPack().getPackDirectory(), ".tesf") + FileUtil.filesWithExtension(event.getPack().getRootPath(), ".tesf") .entrySet() .stream() .parallel() 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 837c44d0b..b34d92443 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 @@ -44,7 +44,7 @@ public interface ConfigPack extends LoaderRegistrar, List getStages(); - Path getPackDirectory(); + Path getRootPath(); String getAuthor(); diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java index 61585aa27..eb7087884 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java @@ -53,7 +53,7 @@ public class BufferedImageLoader implements TypeLoader { throws LoadException { return pack.getContext().get(ImageCache.class).map.computeIfAbsent((String) c, s -> { try { - return ImageIO.read(Files.newInputStream(pack.getPackDirectory().resolve(s))); + return ImageIO.read(Files.newInputStream(pack.getRootPath().resolve(s))); } catch(IOException e) { throw new LoadException("Unable to load image", e, depthTracker); } diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index fb0f96739..d4ad515f6 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -90,7 +90,7 @@ public class ConfigPackImpl implements ConfigPack { private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); private final ConfigLoader selfLoader = new ConfigLoader(); private final Platform platform; - private final Path packDirectory; + private final Path rootPath; private final Map addons; @@ -108,19 +108,22 @@ public class ConfigPackImpl implements ConfigPack { public ConfigPackImpl(Path path, Platform platform) throws IOException { long start = System.nanoTime(); - if(Files.notExists(path)) throw new FileNotFoundException("Could not create config pack, " + path + " does not exist"); + if(Files.notExists(path)) throw new FileNotFoundException("Could not load config pack, " + path + " does not exist"); if(Files.isDirectory(path)) { - this.packDirectory = path; - } else if(Files.isRegularFile(path) && path.getFileName().toString().endsWith(".zip")) { + this.rootPath = path; + } else if(Files.isRegularFile(path)) { + if(!path.getFileName().toString().endsWith(".zip")) { + throw new IOException("Could not load config pack, file " + path + " is not a zip"); + } FileSystem zipfs = FileSystems.newFileSystem(path); - this.packDirectory = zipfs.getPath("/"); + this.rootPath = zipfs.getPath("/"); } else { - throw new IllegalArgumentException("Could not load config pack from " + path + ", not a directory or zip file"); + throw new IOException("Could not load config pack from " + path); } - Path packManifestPath = packDirectory.resolve("pack.yml"); - if(Files.notExists(packManifestPath)) throw new FileNotFoundException("No pack.yml found in " + path); + Path packManifestPath = rootPath.resolve("pack.yml"); + if(Files.notExists(packManifestPath)) throw new IOException("No pack.yml found in " + path); Configuration packManifest = new YamlConfiguration(Files.newInputStream(packManifestPath), packManifestPath.getFileName().toString()); this.platform = platform; @@ -277,7 +280,6 @@ public class ConfigPackImpl implements ConfigPack { return seededBiomeProvider; } - @SuppressWarnings("unchecked") @Override public CheckedRegistry getOrCreateRegistry(TypeKey typeKey) { return (CheckedRegistry) registryMap.computeIfAbsent(typeKey.getType(), c -> { @@ -316,8 +318,8 @@ public class ConfigPackImpl implements ConfigPack { } @Override - public Path getPackDirectory() { - return packDirectory; + public Path getRootPath() { + return rootPath; } @Override @@ -330,7 +332,7 @@ public class ConfigPackImpl implements ConfigPack { return template.getVersion(); } - @SuppressWarnings("unchecked,rawtypes") + @SuppressWarnings("rawtypes") @Override public ConfigPack registerShortcut(TypeKey clazz, String shortcut, ShortcutLoader loader) { ShortcutHolder holder = shortcuts @@ -374,12 +376,10 @@ public class ConfigPackImpl implements ConfigPack { } @Override - @SuppressWarnings("unchecked") public CheckedRegistry getRegistry(Type type) { return (CheckedRegistry) registryMap.get(type); } - @SuppressWarnings("unchecked") @Override public CheckedRegistry getCheckedRegistry(Type type) throws IllegalStateException { return (CheckedRegistry) registryMap.get(type); From 59ea5a69d8a7723dd86b9da304dfce74604af548 Mon Sep 17 00:00:00 2001 From: Astrash Date: Sat, 25 Nov 2023 15:10:43 +1100 Subject: [PATCH 003/116] Refactor pack loading - Combine initial load and reload logic together between each platform implementation - Should prevent pack load errors from blocking other packs from loading. --- .../com/dfsek/terra/AbstractPlatform.java | 30 +++++++++----- .../terra/registry/master/ConfigRegistry.java | 39 +++++++++++++++---- .../com/dfsek/terra/bukkit/PlatformImpl.java | 11 ++---- .../com/dfsek/terra/forge/ForgePlatform.java | 11 ++---- .../terra/lifecycle/LifecyclePlatform.java | 11 ++---- 5 files changed, 63 insertions(+), 39 deletions(-) diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java index 08c9acbce..270094e81 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -18,6 +18,9 @@ package com.dfsek.terra; import com.dfsek.tectonic.api.TypeRegistry; + +import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; + import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.jetbrains.annotations.NotNull; @@ -147,22 +150,29 @@ public abstract class AbstractPlatform implements Platform { eventManager.getHandler(FunctionalEventHandler.class) .register(internalAddon, PlatformInitializationEvent.class) - .then(event -> { - logger.info("Loading config packs..."); - try { - configRegistry.loadAll(this); - } catch(IOException e) { - logger.error("Error loading config packs", e); - } - logger.info("Loaded packs."); - }) + .then(event -> loadConfigPacks()) .global(); - logger.info("Terra addons successfully loaded."); logger.info("Finished initialization."); } + protected boolean loadConfigPacks() { + logger.info("Loading config packs..."); + ConfigRegistry configRegistry = getRawConfigRegistry(); + configRegistry.clear(); + try { + configRegistry.loadAll(this); + } catch(IOException e) { + logger.error("Failed to load config packs", e); + return false; + } catch(PackLoadFailuresException e) { + e.getExceptions().forEach(ex -> logger.error("Failed to load config pack", ex)); + return false; + } + return true; + } + protected InternalAddon loadAddons() { List addonList = new ArrayList<>(); diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java b/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java index 1a4ed5d15..e73f88579 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java @@ -17,12 +17,12 @@ package com.dfsek.terra.registry.master; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.IOException; +import java.io.Serial; import java.nio.file.Files; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; import java.util.stream.Stream; import com.dfsek.terra.api.Platform; @@ -41,14 +41,37 @@ public class ConfigRegistry extends OpenRegistryImpl { super(TypeKey.of(ConfigPack.class)); } - public void loadAll(Platform platform) throws IOException { + public void loadAll(Platform platform) throws IOException, PackLoadFailuresException { Path packsDirectory = platform.getDataFolder().toPath().resolve("packs"); Files.createDirectories(packsDirectory); + List failedLoads = new ArrayList<>(); try (Stream packs = Files.list(packsDirectory)) { - for (Path path : packs.toList()) { - ConfigPack pack = new ConfigPackImpl(path, platform); - registerChecked(pack.getRegistryKey(), pack); - } + packs.forEach(path -> { + try { + ConfigPack pack = new ConfigPackImpl(path, platform); + registerChecked(pack.getRegistryKey(), pack); + } catch (IOException e) { + failedLoads.add(e); + } + }); + } + if (!failedLoads.isEmpty()) { + throw new PackLoadFailuresException(failedLoads); + } + } + + public static class PackLoadFailuresException extends Exception { + @Serial + private static final long serialVersionUID = 538998844645186306L; + + private final List exceptions; + + public PackLoadFailuresException(List exceptions) { + this.exceptions = (List) exceptions; + } + + public List getExceptions() { + return exceptions; } } } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java index 14be9a7d0..d22e98bce 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java @@ -20,6 +20,9 @@ package com.dfsek.terra.bukkit; import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; + +import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; + import org.bukkit.Bukkit; import org.bukkit.entity.EntityType; import org.jetbrains.annotations.NotNull; @@ -64,13 +67,7 @@ public class PlatformImpl extends AbstractPlatform { @Override public boolean reload() { getTerraConfig().load(this); - getRawConfigRegistry().clear(); - boolean succeed = true; - try { - getRawConfigRegistry().loadAll(this); - } catch(IOException e) { - succeed = false; - } + boolean succeed = loadConfigPacks(); Bukkit.getWorlds().forEach(world -> { if(world.getGenerator() instanceof BukkitChunkGeneratorWrapper wrapper) { diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgePlatform.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgePlatform.java index 301d37226..eff0d924e 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgePlatform.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgePlatform.java @@ -20,6 +20,9 @@ package com.dfsek.terra.forge; import ca.solostudios.strata.Versions; import ca.solostudios.strata.parser.tokenizer.ParseException; import ca.solostudios.strata.version.Version; + +import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; + import net.minecraft.MinecraftVersion; import net.minecraft.registry.Registry; import net.minecraft.server.MinecraftServer; @@ -63,13 +66,7 @@ public class ForgePlatform extends ModPlatform { @Override public boolean reload() { getTerraConfig().load(this); - getRawConfigRegistry().clear(); - boolean succeed = true; - try { - getRawConfigRegistry().loadAll(this); - } catch(IOException e) { - succeed = false; - } + boolean succeed = loadConfigPacks(); MinecraftServer server = getServer(); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java index 00f74bd1b..28123ce29 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java @@ -3,6 +3,9 @@ package com.dfsek.terra.lifecycle; import ca.solostudios.strata.Versions; import ca.solostudios.strata.parser.tokenizer.ParseException; import ca.solostudios.strata.version.Version; + +import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; + import net.minecraft.MinecraftVersion; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKeys; @@ -64,13 +67,7 @@ public abstract class LifecyclePlatform extends ModPlatform { @Override public boolean reload() { getTerraConfig().load(this); - getRawConfigRegistry().clear(); - boolean succeed = true; - try { - getRawConfigRegistry().loadAll(this); - } catch(IOException e) { - succeed = false; - } + boolean succeed = loadConfigPacks(); if(server != null) { BiomeUtil.registerBiomes(server.getRegistryManager().get(RegistryKeys.BIOME)); From 1ab3233cba82f25b8656940a24c98bfd5e5f0ba1 Mon Sep 17 00:00:00 2001 From: Astrash Date: Sat, 25 Nov 2023 15:14:16 +1100 Subject: [PATCH 004/116] Reformat code --- .../biome/image/v2/ImageBiomeProvider.java | 4 +- .../dfsek/terra/addons/yaml/YamlAddon.java | 10 ++-- .../addons/sponge/SpongeSchematicAddon.java | 3 +- .../addons/terrascript/TerraScriptAddon.java | 6 +-- .../config/ConfigurationDiscoveryEvent.java | 1 - .../dfsek/terra/api/structure/Structure.java | 4 +- .../com/dfsek/terra/api/util/FileUtil.java | 5 +- .../terra/config/pack/ConfigPackImpl.java | 52 ++++++++++++------- .../terra/registry/master/ConfigRegistry.java | 6 +-- 9 files changed, 49 insertions(+), 42 deletions(-) diff --git a/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java b/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java index 8809410c5..073bea70e 100644 --- a/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java @@ -7,13 +7,13 @@ package com.dfsek.terra.addons.biome.image.v2; +import java.util.Optional; + import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.image.converter.ColorConverter; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import java.util.Optional; - public class ImageBiomeProvider implements BiomeProvider { private final int resolution; 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 87b391860..e53c75a17 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 @@ -8,21 +8,19 @@ package com.dfsek.terra.addons.yaml; import com.dfsek.tectonic.yaml.YamlConfiguration; - -import com.dfsek.terra.api.util.FileUtil; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; +import java.nio.file.Files; + import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.event.events.config.ConfigurationDiscoveryEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.annotations.Inject; - -import java.io.IOException; -import java.nio.file.Files; +import com.dfsek.terra.api.util.FileUtil; public class YamlAddon implements AddonInitializer { diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java index e1536dce4..04e5664ed 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.sponge; -import com.dfsek.terra.api.util.FileUtil; - import net.querz.nbt.io.NBTDeserializer; import net.querz.nbt.tag.ByteArrayTag; import net.querz.nbt.tag.CompoundTag; @@ -32,6 +30,7 @@ import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.FileUtil; import com.dfsek.terra.api.util.vector.Vector3Int; 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 91acb1832..5bfd27e9b 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 @@ -7,6 +7,9 @@ package com.dfsek.terra.addons.terrascript; +import java.io.IOException; +import java.nio.file.Files; + import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; @@ -21,9 +24,6 @@ import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.FileUtil; -import java.io.IOException; -import java.nio.file.Files; - public class TerraScriptAddon implements AddonInitializer { @Inject 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 ee8b6489b..10d58e2cb 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 @@ -9,7 +9,6 @@ package com.dfsek.terra.api.event.events.config; import com.dfsek.tectonic.api.config.Configuration; -import java.nio.file.Path; import java.util.function.BiConsumer; import com.dfsek.terra.api.config.ConfigPack; 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 d5f3ca7e2..787485882 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 @@ -7,12 +7,12 @@ package com.dfsek.terra.api.structure; -import java.util.Random; - import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; +import java.util.Random; + public interface Structure { boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation); diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/FileUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/FileUtil.java index 3d9f22fbe..a36a73711 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/FileUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/FileUtil.java @@ -5,19 +5,18 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; -import java.util.Collection; import java.util.Collections; import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; -import static java.util.function.Function.*; +import static java.util.function.Function.identity; public class FileUtil { public static Map filesWithExtension(Path start, String... extensions) throws IOException { if(Files.notExists(start) || !Files.isDirectory(start)) return Collections.emptyMap(); - try (Stream paths = Files.walk(start)) { + try(Stream paths = Files.walk(start)) { return paths .filter(Files::isRegularFile) .filter(p -> Arrays.stream(extensions).anyMatch(e -> p.getFileName().toString().endsWith(e))) diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index d4ad515f6..6d0001caf 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -26,6 +26,31 @@ import com.dfsek.tectonic.api.loader.AbstractConfigLoader; import com.dfsek.tectonic.api.loader.ConfigLoader; import com.dfsek.tectonic.api.loader.type.TypeLoader; import com.dfsek.tectonic.yaml.YamlConfiguration; +import com.google.common.collect.ListMultimap; +import com.google.common.collect.Multimaps; +import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.awt.image.BufferedImage; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Supplier; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; @@ -52,30 +77,16 @@ import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; import com.dfsek.terra.api.world.chunk.generation.util.provider.ChunkGeneratorProvider; import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader; import com.dfsek.terra.config.loaders.config.BufferedImageLoader; -import com.dfsek.terra.config.preprocessor.*; +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; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.ShortcutHolder; -import com.google.common.collect.ListMultimap; -import com.google.common.collect.Multimaps; -import org.jetbrains.annotations.NotNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.awt.image.BufferedImage; -import java.io.*; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.nio.file.FileSystem; -import java.nio.file.FileSystems; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Supplier; - /** * Represents a Terra configuration pack. @@ -124,7 +135,8 @@ public class ConfigPackImpl implements ConfigPack { Path packManifestPath = rootPath.resolve("pack.yml"); if(Files.notExists(packManifestPath)) throw new IOException("No pack.yml found in " + path); - Configuration packManifest = new YamlConfiguration(Files.newInputStream(packManifestPath), packManifestPath.getFileName().toString()); + Configuration packManifest = new YamlConfiguration(Files.newInputStream(packManifestPath), + packManifestPath.getFileName().toString()); this.platform = platform; this.configTypeRegistry = createConfigRegistry(); diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java b/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java index e73f88579..124135fcf 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java @@ -45,17 +45,17 @@ public class ConfigRegistry extends OpenRegistryImpl { Path packsDirectory = platform.getDataFolder().toPath().resolve("packs"); Files.createDirectories(packsDirectory); List failedLoads = new ArrayList<>(); - try (Stream packs = Files.list(packsDirectory)) { + try(Stream packs = Files.list(packsDirectory)) { packs.forEach(path -> { try { ConfigPack pack = new ConfigPackImpl(path, platform); registerChecked(pack.getRegistryKey(), pack); - } catch (IOException e) { + } catch(IOException e) { failedLoads.add(e); } }); } - if (!failedLoads.isEmpty()) { + if(!failedLoads.isEmpty()) { throw new PackLoadFailuresException(failedLoads); } } From c0aaf6c6e8f4f7bf02a77fdf5a4fd9e6f015f7ff Mon Sep 17 00:00:00 2001 From: Astrash Date: Tue, 28 Nov 2023 10:36:30 +1100 Subject: [PATCH 005/116] Add messages to exceptions --- .../src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java | 4 ++-- .../com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java | 4 ++-- .../com/dfsek/terra/addons/terrascript/TerraScriptAddon.java | 2 +- 3 files changed, 5 insertions(+), 5 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 e53c75a17..8804bf49c 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 @@ -45,11 +45,11 @@ public class YamlAddon implements AddonInitializer { try { event.register(key, new YamlConfiguration(Files.newInputStream(value), key)); } catch(IOException e) { - throw new RuntimeException(e); + throw new RuntimeException("Failed to load config " + key, e); } }); } catch(IOException e) { - throw new RuntimeException(e); + throw new RuntimeException("Error occurred while reading config pack files", e); } }) .failThrough(); diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java index 04e5664ed..2605a5018 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java @@ -67,12 +67,12 @@ public class SpongeSchematicAddon implements AddonInitializer { try { return convert(Files.newInputStream(entry.getValue()), FileUtil.fileName(entry.getKey())); } catch(IOException e) { - throw new RuntimeException(e); + throw new RuntimeException("Failed to load config " + entry.getKey(), e); } }) .forEach(structureRegistry::register); } catch(IOException e) { - throw new RuntimeException(e); + throw new RuntimeException("Error occurred while reading config pack files", e); } }) .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 5bfd27e9b..eb7387775 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 @@ -60,7 +60,7 @@ public class TerraScriptAddon implements AddonInitializer { }) .forEach(structureRegistry::register); } catch(IOException e) { - throw new RuntimeException(e); + throw new RuntimeException("Error occurred while reading config pack files", e); } }) .priority(100) From 597925480847bc3e4df5e4292d5bc7d71af50b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Mon, 11 Dec 2023 14:54:27 -0700 Subject: [PATCH 006/116] wip --- .../com/dfsek/terra/api/config/MetaPack.java | 17 +++++++ .../dfsek/terra/config/pack/MetaPackImpl.java | 46 +++++++++++++++++++ .../terra/config/pack/MetaPackTemplate.java | 42 +++++++++++++++++ 3 files changed, 105 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java create mode 100644 common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java create mode 100644 common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackTemplate.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java b/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java new file mode 100644 index 000000000..05f12462c --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java @@ -0,0 +1,17 @@ +package com.dfsek.terra.api.config; + +import ca.solostudios.strata.version.Version; +import ca.solostudios.strata.version.VersionRange; + +import com.dfsek.terra.api.addon.BaseAddon; + +import java.util.Map; + + +public interface MetaPack { + Map packs(); + + String getAuthor(); + + Version getVersion(); +} diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java new file mode 100644 index 000000000..f633b5f62 --- /dev/null +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java @@ -0,0 +1,46 @@ +package com.dfsek.terra.config.pack; + +import ca.solostudios.strata.version.Version; + +import com.dfsek.tectonic.api.config.Configuration; +import com.dfsek.tectonic.yaml.YamlConfiguration; + +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.Loader; +import com.dfsek.terra.api.config.MetaPack; +import com.dfsek.terra.api.util.generic.Construct; +import com.dfsek.terra.config.fileloaders.FolderLoader; +import com.dfsek.terra.config.fileloaders.ZIPLoader; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.UncheckedIOException; +import java.util.Enumeration; +import java.util.Map; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + + +public class MetaPackImpl implements MetaPack { + private final Platform platform; + + private final MetaPackTemplate template = new MetaPackTemplate(); + + @Override + public String getAuthor() { + return template.getAuthor(); + } + + @Override + public Version getVersion() { + return template.getVersion(); + } + + @Override + public Map packs() { + return null; + } +} diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackTemplate.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackTemplate.java new file mode 100644 index 000000000..669c58edc --- /dev/null +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackTemplate.java @@ -0,0 +1,42 @@ +package com.dfsek.terra.config.pack; + +import ca.solostudios.strata.version.Version; +import com.dfsek.tectonic.api.config.template.ConfigTemplate; +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import com.dfsek.terra.api.config.ConfigPack; + +import java.util.Map; + + +public class MetaPackTemplate implements ConfigTemplate { + @Value("id") + private String id; + + @Value("author") + @Default + private String author = "Anon Y. Mous"; + + @Value("version") + private Version version; + + @Value("packs") + private Map packs; + + public String getID() { + return id; + } + + public String getAuthor() { + return author; + } + + public Version getVersion() { + return version; + } + + public Map getPacks() { + return packs; + } +} From d48fa96ec7b747b385df56bd1cdde628cf3637e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Mon, 11 Dec 2023 14:56:07 -0700 Subject: [PATCH 007/116] opt import --- .../com/dfsek/terra/api/config/MetaPack.java | 3 --- .../dfsek/terra/api/structure/Structure.java | 4 ++-- .../com/dfsek/terra/AbstractPlatform.java | 4 +--- .../terra/config/pack/ConfigPackImpl.java | 22 ------------------- .../dfsek/terra/config/pack/MetaPackImpl.java | 17 +------------- .../terra/config/pack/MetaPackTemplate.java | 2 -- .../com/dfsek/terra/bukkit/PlatformImpl.java | 4 ---- .../terra/lifecycle/LifecyclePlatform.java | 4 ---- 8 files changed, 4 insertions(+), 56 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java b/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java index 05f12462c..f26b5eeae 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java @@ -1,9 +1,6 @@ package com.dfsek.terra.api.config; import ca.solostudios.strata.version.Version; -import ca.solostudios.strata.version.VersionRange; - -import com.dfsek.terra.api.addon.BaseAddon; import java.util.Map; 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 787485882..d5f3ca7e2 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 @@ -7,12 +7,12 @@ package com.dfsek.terra.api.structure; +import java.util.Random; + import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; -import java.util.Random; - public interface Structure { boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation); diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java index 270094e81..c088ce2ab 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -18,9 +18,6 @@ package com.dfsek.terra; import com.dfsek.tectonic.api.TypeRegistry; - -import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; - import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.jetbrains.annotations.NotNull; @@ -75,6 +72,7 @@ import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.master.ConfigRegistry; +import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; /** diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 930b1aee9..6d0001caf 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -52,28 +52,6 @@ import java.util.TreeMap; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.UncheckedIOException; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Supplier; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.config.ConfigFactory; diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java index f633b5f62..15d30145c 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java @@ -2,26 +2,11 @@ package com.dfsek.terra.config.pack; import ca.solostudios.strata.version.Version; -import com.dfsek.tectonic.api.config.Configuration; -import com.dfsek.tectonic.yaml.YamlConfiguration; +import java.util.Map; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.Loader; import com.dfsek.terra.api.config.MetaPack; -import com.dfsek.terra.api.util.generic.Construct; -import com.dfsek.terra.config.fileloaders.FolderLoader; -import com.dfsek.terra.config.fileloaders.ZIPLoader; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.UncheckedIOException; -import java.util.Enumeration; -import java.util.Map; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; public class MetaPackImpl implements MetaPack { diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackTemplate.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackTemplate.java index 669c58edc..9a9f6fe74 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackTemplate.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackTemplate.java @@ -5,8 +5,6 @@ import com.dfsek.tectonic.api.config.template.ConfigTemplate; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.api.config.ConfigPack; - import java.util.Map; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java index 38181b463..05653c93c 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java @@ -20,9 +20,6 @@ package com.dfsek.terra.bukkit; import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; - -import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; - import org.bukkit.Bukkit; import org.bukkit.entity.EntityType; import org.jetbrains.annotations.NotNull; @@ -30,7 +27,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; -import java.io.IOException; import java.util.List; import java.util.Locale; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java index 28123ce29..18ff9570c 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java @@ -3,9 +3,6 @@ package com.dfsek.terra.lifecycle; import ca.solostudios.strata.Versions; import ca.solostudios.strata.parser.tokenizer.ParseException; import ca.solostudios.strata.version.Version; - -import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; - import net.minecraft.MinecraftVersion; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKeys; @@ -17,7 +14,6 @@ import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; From b039629b2d52faa8eb2003ac64249c712e09628f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Mon, 11 Dec 2023 16:25:13 -0700 Subject: [PATCH 008/116] WIP meta pack system --- .../java/com/dfsek/terra/api/Platform.java | 6 + .../com/dfsek/terra/api/config/MetaPack.java | 15 +- .../com/dfsek/terra/AbstractPlatform.java | 40 +++++ .../dfsek/terra/config/pack/MetaPackImpl.java | 168 +++++++++++++++++- .../registry/master/MetaConfigRegistry.java | 65 +++++++ .../java/com/dfsek/terra/mod/ModPlatform.java | 1 + .../com/dfsek/terra/mod/util/PresetUtil.java | 50 ++++++ .../dfsek/terra/lifecycle/util/BiomeUtil.java | 6 + 8 files changed, 348 insertions(+), 3 deletions(-) create mode 100644 common/implementation/base/src/main/java/com/dfsek/terra/registry/master/MetaConfigRegistry.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/Platform.java b/common/api/src/main/java/com/dfsek/terra/api/Platform.java index 95b00c575..37933262b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/Platform.java +++ b/common/api/src/main/java/com/dfsek/terra/api/Platform.java @@ -7,6 +7,8 @@ package com.dfsek.terra.api; +import com.dfsek.terra.api.config.MetaPack; + import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -61,6 +63,10 @@ public interface Platform extends LoaderRegistrar { @Contract(pure = true) CheckedRegistry getConfigRegistry(); + @NotNull + @Contract(pure = true) + CheckedRegistry getMetaConfigRegistry(); + @NotNull @Contract(pure = true) Registry getAddons(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java b/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java index f26b5eeae..9cdbd696d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java @@ -2,10 +2,23 @@ package com.dfsek.terra.api.config; import ca.solostudios.strata.version.Version; +import com.dfsek.terra.api.properties.PropertyHolder; +import com.dfsek.terra.api.registry.key.Keyed; +import com.dfsek.terra.api.registry.meta.CheckedRegistryHolder; +import com.dfsek.terra.api.registry.meta.RegistryProvider; +import com.dfsek.terra.api.tectonic.ConfigLoadingDelegate; +import com.dfsek.terra.api.tectonic.LoaderRegistrar; + import java.util.Map; -public interface MetaPack { +public interface MetaPack extends LoaderRegistrar, + ConfigLoadingDelegate, + CheckedRegistryHolder, + RegistryProvider, + Keyed, + PropertyHolder { + Map packs(); String getAuthor(); diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java index c088ce2ab..0f02b3478 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -18,6 +18,10 @@ package com.dfsek.terra; import com.dfsek.tectonic.api.TypeRegistry; + +import com.dfsek.terra.api.config.MetaPack; +import com.dfsek.terra.registry.master.MetaConfigRegistry; + import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.jetbrains.annotations.NotNull; @@ -86,9 +90,12 @@ public abstract class AbstractPlatform implements Platform { private static final MutableBoolean LOADED = new MutableBoolean(false); private final EventManager eventManager = new EventManagerImpl(); private final ConfigRegistry configRegistry = new ConfigRegistry(); + private final MetaConfigRegistry metaConfigRegistry = new MetaConfigRegistry(); private final CheckedRegistry checkedConfigRegistry = new CheckedRegistryImpl<>(configRegistry); + private final CheckedRegistry checkedMetaConfigRegistry = new CheckedRegistryImpl<>(metaConfigRegistry); + private final Profiler profiler = new ProfilerImpl(); private final GenericLoaders loaders = new GenericLoaders(this); @@ -103,6 +110,10 @@ public abstract class AbstractPlatform implements Platform { return configRegistry; } + public MetaConfigRegistry getRawMetaConfigRegistry() { + return metaConfigRegistry; + } + protected Iterable platformAddon() { return Collections.emptySet(); } @@ -151,6 +162,13 @@ public abstract class AbstractPlatform implements Platform { .then(event -> loadConfigPacks()) .global(); + eventManager.getHandler(FunctionalEventHandler.class) + .register(internalAddon, PlatformInitializationEvent.class) + .then(event -> loadMetaConfigPacks()) + .global(); + + + logger.info("Terra addons successfully loaded."); logger.info("Finished initialization."); } @@ -171,6 +189,22 @@ public abstract class AbstractPlatform implements Platform { return true; } + protected boolean loadMetaConfigPacks() { + logger.info("Loading meta config packs..."); + MetaConfigRegistry metaConfigRegistry = getRawMetaConfigRegistry(); + metaConfigRegistry.clear(); + try { + metaConfigRegistry.loadAll(this); + } catch(IOException e) { + logger.error("Failed to load meta config packs", e); + return false; + } catch(PackLoadFailuresException e) { + e.getExceptions().forEach(ex -> logger.error("Failed to meta load config pack", ex)); + return false; + } + return true; + } + protected InternalAddon loadAddons() { List addonList = new ArrayList<>(); @@ -337,6 +371,12 @@ public abstract class AbstractPlatform implements Platform { return checkedConfigRegistry; } + @Override + public @NotNull CheckedRegistry getMetaConfigRegistry() { + return checkedMetaConfigRegistry; + } + + @Override public @NotNull Registry getAddons() { return lockedAddonRegistry; diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java index 15d30145c..6ca1dc927 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java @@ -2,18 +2,110 @@ package com.dfsek.terra.config.pack; import ca.solostudios.strata.version.Version; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.HashMap; import java.util.Map; +import java.util.function.Supplier; + +import com.dfsek.tectonic.api.TypeRegistry; +import com.dfsek.tectonic.api.config.Configuration; +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import com.dfsek.tectonic.api.loader.AbstractConfigLoader; +import com.dfsek.tectonic.api.loader.ConfigLoader; +import com.dfsek.tectonic.api.loader.type.TypeLoader; +import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.config.MetaPack; +import com.dfsek.terra.api.properties.Context; +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.key.RegistryKey; +import com.dfsek.terra.api.tectonic.ConfigLoadingDelegate; +import com.dfsek.terra.api.util.reflection.ReflectionUtil; +import com.dfsek.terra.api.util.reflection.TypeKey; +import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader; +import com.dfsek.terra.config.loaders.config.BufferedImageLoader; +import com.dfsek.terra.registry.CheckedRegistryImpl; +import com.dfsek.terra.registry.OpenRegistryImpl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class MetaPackImpl implements MetaPack { - private final Platform platform; private final MetaPackTemplate template = new MetaPackTemplate(); + private final Platform platform; + + private final Path rootPath; + + private final Map packs = new HashMap<>(); + + private final ConfigLoader selfLoader = new ConfigLoader(); + + private final Context context = new Context(); + + private final RegistryKey key; + + private final Map> registryMap = new HashMap<>(); + + private static final Logger logger = LoggerFactory.getLogger(MetaPackImpl.class); + + private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); + + public MetaPackImpl(Path path, Platform platform) throws IOException { + this.rootPath = path; + this.platform = platform; + + Path packManifestPath = rootPath.resolve("metapack.yml"); + if(Files.notExists(packManifestPath)) throw new IOException("No metapack.yml found in " + path); + Configuration packManifest = new YamlConfiguration(Files.newInputStream(packManifestPath), + packManifestPath.getFileName().toString()); + + register(selfLoader); + platform.register(selfLoader); + + register(abstractConfigLoader); + platform.register(abstractConfigLoader); + + selfLoader.load(template, packManifest); + + String namespace; + String id; + if(template.getID().contains(":")) { + namespace = template.getID().substring(0, template.getID().indexOf(":")); + id = template.getID().substring(template.getID().indexOf(":") + 1); + } else { + id = template.getID(); + namespace = template.getID(); + } + + this.key = RegistryKey.of(namespace, id); + + try { + template.getPacks().forEach((k, v) -> { + try { + packs.put(k, new ConfigPackImpl(rootPath.resolve(v), platform)); + } catch(IOException e) { + throw new RuntimeException(e); + } + }); + } catch(RuntimeException e) { + throw new IOException(e); + } + } + + @Override public String getAuthor() { return template.getAuthor(); @@ -26,6 +118,78 @@ public class MetaPackImpl implements MetaPack { @Override public Map packs() { - return null; + return packs; } + + @Override + public Context getContext() { + return context; + } + + @Override + public RegistryKey getRegistryKey() { + return key; + } + + @Override + public CheckedRegistry getRegistry(Type type) { + return (CheckedRegistry) registryMap.get(type); + } + + @Override + public CheckedRegistry getCheckedRegistry(Type type) throws IllegalStateException { + return (CheckedRegistry) registryMap.get(type); + } + + @Override + public CheckedRegistry getOrCreateRegistry(TypeKey typeKey) { + return (CheckedRegistry) registryMap.computeIfAbsent(typeKey.getType(), c -> { + OpenRegistry registry = new OpenRegistryImpl<>(typeKey); + selfLoader.registerLoader(c, registry); + abstractConfigLoader.registerLoader(c, registry); + logger.debug("Registered loader for registry of class {}", ReflectionUtil.typeToString(c)); + + if(typeKey.getType() instanceof ParameterizedType param) { + 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 suppliedParam) { + 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); + logger.debug("Registered template loader for registry of class {}", ReflectionUtil.typeToString(templateType)); + } + } + } + } + + return new CheckedRegistryImpl<>(registry); + }); + } + + @Override + public MetaPackImpl applyLoader(Type type, TypeLoader loader) { + abstractConfigLoader.registerLoader(type, loader); + selfLoader.registerLoader(type, loader); + return this; + } + + @Override + public MetaPackImpl applyLoader(Type type, Supplier> loader) { + abstractConfigLoader.registerLoader(type, loader); + selfLoader.registerLoader(type, loader); + return this; + } + + @Override + public void register(TypeRegistry registry) { + registryMap.forEach(registry::registerLoader); + } + } diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/MetaConfigRegistry.java b/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/MetaConfigRegistry.java new file mode 100644 index 000000000..f43ecb5ac --- /dev/null +++ b/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/MetaConfigRegistry.java @@ -0,0 +1,65 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + +package com.dfsek.terra.registry.master; + +import java.io.IOException; +import java.io.Serial; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; + +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.MetaPack; +import com.dfsek.terra.api.util.reflection.TypeKey; +import com.dfsek.terra.config.pack.ConfigPackImpl; +import com.dfsek.terra.config.pack.MetaPackImpl; +import com.dfsek.terra.registry.OpenRegistryImpl; +import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; + + +/** + * Class to hold config packs + */ +public class MetaConfigRegistry extends OpenRegistryImpl { + + public MetaConfigRegistry() { + super(TypeKey.of(MetaPack.class)); + } + + public void loadAll(Platform platform) throws IOException, PackLoadFailuresException { + Path packsDirectory = platform.getDataFolder().toPath().resolve("metapacks"); + Files.createDirectories(packsDirectory); + List failedLoads = new ArrayList<>(); + try(Stream packs = Files.list(packsDirectory)) { + packs.forEach(path -> { + try { + MetaPack pack = new MetaPackImpl(path, platform); + registerChecked(pack.getRegistryKey(), pack); + } catch(IOException e) { + failedLoads.add(e); + } + }); + } + if(!failedLoads.isEmpty()) { + throw new PackLoadFailuresException(failedLoads); + } + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index 25c78c228..bfb517804 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -62,6 +62,7 @@ public abstract class ModPlatform extends AbstractPlatform { public void registerWorldTypes(BiConsumer registerFunction) { getRawConfigRegistry() .forEach(pack -> PresetUtil.createDefault(pack, this).apply(registerFunction)); + getRawMetaConfigRegistry().forEach(pack -> PresetUtil.createMetaPack(pack, this).apply(registerFunction)); } @Override diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 1c8627364..eb586efbc 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -1,5 +1,7 @@ package com.dfsek.terra.mod.util; +import com.dfsek.terra.api.config.MetaPack; + import net.minecraft.registry.Registry; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Identifier; @@ -75,6 +77,54 @@ public class PresetUtil { return Pair.of(generatorID, preset); } + public static Pair createMetaPack(MetaPack pack, ModPlatform platform) { + Registry dimensionTypeRegistry = platform.dimensionTypeRegistry(); + Registry chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry(); + Registry multiNoiseBiomeSourceParameterLists = + platform.multiNoiseBiomeSourceParameterListRegistry(); + + + RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow(); + RegistryEntry overworld = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD) + .orElseThrow(); + + + Identifier generatorID = Identifier.of("terra", pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase( + Locale.ROOT)); + + PRESETS.add(generatorID); + + RegistryEntry registryEntry = dimensionTypeRegistry.getEntry(DimensionTypes.THE_NETHER).orElseThrow(); + RegistryEntry.Reference reference = multiNoiseBiomeSourceParameterLists.getEntry( + MultiNoiseBiomeSourceParameterLists.NETHER).orElseThrow(); + RegistryEntry registryEntry2 = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.NETHER) + .orElseThrow(); + + RegistryEntry registryEntry3 = dimensionTypeRegistry.getEntry(DimensionTypes.THE_END).orElseThrow(); + RegistryEntry registryEntry4 = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.END) + .orElseThrow(); + + ConfigPack overWorldPack = pack.packs().get("minecraft:overworld"); + TerraBiomeSource owBiomeSource = new TerraBiomeSource(overWorldPack); + ChunkGenerator owGenerator = new MinecraftChunkGeneratorWrapper(owBiomeSource, overWorldPack, overworld); + + ConfigPack netherPack = pack.packs().get("minecraft:nether"); + TerraBiomeSource neBiomeSource = new TerraBiomeSource(netherPack); + ChunkGenerator neGenerator = new MinecraftChunkGeneratorWrapper(neBiomeSource, netherPack, registryEntry2); + + ConfigPack endPack = pack.packs().get("minecraft:the_end"); + TerraBiomeSource endBiomeSource = new TerraBiomeSource(netherPack); + ChunkGenerator endGenerator = new MinecraftChunkGeneratorWrapper(endBiomeSource, endPack, registryEntry4); + + DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, owGenerator); + DimensionOptions netherDimensionOptions = new DimensionOptions(registryEntry, neGenerator); + DimensionOptions endDimensionOptions = new DimensionOptions(registryEntry3, endGenerator); + + WorldPreset preset = createPreset(dimensionOptions, netherDimensionOptions, endDimensionOptions); + LOGGER.info("Created world type \"{}\"", generatorID); + return Pair.of(generatorID, preset); + } + private static WorldPreset createPreset(DimensionOptions dimensionOptions, DimensionOptions netherDimensionOptions, DimensionOptions endDimensionOptions) { return new WorldPreset( diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java index 5d5ab11c0..489e0a2de 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java @@ -35,6 +35,12 @@ public final class BiomeUtil { pack.getCheckedRegistry(Biome.class) .forEach((id, biome) -> registerBiome(biome, pack, id, biomeRegistry)); }); + CommonPlatform.get().getMetaConfigRegistry().forEach(metaPack -> { // Register all Terra biomes. + metaPack.packs().forEach((k, pack) -> { + pack.getCheckedRegistry(Biome.class) + .forEach((id, biome) -> registerBiome(biome, pack, id, biomeRegistry)); + }); + }); logger.info("Terra biomes registered."); } From d4a328eb38a33108d5f6182881dfb6febcbae219 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Mon, 11 Dec 2023 21:14:43 -0700 Subject: [PATCH 009/116] who let the datadrive (the dimensions) --- .../java/com/dfsek/terra/mod/ModPlatform.java | 3 +- .../com/dfsek/terra/mod/util/PresetUtil.java | 144 +++++++++++------- .../src/main/resources/terra.accesswidener | 1 + .../terra/lifecycle/LifecyclePlatform.java | 10 ++ .../mixin/lifecycle/RegistryLoaderMixin.java | 4 + 5 files changed, 109 insertions(+), 53 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index bfb517804..48ec43721 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -21,6 +21,7 @@ import net.minecraft.world.biome.BiomeParticleConfig; import net.minecraft.world.biome.SpawnSettings; import net.minecraft.world.biome.SpawnSettings.SpawnEntry; import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList; +import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.WorldPreset; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; @@ -62,7 +63,7 @@ public abstract class ModPlatform extends AbstractPlatform { public void registerWorldTypes(BiConsumer registerFunction) { getRawConfigRegistry() .forEach(pack -> PresetUtil.createDefault(pack, this).apply(registerFunction)); - getRawMetaConfigRegistry().forEach(pack -> PresetUtil.createMetaPack(pack, this).apply(registerFunction)); + getRawMetaConfigRegistry().forEach(pack -> PresetUtil.createMetaPackPreset(pack, this).apply(registerFunction)); } @Override diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index eb586efbc..a053b792f 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -1,7 +1,31 @@ package com.dfsek.terra.mod.util; -import com.dfsek.terra.api.config.MetaPack; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.util.Identifier; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.dimension.DimensionOptions; +import net.minecraft.world.dimension.DimensionType; +import net.minecraft.world.dimension.DimensionTypes; +import net.minecraft.world.gen.WorldPreset; +import net.minecraft.world.gen.chunk.ChunkGenerator; +import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; + +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.MetaPack; +import com.dfsek.terra.api.util.generic.pair.Pair; +import com.dfsek.terra.mod.ModPlatform; +import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; +import com.dfsek.terra.mod.generation.TerraBiomeSource; import net.minecraft.registry.Registry; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Identifier; @@ -31,6 +55,8 @@ import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; import com.dfsek.terra.mod.generation.TerraBiomeSource; + + public class PresetUtil { private static final Logger LOGGER = LoggerFactory.getLogger(PresetUtil.class); private static final List PRESETS = new ArrayList<>(); @@ -52,85 +78,99 @@ public class PresetUtil { PRESETS.add(generatorID); - RegistryEntry registryEntry = dimensionTypeRegistry.getEntry(DimensionTypes.THE_NETHER).orElseThrow(); - RegistryEntry.Reference reference = multiNoiseBiomeSourceParameterLists.getEntry( - MultiNoiseBiomeSourceParameterLists.NETHER).orElseThrow(); - RegistryEntry registryEntry2 = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.NETHER) - .orElseThrow(); - - RegistryEntry registryEntry3 = dimensionTypeRegistry.getEntry(DimensionTypes.THE_END).orElseThrow(); - RegistryEntry registryEntry4 = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.END) - .orElseThrow(); - TerraBiomeSource biomeSource = new TerraBiomeSource(pack); ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, overworld); DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator); - DimensionOptions netherDimensionOptions = new DimensionOptions(registryEntry, - new NoiseChunkGenerator(MultiNoiseBiomeSource.create(reference), - registryEntry2)); - DimensionOptions endDimensionOptions = new DimensionOptions(registryEntry3, new NoiseChunkGenerator( - TheEndBiomeSource.createVanilla(platform.biomeRegistry().getReadOnlyWrapper()), registryEntry4)); - WorldPreset preset = createPreset(dimensionOptions, netherDimensionOptions, endDimensionOptions); + HashMap, DimensionOptions> dimensionMap = new HashMap<>(); + + dimensionMap.put(DimensionOptions.OVERWORLD, dimensionOptions); + + insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), dimensionMap); + + WorldPreset preset = new WorldPreset(dimensionMap); LOGGER.info("Created world type \"{}\"", generatorID); return Pair.of(generatorID, preset); } - public static Pair createMetaPack(MetaPack pack, ModPlatform platform) { + public static Pair createMetaPackPreset(MetaPack metaPack, ModPlatform platform) { Registry dimensionTypeRegistry = platform.dimensionTypeRegistry(); Registry chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry(); Registry multiNoiseBiomeSourceParameterLists = platform.multiNoiseBiomeSourceParameterListRegistry(); - - RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow(); - RegistryEntry overworld = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD) - .orElseThrow(); - - - Identifier generatorID = Identifier.of("terra", pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase( + Identifier generatorID = Identifier.of("terra", metaPack.getID().toLowerCase(Locale.ROOT) + "/" + metaPack.getNamespace().toLowerCase( Locale.ROOT)); PRESETS.add(generatorID); - RegistryEntry registryEntry = dimensionTypeRegistry.getEntry(DimensionTypes.THE_NETHER).orElseThrow(); - RegistryEntry.Reference reference = multiNoiseBiomeSourceParameterLists.getEntry( - MultiNoiseBiomeSourceParameterLists.NETHER).orElseThrow(); - RegistryEntry registryEntry2 = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.NETHER) - .orElseThrow(); + HashMap, DimensionOptions> dimensionMap = new HashMap<>(); - RegistryEntry registryEntry3 = dimensionTypeRegistry.getEntry(DimensionTypes.THE_END).orElseThrow(); - RegistryEntry registryEntry4 = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.END) - .orElseThrow(); + metaPack.packs().forEach((key, pack) -> { + Identifier demensionIdentifier = new Identifier(key); + DimensionType dimensionType = dimensionTypeRegistry.get(demensionIdentifier); + RegistryEntry dimensionTypeRegistryEntry = dimensionTypeRegistry.getEntry(dimensionType); - ConfigPack overWorldPack = pack.packs().get("minecraft:overworld"); - TerraBiomeSource owBiomeSource = new TerraBiomeSource(overWorldPack); - ChunkGenerator owGenerator = new MinecraftChunkGeneratorWrapper(owBiomeSource, overWorldPack, overworld); + TerraBiomeSource biomeSource = new TerraBiomeSource(pack); - ConfigPack netherPack = pack.packs().get("minecraft:nether"); - TerraBiomeSource neBiomeSource = new TerraBiomeSource(netherPack); - ChunkGenerator neGenerator = new MinecraftChunkGeneratorWrapper(neBiomeSource, netherPack, registryEntry2); + RegistryEntry generatorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(demensionIdentifier)); + if (key.equals("minecraft:the_nether") || key.equals("minecraft:the_end")) { //TODO REMOVE WHEN ADDING CUSTOM GEN SETTINGS + Identifier demensionIdentifier2 = new Identifier(key.replace("the_", "")); + generatorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(demensionIdentifier2)); + } - ConfigPack endPack = pack.packs().get("minecraft:the_end"); - TerraBiomeSource endBiomeSource = new TerraBiomeSource(netherPack); - ChunkGenerator endGenerator = new MinecraftChunkGeneratorWrapper(endBiomeSource, endPack, registryEntry4); + ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, generatorSettings); - DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, owGenerator); - DimensionOptions netherDimensionOptions = new DimensionOptions(registryEntry, neGenerator); - DimensionOptions endDimensionOptions = new DimensionOptions(registryEntry3, endGenerator); + DimensionOptions dimensionOptions = new DimensionOptions(dimensionTypeRegistryEntry, generator); + RegistryKey dimensionOptionsRegistryKey = RegistryKey.of(RegistryKeys.DIMENSION, demensionIdentifier); + dimensionMap.put(dimensionOptionsRegistryKey, dimensionOptions); + }); - WorldPreset preset = createPreset(dimensionOptions, netherDimensionOptions, endDimensionOptions); + insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), dimensionMap); + + WorldPreset preset = new WorldPreset(dimensionMap); LOGGER.info("Created world type \"{}\"", generatorID); return Pair.of(generatorID, preset); } - private static WorldPreset createPreset(DimensionOptions dimensionOptions, DimensionOptions netherDimensionOptions, - DimensionOptions endDimensionOptions) { - return new WorldPreset( - Map.of(DimensionOptions.OVERWORLD, dimensionOptions, DimensionOptions.NETHER, netherDimensionOptions, DimensionOptions.END, - endDimensionOptions) - ); + private static void insertDefaults(Registry dimensionTypeRegistry, Registry chunkGeneratorSettingsRegistry, Registry multiNoiseBiomeSourceParameterLists, Registry biomeRegistry, HashMap, DimensionOptions> map) { + if (!map.containsKey(DimensionOptions.OVERWORLD)) { + RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow(); + + RegistryEntry.Reference overworldChunkBiomeReference = multiNoiseBiomeSourceParameterLists.getEntry( + MultiNoiseBiomeSourceParameterLists.OVERWORLD).orElseThrow(); + + RegistryEntry overworldChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD) + .orElseThrow(); + + + DimensionOptions overworldDimensionOptions = new DimensionOptions(overworldDimensionType, (new NoiseChunkGenerator(MultiNoiseBiomeSource.create(overworldChunkBiomeReference), overworldChunkGeneratorSettings))); + map.put(DimensionOptions.OVERWORLD, overworldDimensionOptions); + } + if (!map.containsKey(DimensionOptions.NETHER)) { + RegistryEntry netherDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.THE_NETHER).orElseThrow(); + + RegistryEntry.Reference netherChunkBiomeReference = multiNoiseBiomeSourceParameterLists.getEntry( + MultiNoiseBiomeSourceParameterLists.NETHER).orElseThrow(); + + RegistryEntry netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.NETHER) + .orElseThrow(); + + + DimensionOptions overworldDimensionOptions = new DimensionOptions(netherDimensionType, (new NoiseChunkGenerator(MultiNoiseBiomeSource.create(netherChunkBiomeReference), netherChunkGeneratorSettings))); + map.put(DimensionOptions.NETHER, overworldDimensionOptions); + } + if (!map.containsKey(DimensionOptions.END)) { + RegistryEntry endDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.THE_END).orElseThrow(); + + RegistryEntry endChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.END) + .orElseThrow(); + + + DimensionOptions overworldDimensionOptions = new DimensionOptions(endDimensionType, (new NoiseChunkGenerator(TheEndBiomeSource.createVanilla(biomeRegistry.getReadOnlyWrapper()), endChunkGeneratorSettings))); + map.put(DimensionOptions.END, overworldDimensionOptions); + } } public static List getPresets() { diff --git a/platforms/mixin-common/src/main/resources/terra.accesswidener b/platforms/mixin-common/src/main/resources/terra.accesswidener index d638bbf45..77e5ad4b6 100644 --- a/platforms/mixin-common/src/main/resources/terra.accesswidener +++ b/platforms/mixin-common/src/main/resources/terra.accesswidener @@ -1,3 +1,4 @@ accessWidener v1 named accessible class net/minecraft/world/biome/Biome$Weather accessible class net/minecraft/world/gen/WorldPresets$Registrar +accessible field net/minecraft/world/dimension/DimensionOptionsRegistryHolder VANILLA_KEYS Ljava/util/Set; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java index 18ff9570c..2cde477f3 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java @@ -4,11 +4,15 @@ import ca.solostudios.strata.Versions; import ca.solostudios.strata.parser.tokenizer.ParseException; import ca.solostudios.strata.version.Version; import net.minecraft.MinecraftVersion; +import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKeys; import net.minecraft.server.MinecraftServer; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList; +import net.minecraft.world.dimension.DimensionOptions; +import net.minecraft.world.dimension.DimensionOptionsRegistryHolder; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; import org.slf4j.Logger; @@ -34,6 +38,8 @@ public abstract class LifecyclePlatform extends ModPlatform { private static final AtomicReference> DIMENSIONS = new AtomicReference<>(); private static final AtomicReference> SETTINGS = new AtomicReference<>(); private static final AtomicReference> NOISE = new AtomicReference<>(); + + private static final AtomicReference DYNAMIC_REGISTRY_MANAGER = new AtomicReference<>(); private static MinecraftServer server; public LifecyclePlatform() { @@ -51,6 +57,10 @@ public abstract class LifecyclePlatform extends ModPlatform { NOISE.set(multiNoiseBiomeSourceParameterListRegistry); } + public static void setDynamicRegistryManager(DynamicRegistryManager.Immutable dynamicRegistryManager) { + DYNAMIC_REGISTRY_MANAGER.set(dynamicRegistryManager); + } + @Override public MinecraftServer getServer() { return server; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java index 052598ac2..e409ea0cb 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java @@ -7,6 +7,7 @@ import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryLoader; import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList; +import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.WorldPreset; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; @@ -64,6 +65,9 @@ public class RegistryLoaderMixin { @SuppressWarnings("unchecked") private static Optional> extractRegistry(List, Object>> instance, RegistryKey> key) { + instance.stream().forEach(k -> { + LOGGER.error(k.toString()); + }); List> matches = instance .stream() .map(Pair::getFirst) From de91a6facb0a250d388b4c23865e4483c2eca206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Mon, 11 Dec 2023 23:36:05 -0700 Subject: [PATCH 010/116] metapack linking instead of shading --- .../com/dfsek/terra/AbstractPlatform.java | 2 +- .../dfsek/terra/config/pack/MetaPackImpl.java | 45 +++++++++++++------ .../registry/master/MetaConfigRegistry.java | 4 +- 3 files changed, 35 insertions(+), 16 deletions(-) diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java index 0f02b3478..2765326c2 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -194,7 +194,7 @@ public abstract class AbstractPlatform implements Platform { MetaConfigRegistry metaConfigRegistry = getRawMetaConfigRegistry(); metaConfigRegistry.clear(); try { - metaConfigRegistry.loadAll(this); + metaConfigRegistry.loadAll(this, configRegistry); } catch(IOException e) { logger.error("Failed to load meta config packs", e); return false; diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java index 6ca1dc927..892133b2d 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java @@ -8,9 +8,12 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.function.Supplier; +import java.util.regex.Pattern; import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.config.Configuration; @@ -37,12 +40,15 @@ import com.dfsek.terra.config.loaders.config.BufferedImageLoader; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; +import com.dfsek.terra.registry.master.ConfigRegistry; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MetaPackImpl implements MetaPack { + private static final Pattern PATTERN = Pattern.compile(", "); private final MetaPackTemplate template = new MetaPackTemplate(); private final Platform platform; @@ -62,8 +68,11 @@ public class MetaPackImpl implements MetaPack { private static final Logger logger = LoggerFactory.getLogger(MetaPackImpl.class); private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); + private final String author; + + public MetaPackImpl(Path path, Platform platform, ConfigRegistry configRegistry) throws IOException { + long start = System.nanoTime(); - public MetaPackImpl(Path path, Platform platform) throws IOException { this.rootPath = path; this.platform = platform; @@ -92,23 +101,33 @@ public class MetaPackImpl implements MetaPack { this.key = RegistryKey.of(namespace, id); - try { - template.getPacks().forEach((k, v) -> { - try { - packs.put(k, new ConfigPackImpl(rootPath.resolve(v), platform)); - } catch(IOException e) { - throw new RuntimeException(e); - } - }); - } catch(RuntimeException e) { - throw new IOException(e); - } + template.getPacks().forEach((k, v) -> { + RegistryKey registryKey = RegistryKey.parse(v); + if (configRegistry.contains(registryKey)) { + packs.put(k, configRegistry.get(registryKey).get()); + logger.info("Linked config pack \"{}\" to metapack \"{}:{}\".", v, namespace, id); + } else { + logger.warn("Failed to link config pack \"{}\" to metapack \"{}:{}\".", v, namespace, id); + } + }); + + HashSet authors = new HashSet<>(); + packs.forEach((k, v) -> { + authors.addAll(Arrays.asList(PATTERN.split(v.getAuthor()))); + }); + authors.addAll(Arrays.asList(PATTERN.split(template.getAuthor()))); + + this.author = String.join(", ", authors); + + logger.info("Loaded metapack \"{}:{}\" v{} by {} in {}ms.", + namespace, id, getVersion().getFormatted(), author, (System.nanoTime() - start) / 1000000.0D); } @Override public String getAuthor() { - return template.getAuthor(); + + return author; } @Override diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/MetaConfigRegistry.java b/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/MetaConfigRegistry.java index f43ecb5ac..472592556 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/MetaConfigRegistry.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/MetaConfigRegistry.java @@ -44,14 +44,14 @@ public class MetaConfigRegistry extends OpenRegistryImpl { super(TypeKey.of(MetaPack.class)); } - public void loadAll(Platform platform) throws IOException, PackLoadFailuresException { + public void loadAll(Platform platform, ConfigRegistry configRegistry) throws IOException, PackLoadFailuresException { Path packsDirectory = platform.getDataFolder().toPath().resolve("metapacks"); Files.createDirectories(packsDirectory); List failedLoads = new ArrayList<>(); try(Stream packs = Files.list(packsDirectory)) { packs.forEach(path -> { try { - MetaPack pack = new MetaPackImpl(path, platform); + MetaPack pack = new MetaPackImpl(path, platform, configRegistry); registerChecked(pack.getRegistryKey(), pack); } catch(IOException e) { failedLoads.add(e); From c86faa44ec03b4f92d89c90c5d55cf5fee6c827a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 13:35:24 -0700 Subject: [PATCH 011/116] Remove netherfossiloptimization because it's no longer applicable also it's not needed mc seems to have done this themselves --- .../mixin/fix/NetherFossilOptimization.java | 30 ------------------- 1 file changed, 30 deletions(-) delete mode 100644 platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/fix/NetherFossilOptimization.java diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/fix/NetherFossilOptimization.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/fix/NetherFossilOptimization.java deleted file mode 100644 index f2ab4956a..000000000 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/fix/NetherFossilOptimization.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.dfsek.terra.mod.mixin.fix; - -import net.minecraft.world.gen.structure.NetherFossilStructure; -import net.minecraft.world.gen.structure.Structure.Context; -import net.minecraft.world.gen.structure.Structure.StructurePosition; -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.Optional; - -import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; - - -/** - * Disable fossil generation in Terra worlds, as they are very expensive due to consistently triggering cache misses. - *

- * Currently, on Fabric, Terra cannot be specified as a Nether generator. TODO: logic to turn fossils back on if chunk generator is in - * nether. - */ -@Mixin(NetherFossilStructure.class) -public class NetherFossilOptimization { - @Inject(method = "getStructurePosition", at = @At("HEAD"), cancellable = true) - public void injectFossilPositions(Context context, CallbackInfoReturnable> cir) { - if(context.chunkGenerator() instanceof MinecraftChunkGeneratorWrapper) { - cir.setReturnValue(Optional.empty()); - } - } -} From db1e9242465b9685c7f0c9fa44265a8f82dca60c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 13:35:46 -0700 Subject: [PATCH 012/116] more metapack work --- .../dfsek/terra/config/pack/MetaPackImpl.java | 23 ++++++++++++++++--- .../terra/config/pack/MetaPackTemplate.java | 1 + .../java/com/dfsek/terra/mod/ModPlatform.java | 14 +++++++++-- .../main/resources/terra.common.mixins.json | 1 - .../dfsek/terra/lifecycle/util/BiomeUtil.java | 6 ----- 5 files changed, 33 insertions(+), 12 deletions(-) diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java index 892133b2d..c09042fb5 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java @@ -3,9 +3,12 @@ package com.dfsek.terra.config.pack; import ca.solostudios.strata.version.Version; import java.awt.image.BufferedImage; +import java.io.FileNotFoundException; import java.io.IOException; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; @@ -73,14 +76,27 @@ public class MetaPackImpl implements MetaPack { public MetaPackImpl(Path path, Platform platform, ConfigRegistry configRegistry) throws IOException { long start = System.nanoTime(); - this.rootPath = path; - this.platform = platform; + if(Files.notExists(path)) throw new FileNotFoundException("Could not load metapack, " + path + " does not exist"); + + if(Files.isDirectory(path)) { + this.rootPath = path; + } else if(Files.isRegularFile(path)) { + if(!path.getFileName().toString().endsWith(".zip")) { + throw new IOException("Could not load metapack, file " + path + " is not a zip"); + } + FileSystem zipfs = FileSystems.newFileSystem(path); + this.rootPath = zipfs.getPath("/"); + } else { + throw new IOException("Could not load metapack from " + path); + } Path packManifestPath = rootPath.resolve("metapack.yml"); if(Files.notExists(packManifestPath)) throw new IOException("No metapack.yml found in " + path); Configuration packManifest = new YamlConfiguration(Files.newInputStream(packManifestPath), packManifestPath.getFileName().toString()); + this.platform = platform; + register(selfLoader); platform.register(selfLoader); @@ -101,6 +117,8 @@ public class MetaPackImpl implements MetaPack { this.key = RegistryKey.of(namespace, id); + logger.info("Loading metapack \"{}:{}\"", id, namespace); + template.getPacks().forEach((k, v) -> { RegistryKey registryKey = RegistryKey.parse(v); if (configRegistry.contains(registryKey)) { @@ -126,7 +144,6 @@ public class MetaPackImpl implements MetaPack { @Override public String getAuthor() { - return author; } diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackTemplate.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackTemplate.java index 9a9f6fe74..fdabc98ac 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackTemplate.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackTemplate.java @@ -8,6 +8,7 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.Map; +@SuppressWarnings({ "unused", "FieldMayBeFinal" }) public class MetaPackTemplate implements ConfigTemplate { @Value("id") private String id; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index 48ec43721..3e77d5267 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -6,6 +6,7 @@ import com.dfsek.tectonic.api.exception.LoadException; import net.minecraft.entity.EntityType; import net.minecraft.entity.SpawnGroup; import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; import net.minecraft.server.MinecraftServer; import net.minecraft.sound.BiomeAdditionsSound; import net.minecraft.sound.BiomeMoodSound; @@ -27,6 +28,7 @@ import net.minecraft.world.gen.WorldPreset; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; import org.jetbrains.annotations.NotNull; +import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.function.BiConsumer; @@ -61,9 +63,17 @@ public abstract class ModPlatform extends AbstractPlatform { public abstract MinecraftServer getServer(); public void registerWorldTypes(BiConsumer registerFunction) { + HashSet configPacksInMetaPack = new HashSet<>(); + getRawMetaConfigRegistry().forEach(pack -> { + PresetUtil.createMetaPackPreset(pack, this).apply(registerFunction); + pack.packs().forEach((k, v) -> configPacksInMetaPack.add(v.getID())); + }); getRawConfigRegistry() - .forEach(pack -> PresetUtil.createDefault(pack, this).apply(registerFunction)); - getRawMetaConfigRegistry().forEach(pack -> PresetUtil.createMetaPackPreset(pack, this).apply(registerFunction)); + .forEach(pack -> { + if (!configPacksInMetaPack.contains(pack.getID())) { + PresetUtil.createDefault(pack, this).apply(registerFunction); + } + }); } @Override diff --git a/platforms/mixin-common/src/main/resources/terra.common.mixins.json b/platforms/mixin-common/src/main/resources/terra.common.mixins.json index d4402241c..c795b0246 100644 --- a/platforms/mixin-common/src/main/resources/terra.common.mixins.json +++ b/platforms/mixin-common/src/main/resources/terra.common.mixins.json @@ -10,7 +10,6 @@ "access.StructureAccessorAccessor", "access.VillagerTypeAccessor", "fix.BeeMoveGoalsUnsynchronizedRandomAccessFix", - "fix.NetherFossilOptimization", "implementations.compat.GenerationSettingsFloraFeaturesMixin", "implementations.terra.BiomeMixin", "implementations.terra.HandleImplementationMixin", diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java index 489e0a2de..5d5ab11c0 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java @@ -35,12 +35,6 @@ public final class BiomeUtil { pack.getCheckedRegistry(Biome.class) .forEach((id, biome) -> registerBiome(biome, pack, id, biomeRegistry)); }); - CommonPlatform.get().getMetaConfigRegistry().forEach(metaPack -> { // Register all Terra biomes. - metaPack.packs().forEach((k, pack) -> { - pack.getCheckedRegistry(Biome.class) - .forEach((id, biome) -> registerBiome(biome, pack, id, biomeRegistry)); - }); - }); logger.info("Terra biomes registered."); } From e11a2353862a74aae0f751cc2a31b74d53565bc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 13:55:03 -0700 Subject: [PATCH 013/116] WIP Dim opts --- .../com/dfsek/terra/mod/MinecraftAddon.java | 26 +++- .../mod/config/MonsterSettingsTemplate.java | 38 +++++ .../mod/config/VanillaWorldProperties.java | 141 ++++++++++++++++++ .../java/com/dfsek/terra/mod/data/Codecs.java | 10 ++ .../MinecraftChunkGeneratorWrapper.java | 26 +++- .../mod/implmentation/TerraIntProvider.java | 43 ++++++ .../lifecycle/DataPackContentsMixin.java | 2 + .../dfsek/terra/mod/util/DimensionUtil.java | 62 ++++++++ .../dfsek/terra/mod/util/MinecraftUtil.java | 19 +++ .../com/dfsek/terra/mod/util/PresetUtil.java | 18 +++ .../terra/lifecycle/util/RegistryUtil.java | 3 + 11 files changed, 378 insertions(+), 10 deletions(-) create mode 100644 platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsTemplate.java create mode 100644 platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java create mode 100644 platforms/mixin-common/src/main/java/com/dfsek/terra/mod/implmentation/TerraIntProvider.java create mode 100644 platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java index 9d7dfdcae..3a6d70b3c 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java @@ -19,6 +19,13 @@ package com.dfsek.terra.mod; import ca.solostudios.strata.Versions; import ca.solostudios.strata.version.Version; + +import com.dfsek.terra.api.config.ConfigPack; + +import com.dfsek.terra.mod.config.VanillaWorldProperties; + +import com.dfsek.terra.mod.util.MinecraftUtil; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,11 +52,20 @@ public abstract class MinecraftAddon implements BaseAddon { @Override public void initialize() { modPlatform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().getContext().put(event.loadTemplate(new PreLoadCompatibilityOptions()))) - .global(); - + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigurationLoadEvent.class) + .then(event -> { + if(event.is(ConfigPack.class)) { + event.getLoadedObject(ConfigPack.class).getContext().put(event.load(new VanillaWorldProperties())); + } + }) + .global(); + modPlatform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> event.getPack().getContext().put(event.loadTemplate(new PreLoadCompatibilityOptions()))) + .global(); + modPlatform.getEventManager() .getHandler(FunctionalEventHandler.class) .register(this, ConfigPackPostLoadEvent.class) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsTemplate.java new file mode 100644 index 000000000..e585fe43a --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsTemplate.java @@ -0,0 +1,38 @@ +package com.dfsek.terra.mod.config; + +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; + +import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.api.util.Range; + +import com.dfsek.terra.mod.implmentation.TerraIntProvider; + +import net.minecraft.world.dimension.DimensionType.MonsterSettings; + + +public class MonsterSettingsTemplate implements ObjectTemplate { + @Value("piglin-safe") + @Default + private Boolean piglinSafe = false; + + @Value("has-raids") + @Default + private Boolean hasRaids = false; + + @Value("monster-spawn-light") + @Default + private Range monsterSpawnLight = new ConstantRange(0, 1); + + @Value("monster-spawn-block-light-limit") + @Default + private int monsterSpawnBlockLightLimit = 0; + + + @Override + public MonsterSettings get() { + return new MonsterSettings(piglinSafe, hasRaids, new TerraIntProvider(monsterSpawnLight), monsterSpawnBlockLightLimit); + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java new file mode 100644 index 000000000..8ee95432b --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java @@ -0,0 +1,141 @@ +package com.dfsek.terra.mod.config; + +import com.dfsek.tectonic.api.config.template.ConfigTemplate; +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import com.dfsek.terra.mod.implmentation.TerraIntProvider; + +import net.minecraft.client.gl.Uniform; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.intprovider.IntProvider; +import net.minecraft.util.math.intprovider.IntProviderType; +import net.minecraft.util.math.random.Random; +import net.minecraft.world.dimension.DimensionType.MonsterSettings; + +import com.dfsek.terra.api.properties.Properties; +import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.api.util.Range; + + +public class VanillaWorldProperties implements ConfigTemplate, Properties { + @Value("minecraft.fixed-time") + @Default + private Long fixedTime = null; + + @Value("minecraft.has-sky-light") + @Default + private Boolean hasSkyLight = false; + + @Value("minecraft.has-ceiling") + @Default + private Boolean hasCeiling = false; + + @Value("minecraft.ultra-warm") + @Default + private Boolean ultraWarm = false; + + @Value("minecraft.natural") + @Default + private Boolean natural = false; + + @Value("minecraft.coordinate-scale") + @Default + private Double coordinateScale = 1.0E-5d; + + @Value("minecraft.bed-works") + @Default + private Boolean bedWorks = false; + + @Value("minecraft.respawn-anchor-works") + @Default + private Boolean respawnAnchorWorks = false; + + @Value("minecraft.height") + @Default + private Range height = new ConstantRange(0, 16); + + @Value("minecraft.height.logical") + @Default + private Integer logicalHeight = 0; + + @Value("minecraft.infiniburn") + @Default + private Identifier infiniburn = new Identifier(""); + + @Value("minecraft.effects") + @Default + private Identifier effects = new Identifier(""); + + @Value("minecraft.ambient-light") + @Default + private Float ambientLight = Float.MAX_VALUE; + + @Value("minecraft.monster-settings") + @Default + private MonsterSettings monsterSettings = new MonsterSettings(false, false, new TerraIntProvider(new ConstantRange(0, 1)), 0); + + @Value("minecraft.sealevel") + @Default + private Integer sealevel = 0; + + public Long getFixedTime() { + return fixedTime; + } + + public Boolean getHasSkyLight() { + return hasSkyLight; + } + + public Boolean getHasCeiling() { + return hasCeiling; + } + + public Boolean getUltraWarm() { + return ultraWarm; + } + + public Boolean getNatural() { + return natural; + } + + public Double getCoordinateScale() { + return coordinateScale; + } + + public Boolean getBedWorks() { + return bedWorks; + } + + public Boolean getRespawnAnchorWorks() { + return respawnAnchorWorks; + } + + public Range getHeight() { + return height; + } + + public Integer getLogicalHeight() { + return logicalHeight; + } + + public Identifier getInfiniburn() { + return infiniburn; + } + + public Identifier getEffects() { + return effects; + } + + public Float getAmbientLight() { + return ambientLight; + } + + public MonsterSettings getMonsterSettings() { + return monsterSettings; + } + + public Integer getSealevel() { + return sealevel; + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java index 595f5ec5b..4d803b92b 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java @@ -1,5 +1,10 @@ package com.dfsek.terra.mod.data; +import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.api.util.Range; + +import com.dfsek.terra.mod.implmentation.TerraIntProvider; + import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; @@ -54,4 +59,9 @@ public final class Codecs { ).apply(instance, instance.stable( MinecraftChunkGeneratorWrapper::new)) ); + + public static final Codec TERRA_CONSTANT_RANGE_INT_PROVIDER_TYPE = RecordCodecBuilder.create(range -> range.group( + Codec.INT.fieldOf("min").stable().forGetter(TerraIntProvider::getMin), + Codec.INT.fieldOf("max").stable().forGetter(TerraIntProvider::getMax)).apply(range, range.stable((min, max) -> new TerraIntProvider(new ConstantRange( + min, max))))); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java index 899b007f0..acf22cc1d 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java @@ -17,6 +17,9 @@ package com.dfsek.terra.mod.generation; +import com.dfsek.terra.mod.config.VanillaBiomeProperties; +import com.dfsek.terra.mod.config.VanillaWorldProperties; + import com.mojang.serialization.Codec; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -72,6 +75,8 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun private final RegistryEntry settings; private ChunkGenerator delegate; private ConfigPack pack; + + private VanillaWorldProperties vanillaWorldProperties; public MinecraftChunkGeneratorWrapper(TerraBiomeSource biomeSource, ConfigPack configPack, RegistryEntry settingsSupplier) { @@ -82,6 +87,11 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun this.delegate = pack.getGeneratorProvider().newInstance(pack); logger.info("Loading world with config pack {}", pack.getID()); this.biomeSource = biomeSource; + if (pack.getContext().has(VanillaBiomeProperties.class)) { + vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); + } else { + vanillaWorldProperties = new VanillaWorldProperties(); + } } @Override @@ -107,7 +117,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun @Override public int getWorldHeight() { - return settings.value().generationShapeConfig().height(); + return vanillaWorldProperties.getHeight().getMax(); } @@ -167,12 +177,12 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun @Override public int getSeaLevel() { - return settings.value().seaLevel(); + return vanillaWorldProperties.getSealevel(); } @Override public int getMinimumY() { - return settings.value().generationShapeConfig().minimumY(); + return vanillaWorldProperties.getHeight().getMin(); } @@ -202,7 +212,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun @Override public void getDebugHudText(List text, NoiseConfig noiseConfig, BlockPos pos) { - + // no op } public ConfigPack getPack() { @@ -213,7 +223,13 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun this.pack = pack; this.delegate = pack.getGeneratorProvider().newInstance(pack); biomeSource.setPack(pack); - + + if (pack.getContext().has(VanillaBiomeProperties.class)) { + vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); + } else { + vanillaWorldProperties = new VanillaWorldProperties(); + } + logger.debug("Loading world with config pack {}", pack.getID()); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/implmentation/TerraIntProvider.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/implmentation/TerraIntProvider.java new file mode 100644 index 000000000..dd5d51687 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/implmentation/TerraIntProvider.java @@ -0,0 +1,43 @@ +package com.dfsek.terra.mod.implmentation; + +import com.dfsek.terra.api.util.Range; + +import com.dfsek.terra.mod.util.MinecraftAdapter; + +import net.minecraft.util.math.intprovider.IntProvider; +import net.minecraft.util.math.intprovider.IntProviderType; +import net.minecraft.util.math.random.Random; + +import java.util.HashMap; +import java.util.Map; + + +public class TerraIntProvider extends IntProvider { + public static final Map TERRA_RANGE_TYPE_TO_INT_PROVIDER_TYPE = new HashMap<>(); + + public Range delegate; + + public TerraIntProvider(Range delegate) { + this.delegate = delegate; + } + + @Override + public int get(Random random) { + return delegate.get(MinecraftAdapter.adapt(random)); + } + + @Override + public int getMin() { + return delegate.getMin(); + } + + @Override + public int getMax() { + return delegate.getMax(); + } + + @Override + public IntProviderType getType() { + return TERRA_RANGE_TYPE_TO_INT_PROVIDER_TYPE.get(delegate.getClass()); + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java index 48ea98519..d892153bd 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java @@ -3,6 +3,8 @@ package com.dfsek.terra.mod.mixin.lifecycle; import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKeys; +import com.dfsek.terra.mod.util.MinecraftUtil; + import net.minecraft.server.DataPackContents; import net.minecraft.world.biome.Biome; import org.spongepowered.asm.mixin.Mixin; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java new file mode 100644 index 000000000..234ea2940 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java @@ -0,0 +1,62 @@ +package com.dfsek.terra.mod.util; + +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.mod.config.VanillaBiomeProperties; +import com.dfsek.terra.mod.config.VanillaWorldProperties; + +import net.minecraft.tag.TagKey; +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.dimension.DimensionOptions; +import net.minecraft.world.dimension.DimensionType; + +import java.util.OptionalLong; + + +public class DimensionUtil { + protected static RegistryKey registerDimension(Identifier identifier, + DimensionType dimension) { + BuiltinRegistries.add(BuiltinRegistries.DIMENSION_TYPE, + registerKey(identifier) + .getValue(), + dimension); + return getDimensionKey(identifier); + } + + public static RegistryKey registerKey(Identifier identifier) { + return RegistryKey.of(Registry.DIMENSION_KEY, identifier); + } + public static RegistryKey getDimensionKey(Identifier identifier) { + return BuiltinRegistries.DIMENSION_TYPE.getKey(BuiltinRegistries.DIMENSION_TYPE.get(identifier)).orElseThrow(); + } + + protected static RegistryKey registerDimension(ConfigPack pack) { + VanillaWorldProperties vanillaWorldProperties; + if (pack.getContext().has(VanillaBiomeProperties.class)) { + vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); + } else { + vanillaWorldProperties = new VanillaWorldProperties(); + } + + DimensionType overworldDimensionType = new DimensionType( + vanillaWorldProperties.getFixedTime() == null ? OptionalLong.empty() : OptionalLong.of(vanillaWorldProperties.getFixedTime()), + vanillaWorldProperties.getHasSkyLight(), + vanillaWorldProperties.getHasCeiling(), + vanillaWorldProperties.getUltraWarm(), + vanillaWorldProperties.getNatural(), + vanillaWorldProperties.getCoordinateScale(), + vanillaWorldProperties.getBedWorks(), + vanillaWorldProperties.getRespawnAnchorWorks(), + vanillaWorldProperties.getHeight().getMin(), + vanillaWorldProperties.getHeight().getMax(), + vanillaWorldProperties.getLogicalHeight(), + TagKey.of(Registry.BLOCK_KEY, vanillaWorldProperties.getInfiniburn()), + vanillaWorldProperties.getEffects(), + vanillaWorldProperties.getAmbientLight(), + vanillaWorldProperties.getMonsterSettings()); + + return registerDimension(new Identifier("terra", pack.getID().toLowerCase()), overworldDimensionType); + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index 692d0da5a..6efeab949 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -1,5 +1,10 @@ package com.dfsek.terra.mod.util; +import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.mod.data.Codecs; + +import com.dfsek.terra.mod.implmentation.TerraIntProvider; + import net.minecraft.block.entity.LootableContainerBlockEntity; import net.minecraft.block.entity.MobSpawnerBlockEntity; import net.minecraft.block.entity.SignBlockEntity; @@ -10,10 +15,16 @@ import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.intprovider.ConstantIntProvider; +import net.minecraft.util.math.intprovider.IntProviderType; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryEntry; +import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.WorldAccess; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome.Builder; import net.minecraft.world.biome.BiomeEffects; +import net.minecraft.world.biome.BiomeEffects.GrassColorModifier; import net.minecraft.world.biome.GenerationSettings; import net.minecraft.world.gen.feature.ConfiguredFeature; import org.slf4j.Logger; @@ -92,6 +103,14 @@ public final class MinecraftUtil { return Map.copyOf(TERRA_BIOME_MAP); } + + public static void registerIntProviderTypes() { + IntProviderType CONSTANT = IntProviderType.register("terra:constant_range", + Codecs.TERRA_CONSTANT_RANGE_INT_PROVIDER_TYPE); + + TerraIntProvider.TERRA_RANGE_TYPE_TO_INT_PROVIDER_TYPE.put(ConstantRange.class, CONSTANT); + } + public static RegistryKey registerKey(Identifier identifier) { return RegistryKey.of(RegistryKeys.BIOME, identifier); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index a053b792f..1a2ebb360 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -4,7 +4,17 @@ import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.client.gui.screen.CustomizeBuffetLevelScreen; +import net.minecraft.client.gui.screen.CustomizeFlatLevelScreen; +import net.minecraft.client.gui.screen.world.LevelScreenProvider; +import net.minecraft.structure.StructureSet; import net.minecraft.util.Identifier; +import net.minecraft.util.math.noise.DoublePerlinNoiseSampler.NoiseParameters; +import net.minecraft.util.registry.BuiltinRegistries; +import net.minecraft.util.registry.DynamicRegistryManager; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryEntry; +import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.biome.Biome; import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; @@ -37,8 +47,11 @@ import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionTypes; import net.minecraft.world.gen.WorldPreset; +import net.minecraft.world.gen.WorldPresets; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; +import net.minecraft.world.gen.chunk.FlatChunkGenerator; +import net.minecraft.world.gen.chunk.FlatChunkGeneratorConfig; import net.minecraft.world.gen.chunk.NoiseChunkGenerator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,6 +60,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Optional; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.generic.pair.Pair; @@ -60,6 +74,10 @@ import com.dfsek.terra.mod.generation.TerraBiomeSource; public class PresetUtil { private static final Logger LOGGER = LoggerFactory.getLogger(PresetUtil.class); private static final List PRESETS = new ArrayList<>(); + + public static RegistryKey getPresetKey(Identifier identifier) { + return RegistryKey.of(Registry.WORLD_PRESET_KEY, identifier); + } public static Pair createDefault(ConfigPack pack, ModPlatform platform) { Registry dimensionTypeRegistry = platform.dimensionTypeRegistry(); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java index 03f0639c7..37df0eead 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java @@ -2,6 +2,8 @@ package com.dfsek.terra.lifecycle.util; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; +import com.dfsek.terra.mod.util.MinecraftUtil; + import net.minecraft.util.Identifier; import com.dfsek.terra.mod.data.Codecs; @@ -13,6 +15,7 @@ public final class RegistryUtil { } public static void register() { + MinecraftUtil.registerIntProviderTypes(); Registry.register(Registries.CHUNK_GENERATOR, new Identifier("terra:terra"), Codecs.MINECRAFT_CHUNK_GENERATOR_WRAPPER); Registry.register(Registries.BIOME_SOURCE, new Identifier("terra:terra"), Codecs.TERRA_BIOME_SOURCE); } From 033181d7c8b20bca85d84a80fc3f6a267c6e3ce9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 15:48:31 -0700 Subject: [PATCH 014/116] more wip changes --- .../mod/config/MonsterSettingsConfig.java | 53 +++++++++ .../mod/config/MonsterSettingsTemplate.java | 38 ------- .../mod/config/VanillaWorldProperties.java | 44 +++++--- .../dfsek/terra/mod/util/DimensionUtil.java | 103 +++++++++++------- .../dfsek/terra/mod/util/MinecraftUtil.java | 8 +- .../com/dfsek/terra/mod/util/PresetUtil.java | 16 +-- 6 files changed, 147 insertions(+), 115 deletions(-) create mode 100644 platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java delete mode 100644 platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsTemplate.java diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java new file mode 100644 index 000000000..372c40926 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java @@ -0,0 +1,53 @@ +package com.dfsek.terra.mod.config; + +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; + +import com.dfsek.terra.api.util.Range; + +import com.dfsek.terra.mod.implmentation.TerraIntProvider; + +import net.minecraft.world.dimension.DimensionType.MonsterSettings; + + +public class MonsterSettingsConfig implements ObjectTemplate { + @Value("piglin-safe") + @Default + private Boolean piglinSafe = null; + + @Value("has-raids") + @Default + private Boolean hasRaids = null; + + @Value("monster-spawn-light") + @Default + private Range monsterSpawnLight = null; + + @Value("monster-spawn-block-light-limit") + @Default + private Integer monsterSpawnBlockLightLimit = null; + + + public Boolean getPiglinSafe() { + return piglinSafe; + } + + public Boolean getHasRaids() { + return hasRaids; + } + + public Range getMonsterSpawnLight() { + return monsterSpawnLight; + } + + public Integer getMonsterSpawnBlockLightLimit() { + return monsterSpawnBlockLightLimit; + } + + @Override + public MonsterSettingsConfig get() { + return this; + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsTemplate.java deleted file mode 100644 index e585fe43a..000000000 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsTemplate.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.mod.config; - -import com.dfsek.tectonic.api.config.template.annotations.Default; -import com.dfsek.tectonic.api.config.template.annotations.Value; - -import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; - -import com.dfsek.terra.api.util.ConstantRange; -import com.dfsek.terra.api.util.Range; - -import com.dfsek.terra.mod.implmentation.TerraIntProvider; - -import net.minecraft.world.dimension.DimensionType.MonsterSettings; - - -public class MonsterSettingsTemplate implements ObjectTemplate { - @Value("piglin-safe") - @Default - private Boolean piglinSafe = false; - - @Value("has-raids") - @Default - private Boolean hasRaids = false; - - @Value("monster-spawn-light") - @Default - private Range monsterSpawnLight = new ConstantRange(0, 1); - - @Value("monster-spawn-block-light-limit") - @Default - private int monsterSpawnBlockLightLimit = 0; - - - @Override - public MonsterSettings get() { - return new MonsterSettings(piglinSafe, hasRaids, new TerraIntProvider(monsterSpawnLight), monsterSpawnBlockLightLimit); - } -} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java index 8ee95432b..2367fd263 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java @@ -19,65 +19,75 @@ import com.dfsek.terra.api.util.Range; public class VanillaWorldProperties implements ConfigTemplate, Properties { + + @Value("vanilla") + @Default + private String vanillaDimension = "minecraft:overworld"; + @Value("minecraft.fixed-time") @Default private Long fixedTime = null; @Value("minecraft.has-sky-light") @Default - private Boolean hasSkyLight = false; + private Boolean hasSkyLight = null; @Value("minecraft.has-ceiling") @Default - private Boolean hasCeiling = false; + private Boolean hasCeiling = null; @Value("minecraft.ultra-warm") @Default - private Boolean ultraWarm = false; + private Boolean ultraWarm = null; @Value("minecraft.natural") @Default - private Boolean natural = false; + private Boolean natural = null; @Value("minecraft.coordinate-scale") @Default - private Double coordinateScale = 1.0E-5d; + private Double coordinateScale = null; @Value("minecraft.bed-works") @Default - private Boolean bedWorks = false; + private Boolean bedWorks = null; @Value("minecraft.respawn-anchor-works") @Default - private Boolean respawnAnchorWorks = false; + private Boolean respawnAnchorWorks = null; @Value("minecraft.height") @Default - private Range height = new ConstantRange(0, 16); + private Range height = null; @Value("minecraft.height.logical") @Default - private Integer logicalHeight = 0; + private Integer logicalHeight = null; @Value("minecraft.infiniburn") @Default - private Identifier infiniburn = new Identifier(""); + private Identifier infiniburn = null; @Value("minecraft.effects") @Default - private Identifier effects = new Identifier(""); + private Identifier effects = null; @Value("minecraft.ambient-light") @Default - private Float ambientLight = Float.MAX_VALUE; + private Float ambientLight = null; @Value("minecraft.monster-settings") @Default - private MonsterSettings monsterSettings = new MonsterSettings(false, false, new TerraIntProvider(new ConstantRange(0, 1)), 0); - + private MonsterSettingsConfig monsterSettings = null; + + @Value("minecraft.sealevel") @Default - private Integer sealevel = 0; + private Integer sealevel = 62; //TODO AUTO PULL DEFAULT + + public String getVanillaDimension() { + return vanillaDimension; + } public Long getFixedTime() { return fixedTime; @@ -131,10 +141,10 @@ public class VanillaWorldProperties implements ConfigTemplate, Properties { return ambientLight; } - public MonsterSettings getMonsterSettings() { + public MonsterSettingsConfig getMonsterSettings() { return monsterSettings; } - + public Integer getSealevel() { return sealevel; } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java index 234ea2940..80b9deb59 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java @@ -1,62 +1,85 @@ package com.dfsek.terra.mod.util; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.mod.ModPlatform; +import com.dfsek.terra.mod.config.MonsterSettingsConfig; import com.dfsek.terra.mod.config.VanillaBiomeProperties; import com.dfsek.terra.mod.config.VanillaWorldProperties; -import net.minecraft.tag.TagKey; +import com.dfsek.terra.mod.implmentation.TerraIntProvider; + +import net.minecraft.registry.BuiltinRegistries; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.TagKey; 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.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; +import net.minecraft.world.dimension.DimensionType.MonsterSettings; +import org.jetbrains.annotations.NotNull; import java.util.OptionalLong; public class DimensionUtil { - protected static RegistryKey registerDimension(Identifier identifier, - DimensionType dimension) { - BuiltinRegistries.add(BuiltinRegistries.DIMENSION_TYPE, - registerKey(identifier) - .getValue(), - dimension); - return getDimensionKey(identifier); - } - - public static RegistryKey registerKey(Identifier identifier) { - return RegistryKey.of(Registry.DIMENSION_KEY, identifier); - } - public static RegistryKey getDimensionKey(Identifier identifier) { - return BuiltinRegistries.DIMENSION_TYPE.getKey(BuiltinRegistries.DIMENSION_TYPE.get(identifier)).orElseThrow(); - } - - protected static RegistryKey registerDimension(ConfigPack pack) { + public static DimensionType createDimension(ConfigPack pack, ModPlatform platform) { VanillaWorldProperties vanillaWorldProperties; + MonsterSettingsConfig monsterSettingsConfig; if (pack.getContext().has(VanillaBiomeProperties.class)) { vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); } else { vanillaWorldProperties = new VanillaWorldProperties(); } - - DimensionType overworldDimensionType = new DimensionType( - vanillaWorldProperties.getFixedTime() == null ? OptionalLong.empty() : OptionalLong.of(vanillaWorldProperties.getFixedTime()), - vanillaWorldProperties.getHasSkyLight(), - vanillaWorldProperties.getHasCeiling(), - vanillaWorldProperties.getUltraWarm(), - vanillaWorldProperties.getNatural(), - vanillaWorldProperties.getCoordinateScale(), - vanillaWorldProperties.getBedWorks(), - vanillaWorldProperties.getRespawnAnchorWorks(), - vanillaWorldProperties.getHeight().getMin(), - vanillaWorldProperties.getHeight().getMax(), - vanillaWorldProperties.getLogicalHeight(), - TagKey.of(Registry.BLOCK_KEY, vanillaWorldProperties.getInfiniburn()), - vanillaWorldProperties.getEffects(), - vanillaWorldProperties.getAmbientLight(), - vanillaWorldProperties.getMonsterSettings()); - - return registerDimension(new Identifier("terra", pack.getID().toLowerCase()), overworldDimensionType); + if (vanillaWorldProperties.getMonsterSettings() != null) { + monsterSettingsConfig = vanillaWorldProperties.getMonsterSettings(); + } else { + monsterSettingsConfig = new MonsterSettingsConfig(); + } + + Registry dimensionTypeRegistry = platform.dimensionTypeRegistry(); + + DimensionType defaultDimension = dimensionTypeRegistry.get(new Identifier(vanillaWorldProperties.getVanillaDimension())); + + assert defaultDimension != null; + MonsterSettings monsterSettings = getMonsterSettings(defaultDimension, monsterSettingsConfig); + + DimensionType dimension = new DimensionType( + vanillaWorldProperties.getFixedTime() == null ? defaultDimension.fixedTime() : OptionalLong.of( + vanillaWorldProperties.getFixedTime()), + vanillaWorldProperties.getHasSkyLight() == null ? defaultDimension.hasSkyLight() : vanillaWorldProperties.getHasSkyLight(), + vanillaWorldProperties.getHasCeiling() == null ? defaultDimension.hasCeiling() : vanillaWorldProperties.getHasCeiling(), + vanillaWorldProperties.getUltraWarm() == null ? defaultDimension.ultrawarm() : vanillaWorldProperties.getUltraWarm(), + vanillaWorldProperties.getNatural() == null ? defaultDimension.natural() : vanillaWorldProperties.getNatural(), + vanillaWorldProperties.getCoordinateScale() == null ? defaultDimension.coordinateScale() : vanillaWorldProperties.getCoordinateScale(), + vanillaWorldProperties.getBedWorks() == null ? defaultDimension.bedWorks() : vanillaWorldProperties.getBedWorks(), + vanillaWorldProperties.getRespawnAnchorWorks() == null ? defaultDimension.respawnAnchorWorks() : vanillaWorldProperties.getRespawnAnchorWorks(), + vanillaWorldProperties.getHeight() == null ? defaultDimension.minY() : vanillaWorldProperties.getHeight().getMin(), + vanillaWorldProperties.getHeight() == null ? defaultDimension.height() : vanillaWorldProperties.getHeight().getMax(), + vanillaWorldProperties.getLogicalHeight() == null ? defaultDimension.logicalHeight() : vanillaWorldProperties.getLogicalHeight(), + vanillaWorldProperties.getInfiniburn() == null ? defaultDimension.infiniburn() : TagKey.of(RegistryKeys.BLOCK, vanillaWorldProperties.getInfiniburn()), + vanillaWorldProperties.getEffects() == null ? defaultDimension.effects() : vanillaWorldProperties.getEffects(), + vanillaWorldProperties.getAmbientLight() == null ? defaultDimension.ambientLight() : vanillaWorldProperties.getAmbientLight(), + monsterSettings + ); + + return dimension; + } + + @NotNull + private static MonsterSettings getMonsterSettings(DimensionType defaultDimension, MonsterSettingsConfig monsterSettingsConfig) { + MonsterSettings defaultMonsterSettings = defaultDimension.monsterSettings(); + + + MonsterSettings monsterSettings = new MonsterSettings( + monsterSettingsConfig.getPiglinSafe() == null ? defaultMonsterSettings.piglinSafe() : monsterSettingsConfig.getPiglinSafe(), + monsterSettingsConfig.getHasRaids() == null ? defaultMonsterSettings.hasRaids() : monsterSettingsConfig.getHasRaids(), + monsterSettingsConfig.getMonsterSpawnLight() == null ? defaultMonsterSettings.monsterSpawnLightTest() : new TerraIntProvider( + monsterSettingsConfig.getMonsterSpawnLight()), + monsterSettingsConfig.getMonsterSpawnBlockLightLimit() == null ? defaultMonsterSettings.monsterSpawnBlockLightLimit() : monsterSettingsConfig.getMonsterSpawnBlockLightLimit() + ); + return monsterSettings; } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index 6efeab949..e47ebb4f4 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -15,16 +15,14 @@ import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.intprovider.ConstantIntProvider; + import net.minecraft.util.math.intprovider.IntProviderType; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.RegistryEntry; -import net.minecraft.util.registry.RegistryKey; + import net.minecraft.world.WorldAccess; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome.Builder; import net.minecraft.world.biome.BiomeEffects; -import net.minecraft.world.biome.BiomeEffects.GrassColorModifier; + import net.minecraft.world.biome.GenerationSettings; import net.minecraft.world.gen.feature.ConfiguredFeature; import org.slf4j.Logger; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 1a2ebb360..6270ac0b9 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -4,17 +4,7 @@ import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.client.gui.screen.CustomizeBuffetLevelScreen; -import net.minecraft.client.gui.screen.CustomizeFlatLevelScreen; -import net.minecraft.client.gui.screen.world.LevelScreenProvider; -import net.minecraft.structure.StructureSet; import net.minecraft.util.Identifier; -import net.minecraft.util.math.noise.DoublePerlinNoiseSampler.NoiseParameters; -import net.minecraft.util.registry.BuiltinRegistries; -import net.minecraft.util.registry.DynamicRegistryManager; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.RegistryEntry; -import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.biome.Biome; import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; @@ -74,10 +64,6 @@ import com.dfsek.terra.mod.generation.TerraBiomeSource; public class PresetUtil { private static final Logger LOGGER = LoggerFactory.getLogger(PresetUtil.class); private static final List PRESETS = new ArrayList<>(); - - public static RegistryKey getPresetKey(Identifier identifier) { - return RegistryKey.of(Registry.WORLD_PRESET_KEY, identifier); - } public static Pair createDefault(ConfigPack pack, ModPlatform platform) { Registry dimensionTypeRegistry = platform.dimensionTypeRegistry(); @@ -127,7 +113,7 @@ public class PresetUtil { metaPack.packs().forEach((key, pack) -> { Identifier demensionIdentifier = new Identifier(key); - DimensionType dimensionType = dimensionTypeRegistry.get(demensionIdentifier); + DimensionType dimensionType = DimensionUtil.createDimension(pack, platform); RegistryEntry dimensionTypeRegistryEntry = dimensionTypeRegistry.getEntry(dimensionType); TerraBiomeSource biomeSource = new TerraBiomeSource(pack); From a9f973cae996da9e1a1948e1e0e975f00b7f774f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 15:57:04 -0700 Subject: [PATCH 015/116] WIP Random Changes --- .../structure/StructureCommandAddon.java | 9 ++- .../distributors/PaddedGridDistributor.java | 8 ++- .../addons/flora/flora/gen/TerraFlora.java | 9 ++- .../locators/GaussianRandomLocator.java | 9 +-- .../locator/locators/RandomLocator.java | 9 +-- .../terra/addons/ore/ores/VanillaOre.java | 2 +- .../structure/structures/loot/Entry.java | 6 +- .../structures/loot/LootTableImpl.java | 6 +- .../structure/structures/loot/Pool.java | 10 +-- .../loot/functions/AmountFunction.java | 6 +- .../loot/functions/DamageFunction.java | 6 +- .../loot/functions/EnchantFunction.java | 6 +- .../loot/functions/LootFunction.java | 6 +- .../feature/FeatureGenerationStage.java | 63 ++++++++++--------- .../shortcut/block/SingletonStructure.java | 4 +- .../structure/mutator/MutatedStructure.java | 4 +- .../terra/addons/sponge/SpongeStructure.java | 4 +- .../terrascript/script/StructureScript.java | 8 +-- .../script/TerraImplementationArguments.java | 12 ++-- .../script/functions/LootFunction.java | 62 +++++++++--------- .../dfsek/terra/api/structure/LootTable.java | 14 ++--- .../dfsek/terra/api/structure/Structure.java | 4 +- .../dfsek/terra/api/util/ConstantRange.java | 4 +- .../dfsek/terra/api/util/PopulationUtil.java | 14 +++-- .../java/com/dfsek/terra/api/util/Range.java | 8 +-- .../collection/ProbabilityCollection.java | 6 +- .../BukkitChunkGeneratorWrapper.java | 5 +- .../terra/mod/util/MinecraftAdapter.java | 47 ++++++++++++++ 28 files changed, 208 insertions(+), 143 deletions(-) diff --git a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java index 438546137..1332feddf 100644 --- a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java +++ b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java @@ -6,9 +6,10 @@ import cloud.commandframework.arguments.standard.EnumArgument; import cloud.commandframework.arguments.standard.LongArgument; import cloud.commandframework.context.CommandContext; -import java.util.Random; - -import com.dfsek.terra.addons.manifest.api.AddonInitializer; +import com.dfsek.terra.addons.manifest.api.MonadAddonInitializer; +import com.dfsek.terra.addons.manifest.api.monad.Do; +import com.dfsek.terra.addons.manifest.api.monad.Get; +import com.dfsek.terra.addons.manifest.api.monad.Init; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.command.CommandSender; @@ -22,6 +23,8 @@ import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.reflection.TypeKey; +import java.util.random.RandomGenerator; +import java.util.random.RandomGeneratorFactory; public class StructureCommandAddon implements AddonInitializer { @Inject diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java index 1779c98d1..b4a438d4c 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.feature.distributor.distributors; -import java.util.Random; +import java.util.random.RandomGenerator; +import java.util.random.RandomGeneratorFactory; import com.dfsek.terra.api.structure.feature.Distributor; import com.dfsek.terra.api.util.MathUtil; @@ -24,8 +25,9 @@ public class PaddedGridDistributor implements Distributor { int cellX = Math.floorDiv(x, cellWidth); int cellZ = Math.floorDiv(z, cellWidth); - Random random = new Random((MathUtil.murmur64(MathUtil.squash(cellX, cellZ)) ^ seed) + salt); - + RandomGenerator random = RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create( + (murmur64(MathUtil.squash(cellX, cellZ)) ^ seed) + salt); + int pointX = random.nextInt(width) + cellX * cellWidth; int pointZ = random.nextInt(width) + cellZ * cellWidth; 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 661b820f2..027772c01 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 @@ -10,7 +10,8 @@ package com.dfsek.terra.addons.flora.flora.gen; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; -import java.util.Random; +import java.util.random.RandomGenerator; +import java.util.random.RandomGeneratorFactory; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.properties.enums.Direction; @@ -71,7 +72,7 @@ public class TerraFlora implements Structure { } @Override - public boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation) { + public boolean generate(Vector3Int location, WritableWorld world, RandomGenerator random, Rotation rotation) { boolean doRotation = testRotation.size() > 0; int size = layers.size(); int c = ceiling ? -1 : 1; @@ -86,7 +87,9 @@ public class TerraFlora implements Structure { location.getZ(), world.getSeed()); if(doRotation) { Direction oneFace = new ArrayList<>(faces).get( - new Random(location.getX() ^ location.getZ()).nextInt(faces.size())); // Get random face. + RandomGeneratorFactory.of("Xoroshiro128PlusPlus") + .create(location.getX() ^ location.getZ()) + .nextInt(faces.size())); // Get RandomGenerator face. } world.setBlockState(location.mutable().add(0, i + c, 0).immutable(), data, physics); } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/GaussianRandomLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/GaussianRandomLocator.java index db1279ab9..1a3501cc8 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/GaussianRandomLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/GaussianRandomLocator.java @@ -7,7 +7,8 @@ package com.dfsek.terra.addons.feature.locator.locators; -import java.util.Random; +import java.util.random.RandomGenerator; +import java.util.random.RandomGeneratorFactory; import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; @@ -39,9 +40,9 @@ public class GaussianRandomLocator implements Locator { seed = 31 * seed + column.getX(); seed = 31 * seed + column.getZ(); seed += salt; - - Random r = new Random(seed); - + + RandomGenerator r = RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create(seed); + int size = points.get(r); 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 1f8dbd19a..93364be07 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 @@ -7,7 +7,8 @@ package com.dfsek.terra.addons.feature.locator.locators; -import java.util.Random; +import java.util.random.RandomGenerator; +import java.util.random.RandomGeneratorFactory; import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; @@ -35,9 +36,9 @@ public class RandomLocator implements Locator { seed = 31 * seed + column.getX(); seed = 31 * seed + column.getZ(); seed += salt; - - Random r = new Random(seed); - + + RandomGenerator r = RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create(seed); + int size = points.get(r); BinaryColumnBuilder results = column.newBinaryColumn(); 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 f51ac47ef..931ae09e5 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 @@ -9,7 +9,7 @@ package com.dfsek.terra.addons.ore.ores; import java.util.BitSet; import java.util.Map; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; 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 106147229..6bd3b615f 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 @@ -12,7 +12,7 @@ import org.json.simple.JSONObject; import java.util.ArrayList; import java.util.List; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.addons.structure.structures.loot.functions.AmountFunction; import com.dfsek.terra.addons.structure.structures.loot.functions.DamageFunction; @@ -85,11 +85,11 @@ public class Entry { /** * Fetches a single ItemStack from the Entry, applying all functions to it. * - * @param r The Random instance to apply functions with + * @param r The RandomGenerator instance to apply functions with * * @return ItemStack - The ItemStack with all functions applied. */ - public ItemStack getItem(Random r) { + public ItemStack getItem(RandomGenerator r) { ItemStack item = this.item.newItemStack(1); for(LootFunction f : functions) { item = f.apply(item, r); 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 cebf93ef2..7aa310bde 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 @@ -14,7 +14,7 @@ import org.json.simple.parser.ParseException; import java.util.ArrayList; import java.util.List; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.inventory.Inventory; @@ -44,7 +44,7 @@ public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable { } @Override - public void fillInventory(Inventory i, Random r) { + public void fillInventory(Inventory i, RandomGenerator r) { List loot = getLoot(r); for(ItemStack stack : loot) { int attempts = 0; @@ -70,7 +70,7 @@ public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable { } @Override - public List getLoot(Random r) { + public List getLoot(RandomGenerator r) { List itemList = new ArrayList<>(); for(Pool pool : pools) { itemList.addAll(pool.getItems(r)); 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 dd80e03ec..3a2727b20 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 @@ -12,7 +12,7 @@ import org.json.simple.JSONObject; import java.util.ArrayList; import java.util.List; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.inventory.ItemStack; @@ -50,14 +50,14 @@ public class Pool { } /** - * Fetches a list of items from the pool using the provided Random instance. + * Fetches a list of items from the pool using the provided RandomGenerator instance. * - * @param r The Random instance to use. + * @param r The RandomGenerator instance to use. * * @return List<ItemStack> - The list of items fetched. */ - public List getItems(Random r) { - + public List getItems(RandomGenerator 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 2605840f6..f33e87858 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 @@ -8,7 +8,7 @@ package com.dfsek.terra.addons.structure.structures.loot.functions; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.inventory.ItemStack; @@ -35,12 +35,12 @@ public class AmountFunction implements LootFunction { * Applies the function to an ItemStack. * * @param original The ItemStack on which to apply the function. - * @param r The Random instance to use. + * @param r The RandomGenerator instance to use. * * @return - ItemStack - The mutated ItemStack. */ @Override - public ItemStack apply(ItemStack original, Random r) { + public ItemStack apply(ItemStack original, RandomGenerator r) { original.setAmount(r.nextInt(max - min + 1) + min); return original; } 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 c90090199..6e688b50e 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 @@ -7,7 +7,7 @@ package com.dfsek.terra.addons.structure.structures.loot.functions; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Damageable; @@ -36,12 +36,12 @@ public class DamageFunction implements LootFunction { * Applies the function to an ItemStack. * * @param original The ItemStack on which to apply the function. - * @param r The Random instance to use. + * @param r The RandomGenerator instance to use. * * @return - ItemStack - The mutated ItemStack. */ @Override - public ItemStack apply(ItemStack original, Random r) { + public ItemStack apply(ItemStack original, RandomGenerator r) { if(original == null) return null; if(!original.isDamageable()) return original; ItemMeta meta = original.getItemMeta(); 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 e741bd9f5..8d8e8a787 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 @@ -14,7 +14,7 @@ import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.inventory.ItemStack; @@ -41,12 +41,12 @@ public class EnchantFunction implements LootFunction { * Applies the function to an ItemStack. * * @param original The ItemStack on which to apply the function. - * @param r The Random instance to use. + * @param r The RandomGenerator instance to use. * * @return - ItemStack - The mutated ItemStack. */ @Override - public ItemStack apply(ItemStack original, Random r) { + public ItemStack apply(ItemStack original, RandomGenerator r) { if(original.getItemMeta() == null) return original; double enchant = (r.nextDouble() * (max - min)) + min; 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 a881ca634..1a3c03f0c 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 @@ -8,7 +8,7 @@ package com.dfsek.terra.addons.structure.structures.loot.functions; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.inventory.ItemStack; @@ -21,9 +21,9 @@ public interface LootFunction { * Applies the function to an ItemStack. * * @param original The ItemStack on which to apply the function. - * @param r The Random instance to use. + * @param r The RandomGenerator instance to use. * * @return - ItemStack - The mutated ItemStack. */ - ItemStack apply(ItemStack original, Random r); + ItemStack apply(ItemStack original, RandomGenerator r); } 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 6baf88b7a..942f53ca3 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,7 +8,8 @@ package com.dfsek.terra.addons.generation.feature; import java.util.Collections; -import java.util.Random; +import java.util.random.RandomGenerator; +import java.util.random.RandomGeneratorFactory; import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures; import com.dfsek.terra.api.Platform; @@ -52,35 +53,37 @@ public class FeatureGenerationStage implements GenerationStage, StringIdentifiab int tx = cx + chunkX; int tz = cz + chunkZ; world.getBiomeProvider() - .getColumn(tx, tz, world) - .forRanges(resolution, (min, max, biome) -> { - for(int subChunkX = 0; subChunkX < resolution; subChunkX++) { - for(int subChunkZ = 0; subChunkZ < resolution; subChunkZ++) { - int x = subChunkX + tx; - int z = subChunkZ + tz; - long coordinateSeed = (seed * 31 + x) * 31 + z; - Column column = world.column(x, z); - biome.getContext() - .get(biomeFeaturesKey) - .getFeatures() - .getOrDefault(this, Collections.emptyList()) - .forEach(feature -> { - platform.getProfiler().push(feature.getID()); - if(feature.getDistributor().matches(x, z, seed)) { - feature.getLocator() - .getSuitableCoordinates(column.clamp(min, max)) - .forEach(y -> feature.getStructure(world, x, y, z) - .generate(Vector3Int.of(x, y, z), - world, - new Random(coordinateSeed * 31 + y), - Rotation.NONE) - ); - } - platform.getProfiler().pop(feature.getID()); - }); - } - } - }); + .getColumn(tx, tz, world) + .forRanges(resolution, (min, max, biome) -> { + for(int subChunkX = 0; subChunkX < resolution; subChunkX++) { + for(int subChunkZ = 0; subChunkZ < resolution; subChunkZ++) { + int x = subChunkX + tx; + int z = subChunkZ + tz; + long coordinateSeed = (seed * 31 + x) * 31 + z; + Column column = world.column(x, z); + biome.getContext() + .get(biomeFeaturesKey) + .getFeatures() + .getOrDefault(this, Collections.emptyList()) + .forEach(feature -> { + platform.getProfiler().push(feature.getID()); + if(feature.getDistributor().matches(x, z, seed)) { + feature.getLocator() + .getSuitableCoordinates(column.clamp(min, max)) + .forEach(y -> feature.getStructure(world, x, y, z) + .generate(Vector3Int.of(x, y, z), + world, + RandomGeneratorFactory.of( + "Xoroshiro128PlusPlus") + .create(coordinateSeed * 31 + y), + Rotation.NONE) + ); + } + platform.getProfiler().pop(feature.getID()); + }); + } + } + }); } } platform.getProfiler().pop(profile); diff --git a/common/addons/structure-block-shortcut/src/main/java/com/dfsek/terra/addons/palette/shortcut/block/SingletonStructure.java b/common/addons/structure-block-shortcut/src/main/java/com/dfsek/terra/addons/palette/shortcut/block/SingletonStructure.java index bac5f4373..b8da27192 100644 --- a/common/addons/structure-block-shortcut/src/main/java/com/dfsek/terra/addons/palette/shortcut/block/SingletonStructure.java +++ b/common/addons/structure-block-shortcut/src/main/java/com/dfsek/terra/addons/palette/shortcut/block/SingletonStructure.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.palette.shortcut.block; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.Structure; @@ -17,7 +17,7 @@ public class SingletonStructure implements Structure { } @Override - public boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation) { + public boolean generate(Vector3Int location, WritableWorld world, RandomGenerator random, Rotation rotation) { world.setBlockState(location, blockState); return true; } diff --git a/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java index 30b2d5984..5fbc42028 100644 --- a/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java +++ b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.structure.mutator; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.key.RegistryKey; @@ -32,7 +32,7 @@ public class MutatedStructure implements Structure, Keyed { } @Override - public boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation) { + public boolean generate(Vector3Int location, WritableWorld world, RandomGenerator random, Rotation rotation) { return base.generate(location, world .buffer() diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java index 12ce1f42b..8d7a22324 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java @@ -7,7 +7,7 @@ package com.dfsek.terra.addons.sponge; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.registry.key.Keyed; @@ -36,7 +36,7 @@ public class SpongeStructure implements Structure, Keyed { } @Override - public boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation) { + public boolean generate(Vector3Int location, WritableWorld world, RandomGenerator random, Rotation rotation) { int bX = location.getX(); int bY = location.getY(); int bZ = location.getZ(); 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 45b004a22..c031baa66 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 @@ -14,7 +14,7 @@ import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.addons.terrascript.parser.Parser; import com.dfsek.terra.addons.terrascript.parser.lang.Executable; @@ -131,14 +131,14 @@ public class StructureScript implements Structure, Keyed { @Override @SuppressWarnings("try") - public boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation) { + public boolean generate(Vector3Int location, WritableWorld world, RandomGenerator random, Rotation rotation) { platform.getProfiler().push(profile); boolean result = applyBlock(new TerraImplementationArguments(location, rotation, random, world, 0)); platform.getProfiler().pop(profile); return result; } - - public boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation, int recursions) { + + public boolean generate(Vector3Int location, WritableWorld world, RandomGenerator random, Rotation rotation, int recursions) { platform.getProfiler().push(profile); boolean result = applyBlock(new TerraImplementationArguments(location, rotation, random, world, recursions)); platform.getProfiler().pop(profile); 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 97e69feca..bf38eb183 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 @@ -9,7 +9,7 @@ package com.dfsek.terra.addons.terrascript.script; import java.util.HashMap; import java.util.Map; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.api.util.Rotation; @@ -20,14 +20,14 @@ import com.dfsek.terra.api.world.WritableWorld; public class TerraImplementationArguments implements ImplementationArguments { private final Rotation rotation; - private final Random random; + private final RandomGenerator random; private final WritableWorld world; private final Map marks = new HashMap<>(); private final int recursions; private final Vector3Int origin; private boolean waterlog = false; - - public TerraImplementationArguments(Vector3Int origin, Rotation rotation, Random random, WritableWorld world, int recursions) { + + public TerraImplementationArguments(Vector3Int origin, Rotation rotation, RandomGenerator random, WritableWorld world, int recursions) { this.rotation = rotation; this.random = random; this.world = world; @@ -38,8 +38,8 @@ public class TerraImplementationArguments implements ImplementationArguments { public int getRecursions() { return recursions; } - - public Random getRandom() { + + public RandomGenerator getRandom() { return random; } 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 67dd7fad3..8ddc65d1b 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 @@ -10,8 +10,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Random; - 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.Scope; @@ -30,6 +28,9 @@ import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; import com.dfsek.terra.api.util.vector.Vector3; +import java.util.random.RandomGenerator; +import java.util.random.RandomGeneratorFactory; + public class LootFunction implements Function { private static final Logger LOGGER = LoggerFactory.getLogger(LootFunction.class); @@ -64,34 +65,35 @@ public class LootFunction implements Function { registry.get(RegistryKey.parse(id)) - .ifPresentOrElse(table -> { - Vector3 apply = Vector3.of((int) Math.round(xz.getX()), - y.apply(implementationArguments, scope) - .intValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); - - try { - BlockEntity data = arguments.getWorld().getBlockEntity(apply); - if(!(data instanceof Container container)) { - LOGGER.error("Failed to place loot at {}; block {} is not a container", - apply, data); - return; - } - - LootPopulateEvent event = new LootPopulateEvent(container, table, - arguments.getWorld().getPack(), script); - platform.getEventManager().callEvent(event); - if(event.isCancelled()) return; - - event.getTable().fillInventory(container.getInventory(), - new Random(apply.hashCode())); - data.update(false); - } catch(Exception e) { - LOGGER.error("Could not apply loot at {}", apply, e); - e.printStackTrace(); - } - }, - () -> LOGGER.error("No such loot table {}", id)); + .ifPresentOrElse(table -> { + Vector3 apply = Vector3.of(FastMath.roundToInt(xz.getX()), + y.apply(implementationArguments, scope) + .intValue(), + FastMath.roundToInt(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); + + try { + BlockEntity data = arguments.getWorld().getBlockEntity(apply); + if(!(data instanceof Container container)) { + LOGGER.error("Failed to place loot at {}; block {} is not a container", + apply, data); + return; + } + + LootPopulateEvent event = new LootPopulateEvent(container, table, + arguments.getWorld().getPack(), script); + platform.getEventManager().callEvent(event); + if(event.isCancelled()) return; + + event.getTable().fillInventory(container.getInventory(), + RandomGeneratorFactory.of( + "Xoroshiro128PlusPlus").create(apply.hashCode())); + data.update(false); + } catch(Exception e) { + LOGGER.error("Could not apply loot at {}", apply, e); + e.printStackTrace(); + } + }, + () -> LOGGER.error("No such loot table {}", id)); return null; } 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 index 3108dd1f3..ecfe735bd 100644 --- 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 @@ -10,7 +10,7 @@ package com.dfsek.terra.api.structure; import org.jetbrains.annotations.ApiStatus.Experimental; import java.util.List; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.inventory.Inventory; import com.dfsek.terra.api.inventory.ItemStack; @@ -22,16 +22,16 @@ public interface LootTable { * Fills an Inventory with loot. * * @param i The Inventory to fill. - * @param r The The Random instance to use. + * @param r The The RandomGenerator instance to use. */ - void fillInventory(Inventory i, Random r); - + void fillInventory(Inventory i, RandomGenerator r); + /** - * Fetches a list of ItemStacks from the loot table using the given Random instance. + * Fetches a list of ItemStacks from the loot table using the given RandomGenerator instance. * - * @param r The Random instance to use. + * @param r The RandomGenerator instance to use. * * @return List<ItemStack> - The list of loot fetched. */ - List getLoot(Random r); + List getLoot(RandomGenerator 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 index d5f3ca7e2..d1e9a83ec 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 @@ -7,7 +7,7 @@ package com.dfsek.terra.api.structure; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.vector.Vector3Int; @@ -15,5 +15,5 @@ import com.dfsek.terra.api.world.WritableWorld; public interface Structure { - boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation); + boolean generate(Vector3Int location, WritableWorld world, RandomGenerator random, Rotation rotation); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java b/common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java index 68b062d21..6b1231506 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java @@ -10,7 +10,7 @@ package com.dfsek.terra.api.util; import org.jetbrains.annotations.NotNull; import java.util.Iterator; -import java.util.Random; +import java.util.random.RandomGenerator; public class ConstantRange implements Range { @@ -36,7 +36,7 @@ public class ConstantRange implements Range { } @Override - public int get(Random r) { + public int get(RandomGenerator r) { return r.nextInt(min, max); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java index f3ea39f10..2ec5f2d91 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java @@ -7,18 +7,20 @@ package com.dfsek.terra.api.util; -import java.util.Random; +import java.util.random.RandomGenerator; +import java.util.random.RandomGeneratorFactory; import com.dfsek.terra.api.world.chunk.Chunk; public final class PopulationUtil { - public static Random getRandom(Chunk c) { + public static RandomGenerator getRandom(Chunk c) { return getRandom(c, 0); } - - public static Random getRandom(Chunk c, long salt) { - return new Random(getCarverChunkSeed(c.getX(), c.getZ(), c.getWorld().getSeed() + salt)); + + public static RandomGenerator getRandom(Chunk c, long salt) { + return RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create( + getCarverChunkSeed(c.getX(), c.getZ(), c.getWorld().getSeed() + salt)); } /** @@ -31,7 +33,7 @@ public final class PopulationUtil { * @return long - The carver seed. */ public static long getCarverChunkSeed(int chunkX, int chunkZ, long seed) { - Random r = new Random(seed); + RandomGenerator r = RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create(seed); return chunkX * r.nextLong() ^ chunkZ * r.nextLong() ^ seed; } } 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 f42bc174d..c851bd621 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,17 +10,17 @@ package com.dfsek.terra.api.util; import org.jetbrains.annotations.NotNull; import java.util.Iterator; -import java.util.Random; import java.util.function.Supplier; +import java.util.random.RandomGenerator; public interface Range extends Iterable { Range multiply(int mult); Range reflect(int pt); - - int get(Random r); - + + int get(RandomGenerator r); + Range intersects(Range other); Range add(int add); 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 4aad8b7e1..8d1a06f43 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 @@ -15,9 +15,9 @@ 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; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; @@ -43,7 +43,7 @@ public class ProbabilityCollection implements Collection { } @SuppressWarnings("unchecked") - public E get(Random r) { + public E get(RandomGenerator r) { if(array.length == 0) return null; return (E) array[r.nextInt(array.length)]; } @@ -197,7 +197,7 @@ public class ProbabilityCollection implements Collection { } @Override - public T get(Random r) { + public T get(RandomGenerator r) { return single; } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java index bd6796bad..192dbecf7 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java @@ -27,7 +27,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; -import java.util.Random; +import java.util.random.RandomGenerator; +import java.util.stream.Collectors; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; @@ -62,7 +63,7 @@ public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGener } @Override - public void generateNoise(@NotNull WorldInfo worldInfo, @NotNull Random random, int x, int z, @NotNull ChunkData chunkData) { + public void generateNoise(@NotNull WorldInfo worldInfo, @NotNull RandomGenerator random, int x, int z, @NotNull ChunkData chunkData) { BukkitWorldProperties properties = new BukkitWorldProperties(worldInfo); delegate.generateChunkData(new BukkitProtoChunk(chunkData), properties, pack.getBiomeProvider(), x, z); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java index 25ca7e4c5..973861bd3 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java @@ -18,11 +18,14 @@ package com.dfsek.terra.mod.util; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.random.Random; import net.minecraft.world.HeightLimitView; import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.info.WorldProperties; +import java.util.random.RandomGenerator; + public final class MinecraftAdapter { @@ -53,4 +56,48 @@ public final class MinecraftAdapter { } }; } + + public static RandomGenerator adapt(Random random) { + return new RandomGenerator() { + @Override + public boolean nextBoolean() { + return random.nextBoolean(); + } + + @Override + public float nextFloat() { + return random.nextFloat(); + } + + @Override + public double nextDouble() { + return random.nextDouble(); + } + + @Override + public int nextInt() { + return random.nextInt(); + } + + @Override + public int nextInt(int bound) { + return random.nextInt(bound); + } + + @Override + public long nextLong() { + return random.nextLong(); + } + + @Override + public double nextGaussian() { + return random.nextGaussian(); + } + + @Override + public int nextInt(int origin, int bound) { + return random.nextBetween(origin, bound); + } + }; + } } From 47c8cb31688b7245724aa7559cc0c2234661dc4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 16:00:56 -0700 Subject: [PATCH 016/116] Fix up random changes --- .../dfsek/terra/addons/ore/ores/VanillaScatteredOre.java | 8 ++++---- .../com/dfsek/terra/addons/ore/utils/VanillaOreUtils.java | 8 ++++---- .../terra/bukkit/generator/BukkitBlockPopulator.java | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaScatteredOre.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaScatteredOre.java index b7b699490..36be3c577 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaScatteredOre.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaScatteredOre.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.ore.ores; import java.util.Map; -import java.util.Random; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; @@ -24,7 +24,7 @@ public class VanillaScatteredOre extends VanillaOre { } @Override - public boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation) { + public boolean generate(Vector3Int location, WritableWorld world, RandomGenerator random, Rotation rotation) { int i = random.nextInt((int) (size + 1)); Vector3Int.Mutable mutable = Vector3Int.zero().mutable(); @@ -39,7 +39,7 @@ public class VanillaScatteredOre extends VanillaOre { return true; } - private void setPos(Vector3Int.Mutable mutable, Random random, Vector3Int location, int spread) { + private void setPos(Vector3Int.Mutable mutable, RandomGenerator random, Vector3Int location, int spread) { int x = this.getSpread(random, spread); int y = this.getSpread(random, spread); int z = this.getSpread(random, spread); @@ -48,7 +48,7 @@ public class VanillaScatteredOre extends VanillaOre { mutable.setZ(location.getZ() + z); } - private int getSpread(Random random, int spread) { + private int getSpread(RandomGenerator random, int spread) { return Math.round((random.nextFloat() - random.nextFloat()) * (float) spread); } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/utils/VanillaOreUtils.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/utils/VanillaOreUtils.java index f8ede8680..d2b087cbd 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/utils/VanillaOreUtils.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/utils/VanillaOreUtils.java @@ -1,20 +1,20 @@ package com.dfsek.terra.addons.ore.utils; -import java.util.Random; - import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.world.WritableWorld; +import java.util.random.RandomGenerator; + public class VanillaOreUtils { - private static boolean shouldExpose(Random random, double exposedChance) { + private static boolean shouldExpose(RandomGenerator random, double exposedChance) { if(exposedChance >= 1.0F) return true; if(exposedChance <= 0.0F) return false; return random.nextFloat() < exposedChance; } - public static boolean shouldPlace(MaterialSet replaceable, BlockType type, Double exposedChance, Random random, WritableWorld world, + public static boolean shouldPlace(MaterialSet replaceable, BlockType type, Double exposedChance, RandomGenerator random, WritableWorld world, int x, int y, int z) { if(!replaceable.contains(type)) return false; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitBlockPopulator.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitBlockPopulator.java index 27f52de47..b220f961b 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitBlockPopulator.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitBlockPopulator.java @@ -5,12 +5,12 @@ import org.bukkit.generator.LimitedRegion; import org.bukkit.generator.WorldInfo; import org.jetbrains.annotations.NotNull; -import java.util.Random; - import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.bukkit.world.BukkitProtoWorld; +import java.util.Random; + public class BukkitBlockPopulator extends BlockPopulator { private final BlockState air; From 6f03746e418153525f4a1b59da40231c78cd1676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 16:06:31 -0700 Subject: [PATCH 017/116] another fix --- .../commands/structure/StructureCommandAddon.java | 12 +++++++----- .../distributors/PaddedGridDistributor.java | 2 +- .../com/dfsek/terra/addons/ore/ores/VanillaOre.java | 2 +- .../terrascript/script/functions/LootFunction.java | 4 ++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java index 1332feddf..6fd70a973 100644 --- a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java +++ b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java @@ -6,10 +6,8 @@ import cloud.commandframework.arguments.standard.EnumArgument; import cloud.commandframework.arguments.standard.LongArgument; import cloud.commandframework.context.CommandContext; -import com.dfsek.terra.addons.manifest.api.MonadAddonInitializer; -import com.dfsek.terra.addons.manifest.api.monad.Do; -import com.dfsek.terra.addons.manifest.api.monad.Get; -import com.dfsek.terra.addons.manifest.api.monad.Init; + +import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.command.CommandSender; @@ -59,7 +57,11 @@ public class StructureCommandAddon implements AddonInitializer { structure.generate( sender.position().toInt(), sender.world(), - ((Long) context.get("seed") == 0) ? new Random() : new Random(context.get("seed")), + ((Long) context.get("seed") == 0) + ? RandomGeneratorFactory.of("Xoroshiro128PlusPlus") + .create() + : RandomGeneratorFactory.of("Xoroshiro128PlusPlus") + .create(context.get("seed")), context.get("rotation") ); }) diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java index b4a438d4c..b71e0c7f8 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java @@ -26,7 +26,7 @@ public class PaddedGridDistributor implements Distributor { int cellZ = Math.floorDiv(z, cellWidth); RandomGenerator random = RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create( - (murmur64(MathUtil.squash(cellX, cellZ)) ^ seed) + salt); + (MathUtil.murmur64(MathUtil.squash(cellX, cellZ)) ^ seed) + salt); int pointX = random.nextInt(width) + cellX * cellWidth; int pointZ = random.nextInt(width) + cellZ * cellWidth; 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 931ae09e5..6d79f6f19 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 @@ -44,7 +44,7 @@ public class VanillaOre implements Structure { } @Override - public boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation) { + public boolean generate(Vector3Int location, WritableWorld world, RandomGenerator random, Rotation rotation) { float randomRadian = random.nextFloat() * (float) Math.PI; double eighthSize = size / 8.0F; 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 8ddc65d1b..aef79e2e1 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 @@ -66,10 +66,10 @@ public class LootFunction implements Function { registry.get(RegistryKey.parse(id)) .ifPresentOrElse(table -> { - Vector3 apply = Vector3.of(FastMath.roundToInt(xz.getX()), + Vector3 apply = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope) .intValue(), - FastMath.roundToInt(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); + (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); try { BlockEntity data = arguments.getWorld().getBlockEntity(apply); From f6c2795eaf24e65f0d228b4253fbd8a035f689f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 16:12:36 -0700 Subject: [PATCH 018/116] remove debug loging --- .../terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java index e409ea0cb..98dee4b40 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java @@ -65,9 +65,6 @@ public class RegistryLoaderMixin { @SuppressWarnings("unchecked") private static Optional> extractRegistry(List, Object>> instance, RegistryKey> key) { - instance.stream().forEach(k -> { - LOGGER.error(k.toString()); - }); List> matches = instance .stream() .map(Pair::getFirst) From 9d200565d73825badd21587d4a9e870ca8c44926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 16:54:27 -0700 Subject: [PATCH 019/116] more fixes --- .../MinecraftChunkGeneratorWrapper.java | 25 +++-------- .../dfsek/terra/mod/util/MinecraftUtil.java | 7 ++- .../com/dfsek/terra/mod/util/PresetUtil.java | 44 ++++++------------- .../dfsek/terra/lifecycle/util/BiomeUtil.java | 2 +- 4 files changed, 28 insertions(+), 50 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java index acf22cc1d..54284ecaf 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java @@ -17,6 +17,8 @@ package com.dfsek.terra.mod.generation; +import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.mod.config.VanillaBiomeProperties; import com.dfsek.terra.mod.config.VanillaWorldProperties; @@ -75,8 +77,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun private final RegistryEntry settings; private ChunkGenerator delegate; private ConfigPack pack; - - private VanillaWorldProperties vanillaWorldProperties; + public MinecraftChunkGeneratorWrapper(TerraBiomeSource biomeSource, ConfigPack configPack, RegistryEntry settingsSupplier) { @@ -87,11 +88,6 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun this.delegate = pack.getGeneratorProvider().newInstance(pack); logger.info("Loading world with config pack {}", pack.getID()); this.biomeSource = biomeSource; - if (pack.getContext().has(VanillaBiomeProperties.class)) { - vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); - } else { - vanillaWorldProperties = new VanillaWorldProperties(); - } } @Override @@ -117,7 +113,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun @Override public int getWorldHeight() { - return vanillaWorldProperties.getHeight().getMax(); + return settings.value().generationShapeConfig().height(); } @@ -177,15 +173,14 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun @Override public int getSeaLevel() { - return vanillaWorldProperties.getSealevel(); + return settings.value().seaLevel(); } @Override public int getMinimumY() { - return vanillaWorldProperties.getHeight().getMin(); + return settings.value().generationShapeConfig().minimumY(); } - @Override public int getHeight(int x, int z, Type heightmap, HeightLimitView height, NoiseConfig noiseConfig) { WorldProperties properties = MinecraftAdapter.adapt(height, SeedHack.getSeed(noiseConfig.getMultiNoiseSampler())); @@ -223,13 +218,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun this.pack = pack; this.delegate = pack.getGeneratorProvider().newInstance(pack); biomeSource.setPack(pack); - - if (pack.getContext().has(VanillaBiomeProperties.class)) { - vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); - } else { - vanillaWorldProperties = new VanillaWorldProperties(); - } - + logger.debug("Loading world with config pack {}", pack.getID()); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index e47ebb4f4..f1c2031b8 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -24,6 +24,7 @@ import net.minecraft.world.biome.Biome.Builder; import net.minecraft.world.biome.BiomeEffects; import net.minecraft.world.biome.GenerationSettings; +import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.feature.ConfiguredFeature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -109,10 +110,14 @@ public final class MinecraftUtil { TerraIntProvider.TERRA_RANGE_TYPE_TO_INT_PROVIDER_TYPE.put(ConstantRange.class, CONSTANT); } - public static RegistryKey registerKey(Identifier identifier) { + public static RegistryKey registerBiomeKey(Identifier identifier) { return RegistryKey.of(RegistryKeys.BIOME, identifier); } + public static RegistryKey registerDimensionTypeKey(Identifier identifier) { + return RegistryKey.of(RegistryKeys.DIMENSION_TYPE, identifier); + } + public static Biome createBiome(com.dfsek.terra.api.world.biome.Biome biome, Biome vanilla, VanillaBiomeProperties vanillaBiomeProperties) { GenerationSettings.Builder generationSettings = new GenerationSettings.Builder(); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 6270ac0b9..9cf37a4a4 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -26,39 +26,12 @@ import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.mod.ModPlatform; import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; import com.dfsek.terra.mod.generation.TerraBiomeSource; -import net.minecraft.registry.Registry; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.util.Identifier; + import net.minecraft.world.biome.source.MultiNoiseBiomeSource; import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList; import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterLists; import net.minecraft.world.biome.source.TheEndBiomeSource; -import net.minecraft.world.dimension.DimensionOptions; -import net.minecraft.world.dimension.DimensionType; -import net.minecraft.world.dimension.DimensionTypes; -import net.minecraft.world.gen.WorldPreset; -import net.minecraft.world.gen.WorldPresets; -import net.minecraft.world.gen.chunk.ChunkGenerator; -import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; -import net.minecraft.world.gen.chunk.FlatChunkGenerator; -import net.minecraft.world.gen.chunk.FlatChunkGeneratorConfig; import net.minecraft.world.gen.chunk.NoiseChunkGenerator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Optional; - -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.mod.ModPlatform; -import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; -import com.dfsek.terra.mod.generation.TerraBiomeSource; - - public class PresetUtil { @@ -72,7 +45,13 @@ public class PresetUtil { platform.multiNoiseBiomeSourceParameterListRegistry(); - RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow(); + DimensionType dimensionType = DimensionUtil.createDimension(pack, platform); + RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey(new Identifier("overworld")); + + Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); + + RegistryEntry dimensionTypeRegistryEntry = dimensionTypeRegistry.getEntry(dimensionType); + RegistryEntry overworld = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD) .orElseThrow(); @@ -85,7 +64,7 @@ public class PresetUtil { TerraBiomeSource biomeSource = new TerraBiomeSource(pack); ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, overworld); - DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator); + DimensionOptions dimensionOptions = new DimensionOptions(dimensionTypeRegistryEntry, generator); HashMap, DimensionOptions> dimensionMap = new HashMap<>(); @@ -114,6 +93,11 @@ public class PresetUtil { metaPack.packs().forEach((key, pack) -> { Identifier demensionIdentifier = new Identifier(key); DimensionType dimensionType = DimensionUtil.createDimension(pack, platform); + RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey(new Identifier("terra", pack.getID().toLowerCase( + Locale.ROOT))); + + Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); + RegistryEntry dimensionTypeRegistryEntry = dimensionTypeRegistry.getEntry(dimensionType); TerraBiomeSource biomeSource = new TerraBiomeSource(pack); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java index 5d5ab11c0..e02159070 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java @@ -65,7 +65,7 @@ public final class BiomeUtil { .orElseThrow()); } else { ((ProtoPlatformBiome) biome.getPlatformBiome()).setDelegate(Registry.registerReference(registry, - MinecraftUtil.registerKey(identifier) + MinecraftUtil.registerBiomeKey(identifier) .getValue(), minecraftBiome)); } From 7ca24faad3bfea533d97d78d6779690e7815c2bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 17:15:54 -0700 Subject: [PATCH 020/116] fix loading --- .../main/java/com/dfsek/terra/mod/MinecraftAddon.java | 9 +++------ .../java/com/dfsek/terra/mod/util/DimensionUtil.java | 6 ++---- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java index 3a6d70b3c..70a0f24bb 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java @@ -53,12 +53,9 @@ public abstract class MinecraftAddon implements BaseAddon { public void initialize() { modPlatform.getEventManager() .getHandler(FunctionalEventHandler.class) - .register(this, ConfigurationLoadEvent.class) - .then(event -> { - if(event.is(ConfigPack.class)) { - event.getLoadedObject(ConfigPack.class).getContext().put(event.load(new VanillaWorldProperties())); - } - }) + .register(this, ConfigPackPostLoadEvent.class) + .then(event -> event.getPack().getContext().put(event.loadTemplate(new VanillaWorldProperties()))) + .priority(100) .global(); modPlatform.getEventManager() .getHandler(FunctionalEventHandler.class) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java index 80b9deb59..4d604da29 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java @@ -28,7 +28,7 @@ public class DimensionUtil { public static DimensionType createDimension(ConfigPack pack, ModPlatform platform) { VanillaWorldProperties vanillaWorldProperties; MonsterSettingsConfig monsterSettingsConfig; - if (pack.getContext().has(VanillaBiomeProperties.class)) { + if (pack.getContext().has(VanillaWorldProperties.class)) { vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); } else { vanillaWorldProperties = new VanillaWorldProperties(); @@ -46,7 +46,7 @@ public class DimensionUtil { assert defaultDimension != null; MonsterSettings monsterSettings = getMonsterSettings(defaultDimension, monsterSettingsConfig); - DimensionType dimension = new DimensionType( + return new DimensionType( vanillaWorldProperties.getFixedTime() == null ? defaultDimension.fixedTime() : OptionalLong.of( vanillaWorldProperties.getFixedTime()), vanillaWorldProperties.getHasSkyLight() == null ? defaultDimension.hasSkyLight() : vanillaWorldProperties.getHasSkyLight(), @@ -64,8 +64,6 @@ public class DimensionUtil { vanillaWorldProperties.getAmbientLight() == null ? defaultDimension.ambientLight() : vanillaWorldProperties.getAmbientLight(), monsterSettings ); - - return dimension; } @NotNull From 56b428d501f56e6e3c0b64118a10bb1952605c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 17:19:32 -0700 Subject: [PATCH 021/116] refactor --- .../dfsek/terra/mod/util/DimensionUtil.java | 9 +-- .../com/dfsek/terra/mod/util/PresetUtil.java | 79 ++++++++++--------- 2 files changed, 42 insertions(+), 46 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java index 4d604da29..37f1442b7 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java @@ -25,14 +25,9 @@ import java.util.OptionalLong; public class DimensionUtil { - public static DimensionType createDimension(ConfigPack pack, ModPlatform platform) { - VanillaWorldProperties vanillaWorldProperties; + public static DimensionType createDimension(VanillaWorldProperties vanillaWorldProperties, ModPlatform platform) { + MonsterSettingsConfig monsterSettingsConfig; - if (pack.getContext().has(VanillaWorldProperties.class)) { - vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); - } else { - vanillaWorldProperties = new VanillaWorldProperties(); - } if (vanillaWorldProperties.getMonsterSettings() != null) { monsterSettingsConfig = vanillaWorldProperties.getMonsterSettings(); } else { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 9cf37a4a4..95d1184df 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -1,5 +1,7 @@ package com.dfsek.terra.mod.util; +import com.dfsek.terra.mod.config.VanillaWorldProperties; + import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; @@ -45,30 +47,14 @@ public class PresetUtil { platform.multiNoiseBiomeSourceParameterListRegistry(); - DimensionType dimensionType = DimensionUtil.createDimension(pack, platform); - RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey(new Identifier("overworld")); - - Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); - - RegistryEntry dimensionTypeRegistryEntry = dimensionTypeRegistry.getEntry(dimensionType); - - RegistryEntry overworld = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD) - .orElseThrow(); - - Identifier generatorID = Identifier.of("terra", pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase( Locale.ROOT)); PRESETS.add(generatorID); - TerraBiomeSource biomeSource = new TerraBiomeSource(pack); - ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, overworld); - - DimensionOptions dimensionOptions = new DimensionOptions(dimensionTypeRegistryEntry, generator); - HashMap, DimensionOptions> dimensionMap = new HashMap<>(); - dimensionMap.put(DimensionOptions.OVERWORLD, dimensionOptions); + insertCustom(platform, "minecraft:overworld", pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap); insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), dimensionMap); @@ -91,28 +77,7 @@ public class PresetUtil { HashMap, DimensionOptions> dimensionMap = new HashMap<>(); metaPack.packs().forEach((key, pack) -> { - Identifier demensionIdentifier = new Identifier(key); - DimensionType dimensionType = DimensionUtil.createDimension(pack, platform); - RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey(new Identifier("terra", pack.getID().toLowerCase( - Locale.ROOT))); - - Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); - - RegistryEntry dimensionTypeRegistryEntry = dimensionTypeRegistry.getEntry(dimensionType); - - TerraBiomeSource biomeSource = new TerraBiomeSource(pack); - - RegistryEntry generatorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(demensionIdentifier)); - if (key.equals("minecraft:the_nether") || key.equals("minecraft:the_end")) { //TODO REMOVE WHEN ADDING CUSTOM GEN SETTINGS - Identifier demensionIdentifier2 = new Identifier(key.replace("the_", "")); - generatorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(demensionIdentifier2)); - } - - ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, generatorSettings); - - DimensionOptions dimensionOptions = new DimensionOptions(dimensionTypeRegistryEntry, generator); - RegistryKey dimensionOptionsRegistryKey = RegistryKey.of(RegistryKeys.DIMENSION, demensionIdentifier); - dimensionMap.put(dimensionOptionsRegistryKey, dimensionOptions); + insertCustom(platform, key, pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap); }); insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), dimensionMap); @@ -122,6 +87,42 @@ public class PresetUtil { return Pair.of(generatorID, preset); } + private static void insertCustom(ModPlatform platform, String key, ConfigPack pack, Registry dimensionTypeRegistry, + Registry chunkGeneratorSettingsRegistry, + HashMap, DimensionOptions> dimensionMap) { + Identifier demensionIdentifier = new Identifier(key); + + VanillaWorldProperties vanillaWorldProperties; + + if (pack.getContext().has(VanillaWorldProperties.class)) { + vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); + } else { + vanillaWorldProperties = new VanillaWorldProperties(); + } + + DimensionType dimensionType = DimensionUtil.createDimension(vanillaWorldProperties, platform); + RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey(new Identifier("terra", pack.getID().toLowerCase( + Locale.ROOT))); + + Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); + + RegistryEntry dimensionTypeRegistryEntry = dimensionTypeRegistry.getEntry(dimensionType); + + TerraBiomeSource biomeSource = new TerraBiomeSource(pack); + + RegistryEntry generatorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(demensionIdentifier)); + if (key.equals("minecraft:the_nether") || key.equals("minecraft:the_end")) { //TODO REMOVE WHEN ADDING CUSTOM GEN SETTINGS + Identifier demensionIdentifier2 = new Identifier(key.replace("the_", "")); + generatorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(demensionIdentifier2)); + } + + ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, generatorSettings); + + DimensionOptions dimensionOptions = new DimensionOptions(dimensionTypeRegistryEntry, generator); + RegistryKey dimensionOptionsRegistryKey = RegistryKey.of(RegistryKeys.DIMENSION, demensionIdentifier); + dimensionMap.put(dimensionOptionsRegistryKey, dimensionOptions); + } + private static void insertDefaults(Registry dimensionTypeRegistry, Registry chunkGeneratorSettingsRegistry, Registry multiNoiseBiomeSourceParameterLists, Registry biomeRegistry, HashMap, DimensionOptions> map) { if (!map.containsKey(DimensionOptions.OVERWORLD)) { RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow(); From e83b70b5aecd84afed03896ee9f759b5c70d7d28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 18:52:31 -0700 Subject: [PATCH 022/116] generation settings --- .../mod/config/MonsterSettingsConfig.java | 3 ++- .../mod/config/VanillaWorldProperties.java | 24 +++++++++++++++++-- .../java/com/dfsek/terra/mod/data/Codecs.java | 15 +++++++++++- .../mod/generation/GenerationSettings.java | 8 +++++++ .../MinecraftChunkGeneratorWrapper.java | 14 +++++------ .../dfsek/terra/mod/util/DimensionUtil.java | 9 ++----- .../com/dfsek/terra/mod/util/PresetUtil.java | 20 +++++++++++----- 7 files changed, 69 insertions(+), 24 deletions(-) create mode 100644 platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java index 372c40926..416ab57d6 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java @@ -29,7 +29,6 @@ public class MonsterSettingsConfig implements ObjectTemplate TERRA_CONSTANT_RANGE = RecordCodecBuilder.create(range -> range.group( + Codec.INT.fieldOf("min").stable().forGetter(ConstantRange::getMin), + Codec.INT.fieldOf("max").stable().forGetter(ConstantRange::getMax)).apply(range, range.stable(ConstantRange::new))); + + public static final Codec TERRA_GENERATION_SETTINGS = RecordCodecBuilder + .create(instance -> instance.group( + TERRA_CONSTANT_RANGE.fieldOf("height").stable().forGetter(GenerationSettings::height), + Codec.INT.fieldOf("sealevel").forGetter(GenerationSettings::sealevel), + Codec.BOOL.fieldOf("mob_generation").forGetter(GenerationSettings::mobGeneration)) + .apply(instance, instance.stable(GenerationSettings::new))); + + public static final Codec MINECRAFT_CHUNK_GENERATOR_WRAPPER = RecordCodecBuilder .create( instance -> instance.group( @@ -53,7 +66,7 @@ public final class Codecs { CONFIG_PACK.fieldOf("pack") .stable() .forGetter(MinecraftChunkGeneratorWrapper::getPack), - ChunkGeneratorSettings.REGISTRY_CODEC.fieldOf("settings") + TERRA_GENERATION_SETTINGS.fieldOf("settings") .stable() .forGetter(MinecraftChunkGeneratorWrapper::getSettings) ).apply(instance, instance.stable( diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java new file mode 100644 index 000000000..bb936e7d6 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.mod.generation; + +import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.api.util.Range; + + +public record GenerationSettings(ConstantRange height, Integer sealevel, Boolean mobGeneration) { +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java index 54284ecaf..b6e4b4818 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java @@ -74,13 +74,13 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun private static final Logger logger = LoggerFactory.getLogger(MinecraftChunkGeneratorWrapper.class); private final TerraBiomeSource biomeSource; - private final RegistryEntry settings; + private final GenerationSettings settings; private ChunkGenerator delegate; private ConfigPack pack; public MinecraftChunkGeneratorWrapper(TerraBiomeSource biomeSource, ConfigPack configPack, - RegistryEntry settingsSupplier) { + GenerationSettings settingsSupplier) { super(biomeSource); this.pack = configPack; this.settings = settingsSupplier; @@ -102,7 +102,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun @Override public void populateEntities(ChunkRegion region) { - if(!this.settings.value().mobGenerationDisabled()) { + if(this.settings.mobGeneration()) { ChunkPos chunkPos = region.getCenterPos(); RegistryEntry registryEntry = region.getBiome(chunkPos.getStartPos().withY(region.getTopY() - 1)); ChunkRandom chunkRandom = new ChunkRandom(new CheckedRandom(RandomSeed.getSeed())); @@ -113,7 +113,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun @Override public int getWorldHeight() { - return settings.value().generationShapeConfig().height(); + return settings.height().getRange(); } @@ -173,12 +173,12 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun @Override public int getSeaLevel() { - return settings.value().seaLevel(); + return settings.sealevel(); } @Override public int getMinimumY() { - return settings.value().generationShapeConfig().minimumY(); + return settings.height().getMin(); } @Override @@ -233,7 +233,7 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun return delegate; } - public RegistryEntry getSettings() { + public GenerationSettings getSettings() { return settings; } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java index 37f1442b7..cb3afeb50 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java @@ -25,7 +25,7 @@ import java.util.OptionalLong; public class DimensionUtil { - public static DimensionType createDimension(VanillaWorldProperties vanillaWorldProperties, ModPlatform platform) { + public static DimensionType createDimension(VanillaWorldProperties vanillaWorldProperties, DimensionType defaultDimension, ModPlatform platform) { MonsterSettingsConfig monsterSettingsConfig; if (vanillaWorldProperties.getMonsterSettings() != null) { @@ -34,11 +34,6 @@ public class DimensionUtil { monsterSettingsConfig = new MonsterSettingsConfig(); } - Registry dimensionTypeRegistry = platform.dimensionTypeRegistry(); - - DimensionType defaultDimension = dimensionTypeRegistry.get(new Identifier(vanillaWorldProperties.getVanillaDimension())); - - assert defaultDimension != null; MonsterSettings monsterSettings = getMonsterSettings(defaultDimension, monsterSettingsConfig); return new DimensionType( @@ -52,7 +47,7 @@ public class DimensionUtil { vanillaWorldProperties.getBedWorks() == null ? defaultDimension.bedWorks() : vanillaWorldProperties.getBedWorks(), vanillaWorldProperties.getRespawnAnchorWorks() == null ? defaultDimension.respawnAnchorWorks() : vanillaWorldProperties.getRespawnAnchorWorks(), vanillaWorldProperties.getHeight() == null ? defaultDimension.minY() : vanillaWorldProperties.getHeight().getMin(), - vanillaWorldProperties.getHeight() == null ? defaultDimension.height() : vanillaWorldProperties.getHeight().getMax(), + vanillaWorldProperties.getHeight() == null ? defaultDimension.height() : vanillaWorldProperties.getHeight().getRange(), vanillaWorldProperties.getLogicalHeight() == null ? defaultDimension.logicalHeight() : vanillaWorldProperties.getLogicalHeight(), vanillaWorldProperties.getInfiniburn() == null ? defaultDimension.infiniburn() : TagKey.of(RegistryKeys.BLOCK, vanillaWorldProperties.getInfiniburn()), vanillaWorldProperties.getEffects() == null ? defaultDimension.effects() : vanillaWorldProperties.getEffects(), diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 95d1184df..aa521ef17 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -1,7 +1,10 @@ package com.dfsek.terra.mod.util; +import com.dfsek.terra.api.util.ConstantRange; import com.dfsek.terra.mod.config.VanillaWorldProperties; +import com.dfsek.terra.mod.generation.GenerationSettings; + import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; @@ -100,7 +103,11 @@ public class PresetUtil { vanillaWorldProperties = new VanillaWorldProperties(); } - DimensionType dimensionType = DimensionUtil.createDimension(vanillaWorldProperties, platform); + DimensionType defaultDimension = dimensionTypeRegistry.get(new Identifier(vanillaWorldProperties.getVanillaDimension())); + + assert defaultDimension != null; + + DimensionType dimensionType = DimensionUtil.createDimension(vanillaWorldProperties, defaultDimension, platform); RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey(new Identifier("terra", pack.getID().toLowerCase( Locale.ROOT))); @@ -110,11 +117,12 @@ public class PresetUtil { TerraBiomeSource biomeSource = new TerraBiomeSource(pack); - RegistryEntry generatorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(demensionIdentifier)); - if (key.equals("minecraft:the_nether") || key.equals("minecraft:the_end")) { //TODO REMOVE WHEN ADDING CUSTOM GEN SETTINGS - Identifier demensionIdentifier2 = new Identifier(key.replace("the_", "")); - generatorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(demensionIdentifier2)); - } + RegistryEntry defaultGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(new Identifier(vanillaWorldProperties.getVanillaGeneration()))); + + GenerationSettings generatorSettings = new GenerationSettings( + vanillaWorldProperties.getHeight() == null ? new ConstantRange(defaultGeneratorSettings.value().generationShapeConfig().minimumY(), defaultGeneratorSettings.value().generationShapeConfig().height()) : vanillaWorldProperties.getHeight(), + vanillaWorldProperties.getSealevel() == null ? defaultGeneratorSettings.value().seaLevel() : vanillaWorldProperties.getSealevel(), + vanillaWorldProperties.getMobGeneration() == null ? !defaultGeneratorSettings.value().mobGenerationDisabled() : vanillaWorldProperties.getMobGeneration()); ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, generatorSettings); From 4c713555358569597d91e9bf5dd22b78080b0fad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 19:07:57 -0700 Subject: [PATCH 023/116] Reformat --- .../src/main/kotlin/DistributionConfig.kt | 3 +- .../v2/api/biome/DelegatedPipelineBiome.java | 4 +- .../v2/stage/mutators/ReplaceListStage.java | 10 +- .../structure/StructureCommandAddon.java | 4 +- .../distributors/PaddedGridDistributor.java | 4 +- .../addons/flora/flora/gen/TerraFlora.java | 6 +- .../locators/GaussianRandomLocator.java | 4 +- .../locator/locators/RandomLocator.java | 4 +- .../addons/ore/utils/VanillaOreUtils.java | 7 +- .../structure/structures/loot/Pool.java | 2 +- .../feature/FeatureGenerationStage.java | 62 ++++++------- .../structure/mutator/MutatedStructure.java | 4 +- .../terrascript/script/StructureScript.java | 2 +- .../script/TerraImplementationArguments.java | 4 +- .../script/functions/LootFunction.java | 64 ++++++------- .../java/com/dfsek/terra/api/Platform.java | 3 +- .../com/dfsek/terra/api/config/MetaPack.java | 4 +- .../dfsek/terra/api/structure/LootTable.java | 2 +- .../dfsek/terra/api/util/PopulationUtil.java | 4 +- .../java/com/dfsek/terra/api/util/Range.java | 4 +- .../com/dfsek/terra/AbstractPlatform.java | 7 +- .../dfsek/terra/config/pack/MetaPackImpl.java | 52 ++++------- .../registry/master/MetaConfigRegistry.java | 3 - .../generator/BukkitBlockPopulator.java | 4 +- .../BukkitChunkGeneratorWrapper.java | 1 - .../bukkit/handles/BukkitWorldHandle.java | 4 +- .../dfsek/terra/cli/handle/CLIItemHandle.java | 4 +- .../com/dfsek/terra/mod/MinecraftAddon.java | 28 +++--- .../java/com/dfsek/terra/mod/ModPlatform.java | 4 +- .../mod/config/MonsterSettingsConfig.java | 6 -- .../mod/config/VanillaWorldProperties.java | 10 +- .../java/com/dfsek/terra/mod/data/Codecs.java | 13 +-- .../mod/generation/GenerationSettings.java | 1 - .../MinecraftChunkGeneratorWrapper.java | 6 -- .../mod/handle/MinecraftWorldHandle.java | 4 +- .../mod/implmentation/TerraIntProvider.java | 19 ++-- .../entity/MobSpawnerBlockEntityMixin.java | 2 +- .../lifecycle/DataPackContentsMixin.java | 2 - .../dfsek/terra/mod/util/DimensionUtil.java | 45 ++++----- .../terra/mod/util/MinecraftAdapter.java | 20 ++-- .../dfsek/terra/mod/util/MinecraftUtil.java | 19 ++-- .../com/dfsek/terra/mod/util/PresetUtil.java | 91 +++++++++++-------- .../terra/lifecycle/LifecyclePlatform.java | 3 - .../mixin/lifecycle/RegistryLoaderMixin.java | 1 - .../terra/lifecycle/util/RegistryUtil.java | 3 +- 45 files changed, 253 insertions(+), 300 deletions(-) diff --git a/buildSrc/src/main/kotlin/DistributionConfig.kt b/buildSrc/src/main/kotlin/DistributionConfig.kt index 80e59104e..3b90f3416 100644 --- a/buildSrc/src/main/kotlin/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/DistributionConfig.kt @@ -27,7 +27,8 @@ fun Project.configureDistribution() { group = "terra" doFirst { file("${buildDir}/resources/main/packs/").deleteRecursively() - val defaultPackUrl = URL("https://github.com/PolyhedralDev/TerraOverworldConfig/releases/download/" + Versions.Terra.overworldConfig + "/default.zip") + val defaultPackUrl = + URL("https://github.com/PolyhedralDev/TerraOverworldConfig/releases/download/" + Versions.Terra.overworldConfig + "/default.zip") downloadPack(defaultPackUrl, project) } } diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java index 85e6a99ad..0d57fd02e 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.v2.api.biome; -import java.util.Set; - import com.dfsek.terra.api.world.biome.Biome; +import java.util.Set; + public final class DelegatedPipelineBiome implements PipelineBiome { private final Biome biome; diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java index 4d86958a2..8d4ec30f7 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java @@ -7,17 +7,17 @@ package com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.stream.Stream; - import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.stream.Stream; + public class ReplaceListStage implements Stage { private final Map> replace; diff --git a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java index 6fd70a973..2e90f4bdd 100644 --- a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java +++ b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java @@ -6,6 +6,8 @@ import cloud.commandframework.arguments.standard.EnumArgument; import cloud.commandframework.arguments.standard.LongArgument; import cloud.commandframework.context.CommandContext; +import java.util.random.RandomGenerator; +import java.util.random.RandomGeneratorFactory; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; @@ -21,8 +23,6 @@ import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.reflection.TypeKey; -import java.util.random.RandomGenerator; -import java.util.random.RandomGeneratorFactory; public class StructureCommandAddon implements AddonInitializer { @Inject diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java index b71e0c7f8..a77b2c0bc 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java @@ -26,8 +26,8 @@ public class PaddedGridDistributor implements Distributor { int cellZ = Math.floorDiv(z, cellWidth); RandomGenerator random = RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create( - (MathUtil.murmur64(MathUtil.squash(cellX, cellZ)) ^ seed) + salt); - + (MathUtil.murmur64(MathUtil.squash(cellX, cellZ)) ^ seed) + salt); + int pointX = random.nextInt(width) + cellX * cellWidth; int pointZ = random.nextInt(width) + cellZ * cellWidth; 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 027772c01..82af49463 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 @@ -87,9 +87,9 @@ public class TerraFlora implements Structure { location.getZ(), world.getSeed()); if(doRotation) { Direction oneFace = new ArrayList<>(faces).get( - RandomGeneratorFactory.of("Xoroshiro128PlusPlus") - .create(location.getX() ^ location.getZ()) - .nextInt(faces.size())); // Get RandomGenerator face. + RandomGeneratorFactory.of("Xoroshiro128PlusPlus") + .create(location.getX() ^ location.getZ()) + .nextInt(faces.size())); // Get RandomGenerator face. } world.setBlockState(location.mutable().add(0, i + c, 0).immutable(), data, physics); } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/GaussianRandomLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/GaussianRandomLocator.java index 1a3501cc8..c2a300f16 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/GaussianRandomLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/GaussianRandomLocator.java @@ -40,9 +40,9 @@ public class GaussianRandomLocator implements Locator { seed = 31 * seed + column.getX(); seed = 31 * seed + column.getZ(); seed += salt; - + RandomGenerator r = RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create(seed); - + int size = points.get(r); 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 93364be07..c25875fbc 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 @@ -36,9 +36,9 @@ public class RandomLocator implements Locator { seed = 31 * seed + column.getX(); seed = 31 * seed + column.getZ(); seed += salt; - + RandomGenerator r = RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create(seed); - + int size = points.get(r); BinaryColumnBuilder results = column.newBinaryColumn(); diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/utils/VanillaOreUtils.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/utils/VanillaOreUtils.java index d2b087cbd..4f892db37 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/utils/VanillaOreUtils.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/utils/VanillaOreUtils.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.ore.utils; +import java.util.random.RandomGenerator; + import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.world.WritableWorld; -import java.util.random.RandomGenerator; - public class VanillaOreUtils { private static boolean shouldExpose(RandomGenerator random, double exposedChance) { @@ -14,7 +14,8 @@ public class VanillaOreUtils { return random.nextFloat() < exposedChance; } - public static boolean shouldPlace(MaterialSet replaceable, BlockType type, Double exposedChance, RandomGenerator random, WritableWorld world, + public static boolean shouldPlace(MaterialSet replaceable, BlockType type, Double exposedChance, RandomGenerator random, + WritableWorld world, int x, int y, int z) { if(!replaceable.contains(type)) return false; 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 3a2727b20..cca1b9795 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 @@ -57,7 +57,7 @@ public class Pool { * @return List<ItemStack> - The list of items fetched. */ public List getItems(RandomGenerator 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/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 942f53ca3..1d455ecd0 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 @@ -53,37 +53,37 @@ public class FeatureGenerationStage implements GenerationStage, StringIdentifiab int tx = cx + chunkX; int tz = cz + chunkZ; world.getBiomeProvider() - .getColumn(tx, tz, world) - .forRanges(resolution, (min, max, biome) -> { - for(int subChunkX = 0; subChunkX < resolution; subChunkX++) { - for(int subChunkZ = 0; subChunkZ < resolution; subChunkZ++) { - int x = subChunkX + tx; - int z = subChunkZ + tz; - long coordinateSeed = (seed * 31 + x) * 31 + z; - Column column = world.column(x, z); - biome.getContext() - .get(biomeFeaturesKey) - .getFeatures() - .getOrDefault(this, Collections.emptyList()) - .forEach(feature -> { - platform.getProfiler().push(feature.getID()); - if(feature.getDistributor().matches(x, z, seed)) { - feature.getLocator() - .getSuitableCoordinates(column.clamp(min, max)) - .forEach(y -> feature.getStructure(world, x, y, z) - .generate(Vector3Int.of(x, y, z), - world, - RandomGeneratorFactory.of( - "Xoroshiro128PlusPlus") - .create(coordinateSeed * 31 + y), - Rotation.NONE) - ); - } - platform.getProfiler().pop(feature.getID()); - }); - } - } - }); + .getColumn(tx, tz, world) + .forRanges(resolution, (min, max, biome) -> { + for(int subChunkX = 0; subChunkX < resolution; subChunkX++) { + for(int subChunkZ = 0; subChunkZ < resolution; subChunkZ++) { + int x = subChunkX + tx; + int z = subChunkZ + tz; + long coordinateSeed = (seed * 31 + x) * 31 + z; + Column column = world.column(x, z); + biome.getContext() + .get(biomeFeaturesKey) + .getFeatures() + .getOrDefault(this, Collections.emptyList()) + .forEach(feature -> { + platform.getProfiler().push(feature.getID()); + if(feature.getDistributor().matches(x, z, seed)) { + feature.getLocator() + .getSuitableCoordinates(column.clamp(min, max)) + .forEach(y -> feature.getStructure(world, x, y, z) + .generate(Vector3Int.of(x, y, z), + world, + RandomGeneratorFactory.of( + "Xoroshiro128PlusPlus") + .create(coordinateSeed * 31 + y), + Rotation.NONE) + ); + } + platform.getProfiler().pop(feature.getID()); + }); + } + } + }); } } platform.getProfiler().pop(profile); diff --git a/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java index 5fbc42028..4a91f07c8 100644 --- a/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java +++ b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java @@ -1,7 +1,5 @@ package com.dfsek.terra.addons.structure.mutator; -import java.util.random.RandomGenerator; - import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.structure.Structure; @@ -11,6 +9,8 @@ import com.dfsek.terra.api.world.WritableWorld; import com.dfsek.terra.api.world.util.ReadInterceptor; import com.dfsek.terra.api.world.util.WriteInterceptor; +import java.util.random.RandomGenerator; + public class MutatedStructure implements Structure, Keyed { private final RegistryKey key; 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 c031baa66..35cf244f2 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 @@ -137,7 +137,7 @@ public class StructureScript implements Structure, Keyed { platform.getProfiler().pop(profile); return result; } - + public boolean generate(Vector3Int location, WritableWorld world, RandomGenerator random, Rotation rotation, int recursions) { platform.getProfiler().push(profile); boolean result = applyBlock(new TerraImplementationArguments(location, rotation, random, world, recursions)); 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 bf38eb183..11eee4823 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 @@ -26,7 +26,7 @@ public class TerraImplementationArguments implements ImplementationArguments { private final int recursions; private final Vector3Int origin; private boolean waterlog = false; - + public TerraImplementationArguments(Vector3Int origin, Rotation rotation, RandomGenerator random, WritableWorld world, int recursions) { this.rotation = rotation; this.random = random; @@ -38,7 +38,7 @@ public class TerraImplementationArguments implements ImplementationArguments { public int getRecursions() { return recursions; } - + public RandomGenerator getRandom() { return random; } 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 aef79e2e1..4b41b1c2d 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 @@ -10,6 +10,9 @@ package com.dfsek.terra.addons.terrascript.script.functions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.random.RandomGenerator; +import java.util.random.RandomGeneratorFactory; + 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.Scope; @@ -28,9 +31,6 @@ import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; import com.dfsek.terra.api.util.vector.Vector3; -import java.util.random.RandomGenerator; -import java.util.random.RandomGeneratorFactory; - public class LootFunction implements Function { private static final Logger LOGGER = LoggerFactory.getLogger(LootFunction.class); @@ -65,35 +65,35 @@ public class LootFunction implements Function { registry.get(RegistryKey.parse(id)) - .ifPresentOrElse(table -> { - Vector3 apply = Vector3.of((int) Math.round(xz.getX()), - y.apply(implementationArguments, scope) - .intValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); - - try { - BlockEntity data = arguments.getWorld().getBlockEntity(apply); - if(!(data instanceof Container container)) { - LOGGER.error("Failed to place loot at {}; block {} is not a container", - apply, data); - return; - } - - LootPopulateEvent event = new LootPopulateEvent(container, table, - arguments.getWorld().getPack(), script); - platform.getEventManager().callEvent(event); - if(event.isCancelled()) return; - - event.getTable().fillInventory(container.getInventory(), - RandomGeneratorFactory.of( - "Xoroshiro128PlusPlus").create(apply.hashCode())); - data.update(false); - } catch(Exception e) { - LOGGER.error("Could not apply loot at {}", apply, e); - e.printStackTrace(); - } - }, - () -> LOGGER.error("No such loot table {}", id)); + .ifPresentOrElse(table -> { + Vector3 apply = Vector3.of((int) Math.round(xz.getX()), + y.apply(implementationArguments, scope) + .intValue(), + (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); + + try { + BlockEntity data = arguments.getWorld().getBlockEntity(apply); + if(!(data instanceof Container container)) { + LOGGER.error("Failed to place loot at {}; block {} is not a container", + apply, data); + return; + } + + LootPopulateEvent event = new LootPopulateEvent(container, table, + arguments.getWorld().getPack(), script); + platform.getEventManager().callEvent(event); + if(event.isCancelled()) return; + + event.getTable().fillInventory(container.getInventory(), + RandomGeneratorFactory.of( + "Xoroshiro128PlusPlus").create(apply.hashCode())); + data.update(false); + } catch(Exception e) { + LOGGER.error("Could not apply loot at {}", apply, e); + e.printStackTrace(); + } + }, + () -> LOGGER.error("No such loot table {}", id)); return null; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/Platform.java b/common/api/src/main/java/com/dfsek/terra/api/Platform.java index 37933262b..a9d653cb7 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/Platform.java +++ b/common/api/src/main/java/com/dfsek/terra/api/Platform.java @@ -7,8 +7,6 @@ package com.dfsek.terra.api; -import com.dfsek.terra.api.config.MetaPack; - import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -16,6 +14,7 @@ import java.io.File; import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.MetaPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.handle.ItemHandle; diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java b/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java index 9cdbd696d..ae3c06ec4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/MetaPack.java @@ -2,6 +2,8 @@ package com.dfsek.terra.api.config; import ca.solostudios.strata.version.Version; +import java.util.Map; + import com.dfsek.terra.api.properties.PropertyHolder; import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.meta.CheckedRegistryHolder; @@ -9,8 +11,6 @@ import com.dfsek.terra.api.registry.meta.RegistryProvider; import com.dfsek.terra.api.tectonic.ConfigLoadingDelegate; import com.dfsek.terra.api.tectonic.LoaderRegistrar; -import java.util.Map; - public interface MetaPack extends LoaderRegistrar, ConfigLoadingDelegate, 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 index ecfe735bd..b93a3c6b2 100644 --- 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 @@ -25,7 +25,7 @@ public interface LootTable { * @param r The The RandomGenerator instance to use. */ void fillInventory(Inventory i, RandomGenerator r); - + /** * Fetches a list of ItemStacks from the loot table using the given RandomGenerator instance. * diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java index 2ec5f2d91..de2e7be3b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java @@ -17,10 +17,10 @@ public final class PopulationUtil { public static RandomGenerator getRandom(Chunk c) { return getRandom(c, 0); } - + public static RandomGenerator getRandom(Chunk c, long salt) { return RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create( - getCarverChunkSeed(c.getX(), c.getZ(), c.getWorld().getSeed() + salt)); + getCarverChunkSeed(c.getX(), c.getZ(), c.getWorld().getSeed() + salt)); } /** 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 c851bd621..4fba34651 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 @@ -18,9 +18,9 @@ public interface Range extends Iterable { Range multiply(int mult); Range reflect(int pt); - + int get(RandomGenerator r); - + Range intersects(Range other); Range add(int add); diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java index 2765326c2..1ea3fc88b 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -18,10 +18,6 @@ package com.dfsek.terra; import com.dfsek.tectonic.api.TypeRegistry; - -import com.dfsek.terra.api.config.MetaPack; -import com.dfsek.terra.registry.master.MetaConfigRegistry; - import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.jetbrains.annotations.NotNull; @@ -55,6 +51,7 @@ import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.addon.bootstrap.BootstrapAddonClassLoader; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.MetaPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; @@ -77,6 +74,7 @@ import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; +import com.dfsek.terra.registry.master.MetaConfigRegistry; /** @@ -168,7 +166,6 @@ public abstract class AbstractPlatform implements Platform { .global(); - logger.info("Terra addons successfully loaded."); logger.info("Finished initialization."); } diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java index c09042fb5..8ae68c8e8 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/pack/MetaPackImpl.java @@ -1,8 +1,16 @@ package com.dfsek.terra.config.pack; import ca.solostudios.strata.version.Version; +import com.dfsek.tectonic.api.TypeRegistry; +import com.dfsek.tectonic.api.config.Configuration; +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import com.dfsek.tectonic.api.loader.AbstractConfigLoader; +import com.dfsek.tectonic.api.loader.ConfigLoader; +import com.dfsek.tectonic.api.loader.type.TypeLoader; +import com.dfsek.tectonic.yaml.YamlConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import java.awt.image.BufferedImage; import java.io.FileNotFoundException; import java.io.IOException; import java.lang.reflect.ParameterizedType; @@ -18,58 +26,34 @@ import java.util.Map; import java.util.function.Supplier; import java.util.regex.Pattern; -import com.dfsek.tectonic.api.TypeRegistry; -import com.dfsek.tectonic.api.config.Configuration; -import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.tectonic.api.loader.AbstractConfigLoader; -import com.dfsek.tectonic.api.loader.ConfigLoader; -import com.dfsek.tectonic.api.loader.type.TypeLoader; -import com.dfsek.tectonic.yaml.YamlConfiguration; - import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.config.MetaPack; import com.dfsek.terra.api.properties.Context; 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.key.RegistryKey; -import com.dfsek.terra.api.tectonic.ConfigLoadingDelegate; import com.dfsek.terra.api.util.reflection.ReflectionUtil; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader; -import com.dfsek.terra.config.loaders.config.BufferedImageLoader; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; - import com.dfsek.terra.registry.master.ConfigRegistry; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class MetaPackImpl implements MetaPack { private static final Pattern PATTERN = Pattern.compile(", "); - private final MetaPackTemplate template = new MetaPackTemplate(); - - private final Platform platform; - - private final Path rootPath; - - private final Map packs = new HashMap<>(); - - private final ConfigLoader selfLoader = new ConfigLoader(); - - private final Context context = new Context(); - - private final RegistryKey key; - - private final Map> registryMap = new HashMap<>(); - private static final Logger logger = LoggerFactory.getLogger(MetaPackImpl.class); - + private final MetaPackTemplate template = new MetaPackTemplate(); + private final Platform platform; + private final Path rootPath; + private final Map packs = new HashMap<>(); + private final ConfigLoader selfLoader = new ConfigLoader(); + private final Context context = new Context(); + private final RegistryKey key; + private final Map> registryMap = new HashMap<>(); private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); private final String author; @@ -121,7 +105,7 @@ public class MetaPackImpl implements MetaPack { template.getPacks().forEach((k, v) -> { RegistryKey registryKey = RegistryKey.parse(v); - if (configRegistry.contains(registryKey)) { + if(configRegistry.contains(registryKey)) { packs.put(k, configRegistry.get(registryKey).get()); logger.info("Linked config pack \"{}\" to metapack \"{}:{}\".", v, namespace, id); } else { diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/MetaConfigRegistry.java b/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/MetaConfigRegistry.java index 472592556..05539475e 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/MetaConfigRegistry.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/registry/master/MetaConfigRegistry.java @@ -18,7 +18,6 @@ package com.dfsek.terra.registry.master; import java.io.IOException; -import java.io.Serial; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; @@ -26,10 +25,8 @@ import java.util.List; import java.util.stream.Stream; import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.MetaPack; import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.pack.MetaPackImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitBlockPopulator.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitBlockPopulator.java index b220f961b..27f52de47 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitBlockPopulator.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitBlockPopulator.java @@ -5,12 +5,12 @@ import org.bukkit.generator.LimitedRegion; import org.bukkit.generator.WorldInfo; import org.jetbrains.annotations.NotNull; +import java.util.Random; + import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.bukkit.world.BukkitProtoWorld; -import java.util.Random; - public class BukkitBlockPopulator extends BlockPopulator { private final BlockState air; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java index 192dbecf7..5201d6340 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java @@ -28,7 +28,6 @@ import org.slf4j.LoggerFactory; import java.util.List; import java.util.random.RandomGenerator; -import java.util.stream.Collectors; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index 1d8744bcf..35446a9f4 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -61,8 +61,8 @@ public class BukkitWorldHandle implements WorldHandle { @Override public @NotNull EntityType getEntity(@NotNull String id) { - if (!id.contains(":")) { //TODO: remove in 7.0 - String newid = "minecraft:" + id.toLowerCase();; + if(!id.contains(":")) { //TODO: remove in 7.0 + String newid = "minecraft:" + id.toLowerCase(); logger.warn( "Translating " + id + " to " + newid + ". In 1.20.3 entity parsing was reworked" + ". You are advised to preform this rename in your config backs as this translation will be removed in the next major " + diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/handle/CLIItemHandle.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/handle/CLIItemHandle.java index 535e23897..3228901bc 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/handle/CLIItemHandle.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/handle/CLIItemHandle.java @@ -1,11 +1,11 @@ package com.dfsek.terra.cli.handle; -import java.util.Set; - import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.inventory.Item; import com.dfsek.terra.api.inventory.item.Enchantment; +import java.util.Set; + public class CLIItemHandle implements ItemHandle { @Override diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java index 70a0f24bb..4586dce2a 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/MinecraftAddon.java @@ -19,13 +19,6 @@ package com.dfsek.terra.mod; import ca.solostudios.strata.Versions; import ca.solostudios.strata.version.Version; - -import com.dfsek.terra.api.config.ConfigPack; - -import com.dfsek.terra.mod.config.VanillaWorldProperties; - -import com.dfsek.terra.mod.util.MinecraftUtil; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,6 +31,7 @@ import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.mod.config.PostLoadCompatibilityOptions; import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; import com.dfsek.terra.mod.config.VanillaBiomeProperties; +import com.dfsek.terra.mod.config.VanillaWorldProperties; public abstract class MinecraftAddon implements BaseAddon { @@ -52,17 +46,17 @@ public abstract class MinecraftAddon implements BaseAddon { @Override public void initialize() { modPlatform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPostLoadEvent.class) - .then(event -> event.getPack().getContext().put(event.loadTemplate(new VanillaWorldProperties()))) - .priority(100) - .global(); + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPostLoadEvent.class) + .then(event -> event.getPack().getContext().put(event.loadTemplate(new VanillaWorldProperties()))) + .priority(100) + .global(); modPlatform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().getContext().put(event.loadTemplate(new PreLoadCompatibilityOptions()))) - .global(); - + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> event.getPack().getContext().put(event.loadTemplate(new PreLoadCompatibilityOptions()))) + .global(); + modPlatform.getEventManager() .getHandler(FunctionalEventHandler.class) .register(this, ConfigPackPostLoadEvent.class) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index 3e77d5267..cb988d1a5 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -6,7 +6,6 @@ import com.dfsek.tectonic.api.exception.LoadException; import net.minecraft.entity.EntityType; import net.minecraft.entity.SpawnGroup; import net.minecraft.registry.Registry; -import net.minecraft.registry.RegistryKey; import net.minecraft.server.MinecraftServer; import net.minecraft.sound.BiomeAdditionsSound; import net.minecraft.sound.BiomeMoodSound; @@ -22,7 +21,6 @@ import net.minecraft.world.biome.BiomeParticleConfig; import net.minecraft.world.biome.SpawnSettings; import net.minecraft.world.biome.SpawnSettings.SpawnEntry; import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList; -import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.WorldPreset; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; @@ -70,7 +68,7 @@ public abstract class ModPlatform extends AbstractPlatform { }); getRawConfigRegistry() .forEach(pack -> { - if (!configPacksInMetaPack.contains(pack.getID())) { + if(!configPacksInMetaPack.contains(pack.getID())) { PresetUtil.createDefault(pack, this).apply(registerFunction); } }); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java index 416ab57d6..136b369b7 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java @@ -2,15 +2,10 @@ package com.dfsek.terra.mod.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; - import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.mod.implmentation.TerraIntProvider; - -import net.minecraft.world.dimension.DimensionType.MonsterSettings; - public class MonsterSettingsConfig implements ObjectTemplate { @Value("piglin-safe") @@ -46,7 +41,6 @@ public class MonsterSettingsConfig implements ObjectTemplate TERRA_CONSTANT_RANGE_INT_PROVIDER_TYPE = RecordCodecBuilder.create(range -> range.group( Codec.INT.fieldOf("min").stable().forGetter(TerraIntProvider::getMin), - Codec.INT.fieldOf("max").stable().forGetter(TerraIntProvider::getMax)).apply(range, range.stable((min, max) -> new TerraIntProvider(new ConstantRange( + Codec.INT.fieldOf("max").stable().forGetter(TerraIntProvider::getMax)) + .apply(range, range.stable((min, max) -> new TerraIntProvider(new ConstantRange( min, max))))); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java index bb936e7d6..7c8bdc5bc 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java @@ -1,7 +1,6 @@ package com.dfsek.terra.mod.generation; import com.dfsek.terra.api.util.ConstantRange; -import com.dfsek.terra.api.util.Range; public record GenerationSettings(ConstantRange height, Integer sealevel, Boolean mobGeneration) { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java index b6e4b4818..233ec9285 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java @@ -17,11 +17,6 @@ package com.dfsek.terra.mod.generation; -import com.dfsek.terra.api.util.ConstantRange; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.mod.config.VanillaBiomeProperties; -import com.dfsek.terra.mod.config.VanillaWorldProperties; - import com.mojang.serialization.Codec; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -44,7 +39,6 @@ import net.minecraft.world.gen.GenerationStep.Carver; import net.minecraft.world.gen.StructureAccessor; import net.minecraft.world.gen.StructureWeightSampler; import net.minecraft.world.gen.chunk.Blender; -import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; import net.minecraft.world.gen.chunk.VerticalBlockSample; import net.minecraft.world.gen.densityfunction.DensityFunction.UnblendedNoisePos; import net.minecraft.world.gen.noise.NoiseConfig; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java index bc00f3a12..db7abc56d 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java @@ -64,8 +64,8 @@ public class MinecraftWorldHandle implements WorldHandle { @Override public @NotNull EntityType getEntity(@NotNull String id) { - if (!id.contains(":")) { //TODO: remove in 7.0 - String newid = "minecraft:" + id.toLowerCase();; + if(!id.contains(":")) { //TODO: remove in 7.0 + String newid = "minecraft:" + id.toLowerCase(); logger.warn( "Translating " + id + " to " + newid + ". In 1.20.3 entity parsing was reworked" + ". You are advised to preform this rename in your config packs as this translation will be removed in the next major " + diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/implmentation/TerraIntProvider.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/implmentation/TerraIntProvider.java index dd5d51687..764d77c1e 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/implmentation/TerraIntProvider.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/implmentation/TerraIntProvider.java @@ -1,9 +1,5 @@ package com.dfsek.terra.mod.implmentation; -import com.dfsek.terra.api.util.Range; - -import com.dfsek.terra.mod.util.MinecraftAdapter; - import net.minecraft.util.math.intprovider.IntProvider; import net.minecraft.util.math.intprovider.IntProviderType; import net.minecraft.util.math.random.Random; @@ -11,31 +7,34 @@ import net.minecraft.util.math.random.Random; import java.util.HashMap; import java.util.Map; +import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.mod.util.MinecraftAdapter; + public class TerraIntProvider extends IntProvider { public static final Map TERRA_RANGE_TYPE_TO_INT_PROVIDER_TYPE = new HashMap<>(); - + public Range delegate; - + public TerraIntProvider(Range delegate) { this.delegate = delegate; } - + @Override public int get(Random random) { return delegate.get(MinecraftAdapter.adapt(random)); } - + @Override public int getMin() { return delegate.getMin(); } - + @Override public int getMax() { return delegate.getMax(); } - + @Override public IntProviderType getType() { return TERRA_RANGE_TYPE_TO_INT_PROVIDER_TYPE.get(delegate.getClass()); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java index ccc8b738a..8afb39d16 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java @@ -59,7 +59,7 @@ public abstract class MobSpawnerBlockEntityMixin extends BlockEntity { public void terra$setSpawnedType(@NotNull EntityType creatureType) { Random rand; - if (hasWorld()) { + if(hasWorld()) { rand = world.getRandom(); } else { rand = Random.create(); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java index d892153bd..48ea98519 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java @@ -3,8 +3,6 @@ package com.dfsek.terra.mod.mixin.lifecycle; import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKeys; -import com.dfsek.terra.mod.util.MinecraftUtil; - import net.minecraft.server.DataPackContents; import net.minecraft.world.biome.Biome; import org.spongepowered.asm.mixin.Mixin; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java index cb3afeb50..03ff2243e 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java @@ -1,34 +1,25 @@ package com.dfsek.terra.mod.util; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.mod.ModPlatform; -import com.dfsek.terra.mod.config.MonsterSettingsConfig; -import com.dfsek.terra.mod.config.VanillaBiomeProperties; -import com.dfsek.terra.mod.config.VanillaWorldProperties; - -import com.dfsek.terra.mod.implmentation.TerraIntProvider; - -import net.minecraft.registry.BuiltinRegistries; -import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; -import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.tag.TagKey; -import net.minecraft.util.Identifier; - -import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionType.MonsterSettings; import org.jetbrains.annotations.NotNull; import java.util.OptionalLong; +import com.dfsek.terra.mod.ModPlatform; +import com.dfsek.terra.mod.config.MonsterSettingsConfig; +import com.dfsek.terra.mod.config.VanillaWorldProperties; +import com.dfsek.terra.mod.implmentation.TerraIntProvider; + public class DimensionUtil { - public static DimensionType createDimension(VanillaWorldProperties vanillaWorldProperties, DimensionType defaultDimension, ModPlatform platform) { + public static DimensionType createDimension(VanillaWorldProperties vanillaWorldProperties, DimensionType defaultDimension, + ModPlatform platform) { MonsterSettingsConfig monsterSettingsConfig; - if (vanillaWorldProperties.getMonsterSettings() != null) { + if(vanillaWorldProperties.getMonsterSettings() != null) { monsterSettingsConfig = vanillaWorldProperties.getMonsterSettings(); } else { monsterSettingsConfig = new MonsterSettingsConfig(); @@ -43,13 +34,21 @@ public class DimensionUtil { vanillaWorldProperties.getHasCeiling() == null ? defaultDimension.hasCeiling() : vanillaWorldProperties.getHasCeiling(), vanillaWorldProperties.getUltraWarm() == null ? defaultDimension.ultrawarm() : vanillaWorldProperties.getUltraWarm(), vanillaWorldProperties.getNatural() == null ? defaultDimension.natural() : vanillaWorldProperties.getNatural(), - vanillaWorldProperties.getCoordinateScale() == null ? defaultDimension.coordinateScale() : vanillaWorldProperties.getCoordinateScale(), + vanillaWorldProperties.getCoordinateScale() == null + ? defaultDimension.coordinateScale() + : vanillaWorldProperties.getCoordinateScale(), vanillaWorldProperties.getBedWorks() == null ? defaultDimension.bedWorks() : vanillaWorldProperties.getBedWorks(), - vanillaWorldProperties.getRespawnAnchorWorks() == null ? defaultDimension.respawnAnchorWorks() : vanillaWorldProperties.getRespawnAnchorWorks(), + vanillaWorldProperties.getRespawnAnchorWorks() == null + ? defaultDimension.respawnAnchorWorks() + : vanillaWorldProperties.getRespawnAnchorWorks(), vanillaWorldProperties.getHeight() == null ? defaultDimension.minY() : vanillaWorldProperties.getHeight().getMin(), vanillaWorldProperties.getHeight() == null ? defaultDimension.height() : vanillaWorldProperties.getHeight().getRange(), - vanillaWorldProperties.getLogicalHeight() == null ? defaultDimension.logicalHeight() : vanillaWorldProperties.getLogicalHeight(), - vanillaWorldProperties.getInfiniburn() == null ? defaultDimension.infiniburn() : TagKey.of(RegistryKeys.BLOCK, vanillaWorldProperties.getInfiniburn()), + vanillaWorldProperties.getLogicalHeight() == null + ? defaultDimension.logicalHeight() + : vanillaWorldProperties.getLogicalHeight(), + vanillaWorldProperties.getInfiniburn() == null + ? defaultDimension.infiniburn() + : TagKey.of(RegistryKeys.BLOCK, vanillaWorldProperties.getInfiniburn()), vanillaWorldProperties.getEffects() == null ? defaultDimension.effects() : vanillaWorldProperties.getEffects(), vanillaWorldProperties.getAmbientLight() == null ? defaultDimension.ambientLight() : vanillaWorldProperties.getAmbientLight(), monsterSettings @@ -66,7 +65,9 @@ public class DimensionUtil { monsterSettingsConfig.getHasRaids() == null ? defaultMonsterSettings.hasRaids() : monsterSettingsConfig.getHasRaids(), monsterSettingsConfig.getMonsterSpawnLight() == null ? defaultMonsterSettings.monsterSpawnLightTest() : new TerraIntProvider( monsterSettingsConfig.getMonsterSpawnLight()), - monsterSettingsConfig.getMonsterSpawnBlockLightLimit() == null ? defaultMonsterSettings.monsterSpawnBlockLightLimit() : monsterSettingsConfig.getMonsterSpawnBlockLightLimit() + monsterSettingsConfig.getMonsterSpawnBlockLightLimit() == null + ? defaultMonsterSettings.monsterSpawnBlockLightLimit() + : monsterSettingsConfig.getMonsterSpawnBlockLightLimit() ); return monsterSettings; } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java index 973861bd3..b0fdb9564 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java @@ -21,11 +21,11 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.random.Random; import net.minecraft.world.HeightLimitView; +import java.util.random.RandomGenerator; + import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.info.WorldProperties; -import java.util.random.RandomGenerator; - public final class MinecraftAdapter { @@ -56,44 +56,44 @@ public final class MinecraftAdapter { } }; } - + public static RandomGenerator adapt(Random random) { return new RandomGenerator() { @Override public boolean nextBoolean() { return random.nextBoolean(); } - + @Override public float nextFloat() { return random.nextFloat(); } - + @Override public double nextDouble() { return random.nextDouble(); } - + @Override public int nextInt() { return random.nextInt(); } - + @Override public int nextInt(int bound) { return random.nextInt(bound); } - + @Override public long nextLong() { return random.nextLong(); } - + @Override public double nextGaussian() { return random.nextGaussian(); } - + @Override public int nextInt(int origin, int bound) { return random.nextBetween(origin, bound); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index f1c2031b8..bd7428742 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -1,10 +1,5 @@ package com.dfsek.terra.mod.util; -import com.dfsek.terra.api.util.ConstantRange; -import com.dfsek.terra.mod.data.Codecs; - -import com.dfsek.terra.mod.implmentation.TerraIntProvider; - import net.minecraft.block.entity.LootableContainerBlockEntity; import net.minecraft.block.entity.MobSpawnerBlockEntity; import net.minecraft.block.entity.SignBlockEntity; @@ -15,14 +10,11 @@ import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; - import net.minecraft.util.math.intprovider.IntProviderType; - import net.minecraft.world.WorldAccess; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome.Builder; import net.minecraft.world.biome.BiomeEffects; - import net.minecraft.world.biome.GenerationSettings; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.feature.ConfiguredFeature; @@ -41,7 +33,10 @@ 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.ConstantRange; import com.dfsek.terra.mod.config.VanillaBiomeProperties; +import com.dfsek.terra.mod.data.Codecs; +import com.dfsek.terra.mod.implmentation.TerraIntProvider; import com.dfsek.terra.mod.mixin.access.BiomeAccessor; import com.dfsek.terra.mod.mixin_ifaces.FloraFeatureHolder; @@ -102,14 +97,14 @@ public final class MinecraftUtil { return Map.copyOf(TERRA_BIOME_MAP); } - + public static void registerIntProviderTypes() { IntProviderType CONSTANT = IntProviderType.register("terra:constant_range", - Codecs.TERRA_CONSTANT_RANGE_INT_PROVIDER_TYPE); - + Codecs.TERRA_CONSTANT_RANGE_INT_PROVIDER_TYPE); + TerraIntProvider.TERRA_RANGE_TYPE_TO_INT_PROVIDER_TYPE.put(ConstantRange.class, CONSTANT); } - + public static RegistryKey registerBiomeKey(Identifier identifier) { return RegistryKey.of(RegistryKeys.BIOME, identifier); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index aa521ef17..3aa6e9ba3 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -1,22 +1,22 @@ package com.dfsek.terra.mod.util; -import com.dfsek.terra.api.util.ConstantRange; -import com.dfsek.terra.mod.config.VanillaWorldProperties; - -import com.dfsek.terra.mod.generation.GenerationSettings; - import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Identifier; import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.source.MultiNoiseBiomeSource; +import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList; +import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterLists; +import net.minecraft.world.biome.source.TheEndBiomeSource; import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionTypes; import net.minecraft.world.gen.WorldPreset; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; +import net.minecraft.world.gen.chunk.NoiseChunkGenerator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,17 +27,14 @@ import java.util.Locale; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.MetaPack; +import com.dfsek.terra.api.util.ConstantRange; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.mod.ModPlatform; +import com.dfsek.terra.mod.config.VanillaWorldProperties; +import com.dfsek.terra.mod.generation.GenerationSettings; import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; import com.dfsek.terra.mod.generation.TerraBiomeSource; -import net.minecraft.world.biome.source.MultiNoiseBiomeSource; -import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList; -import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterLists; -import net.minecraft.world.biome.source.TheEndBiomeSource; -import net.minecraft.world.gen.chunk.NoiseChunkGenerator; - public class PresetUtil { private static final Logger LOGGER = LoggerFactory.getLogger(PresetUtil.class); @@ -59,7 +56,8 @@ public class PresetUtil { insertCustom(platform, "minecraft:overworld", pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap); - insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), dimensionMap); + insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), + dimensionMap); WorldPreset preset = new WorldPreset(dimensionMap); LOGGER.info("Created world type \"{}\"", generatorID); @@ -72,8 +70,9 @@ public class PresetUtil { Registry multiNoiseBiomeSourceParameterLists = platform.multiNoiseBiomeSourceParameterListRegistry(); - Identifier generatorID = Identifier.of("terra", metaPack.getID().toLowerCase(Locale.ROOT) + "/" + metaPack.getNamespace().toLowerCase( - Locale.ROOT)); + Identifier generatorID = Identifier.of("terra", + metaPack.getID().toLowerCase(Locale.ROOT) + "/" + metaPack.getNamespace().toLowerCase( + Locale.ROOT)); PRESETS.add(generatorID); @@ -83,7 +82,8 @@ public class PresetUtil { insertCustom(platform, key, pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap); }); - insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), dimensionMap); + insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), + dimensionMap); WorldPreset preset = new WorldPreset(dimensionMap); LOGGER.info("Created world type \"{}\"", generatorID); @@ -97,7 +97,7 @@ public class PresetUtil { VanillaWorldProperties vanillaWorldProperties; - if (pack.getContext().has(VanillaWorldProperties.class)) { + if(pack.getContext().has(VanillaWorldProperties.class)) { vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); } else { vanillaWorldProperties = new VanillaWorldProperties(); @@ -108,8 +108,9 @@ public class PresetUtil { assert defaultDimension != null; DimensionType dimensionType = DimensionUtil.createDimension(vanillaWorldProperties, defaultDimension, platform); - RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey(new Identifier("terra", pack.getID().toLowerCase( - Locale.ROOT))); + RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey( + new Identifier("terra", pack.getID().toLowerCase( + Locale.ROOT))); Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); @@ -117,12 +118,19 @@ public class PresetUtil { TerraBiomeSource biomeSource = new TerraBiomeSource(pack); - RegistryEntry defaultGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(new Identifier(vanillaWorldProperties.getVanillaGeneration()))); + RegistryEntry defaultGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry( + chunkGeneratorSettingsRegistry.get(new Identifier(vanillaWorldProperties.getVanillaGeneration()))); GenerationSettings generatorSettings = new GenerationSettings( - vanillaWorldProperties.getHeight() == null ? new ConstantRange(defaultGeneratorSettings.value().generationShapeConfig().minimumY(), defaultGeneratorSettings.value().generationShapeConfig().height()) : vanillaWorldProperties.getHeight(), - vanillaWorldProperties.getSealevel() == null ? defaultGeneratorSettings.value().seaLevel() : vanillaWorldProperties.getSealevel(), - vanillaWorldProperties.getMobGeneration() == null ? !defaultGeneratorSettings.value().mobGenerationDisabled() : vanillaWorldProperties.getMobGeneration()); + vanillaWorldProperties.getHeight() == null ? new ConstantRange( + defaultGeneratorSettings.value().generationShapeConfig().minimumY(), + defaultGeneratorSettings.value().generationShapeConfig().height()) : vanillaWorldProperties.getHeight(), + vanillaWorldProperties.getSealevel() == null + ? defaultGeneratorSettings.value().seaLevel() + : vanillaWorldProperties.getSealevel(), + vanillaWorldProperties.getMobGeneration() == null + ? !defaultGeneratorSettings.value().mobGenerationDisabled() + : vanillaWorldProperties.getMobGeneration()); ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, generatorSettings); @@ -131,41 +139,52 @@ public class PresetUtil { dimensionMap.put(dimensionOptionsRegistryKey, dimensionOptions); } - private static void insertDefaults(Registry dimensionTypeRegistry, Registry chunkGeneratorSettingsRegistry, Registry multiNoiseBiomeSourceParameterLists, Registry biomeRegistry, HashMap, DimensionOptions> map) { - if (!map.containsKey(DimensionOptions.OVERWORLD)) { + private static void insertDefaults(Registry dimensionTypeRegistry, + Registry chunkGeneratorSettingsRegistry, + Registry multiNoiseBiomeSourceParameterLists, + Registry biomeRegistry, HashMap, DimensionOptions> map) { + if(!map.containsKey(DimensionOptions.OVERWORLD)) { RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow(); - RegistryEntry.Reference overworldChunkBiomeReference = multiNoiseBiomeSourceParameterLists.getEntry( - MultiNoiseBiomeSourceParameterLists.OVERWORLD).orElseThrow(); + RegistryEntry.Reference overworldChunkBiomeReference = + multiNoiseBiomeSourceParameterLists.getEntry( + MultiNoiseBiomeSourceParameterLists.OVERWORLD).orElseThrow(); - RegistryEntry overworldChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD) + RegistryEntry overworldChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry( + ChunkGeneratorSettings.OVERWORLD) .orElseThrow(); - DimensionOptions overworldDimensionOptions = new DimensionOptions(overworldDimensionType, (new NoiseChunkGenerator(MultiNoiseBiomeSource.create(overworldChunkBiomeReference), overworldChunkGeneratorSettings))); + DimensionOptions overworldDimensionOptions = new DimensionOptions(overworldDimensionType, + (new NoiseChunkGenerator(MultiNoiseBiomeSource.create(overworldChunkBiomeReference), overworldChunkGeneratorSettings))); map.put(DimensionOptions.OVERWORLD, overworldDimensionOptions); } - if (!map.containsKey(DimensionOptions.NETHER)) { + if(!map.containsKey(DimensionOptions.NETHER)) { RegistryEntry netherDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.THE_NETHER).orElseThrow(); - RegistryEntry.Reference netherChunkBiomeReference = multiNoiseBiomeSourceParameterLists.getEntry( - MultiNoiseBiomeSourceParameterLists.NETHER).orElseThrow(); + RegistryEntry.Reference netherChunkBiomeReference = + multiNoiseBiomeSourceParameterLists.getEntry( + MultiNoiseBiomeSourceParameterLists.NETHER).orElseThrow(); - RegistryEntry netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.NETHER) + RegistryEntry netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry( + ChunkGeneratorSettings.NETHER) .orElseThrow(); - DimensionOptions overworldDimensionOptions = new DimensionOptions(netherDimensionType, (new NoiseChunkGenerator(MultiNoiseBiomeSource.create(netherChunkBiomeReference), netherChunkGeneratorSettings))); + DimensionOptions overworldDimensionOptions = new DimensionOptions(netherDimensionType, + (new NoiseChunkGenerator(MultiNoiseBiomeSource.create(netherChunkBiomeReference), netherChunkGeneratorSettings))); map.put(DimensionOptions.NETHER, overworldDimensionOptions); } - if (!map.containsKey(DimensionOptions.END)) { + if(!map.containsKey(DimensionOptions.END)) { RegistryEntry endDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.THE_END).orElseThrow(); - RegistryEntry endChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.END) + RegistryEntry endChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry( + ChunkGeneratorSettings.END) .orElseThrow(); - DimensionOptions overworldDimensionOptions = new DimensionOptions(endDimensionType, (new NoiseChunkGenerator(TheEndBiomeSource.createVanilla(biomeRegistry.getReadOnlyWrapper()), endChunkGeneratorSettings))); + DimensionOptions overworldDimensionOptions = new DimensionOptions(endDimensionType, + (new NoiseChunkGenerator(TheEndBiomeSource.createVanilla(biomeRegistry.getReadOnlyWrapper()), endChunkGeneratorSettings))); map.put(DimensionOptions.END, overworldDimensionOptions); } } diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java index 2cde477f3..50559b6a4 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java @@ -5,14 +5,11 @@ import ca.solostudios.strata.parser.tokenizer.ParseException; import ca.solostudios.strata.version.Version; import net.minecraft.MinecraftVersion; import net.minecraft.registry.DynamicRegistryManager; -import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKeys; import net.minecraft.server.MinecraftServer; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList; -import net.minecraft.world.dimension.DimensionOptions; -import net.minecraft.world.dimension.DimensionOptionsRegistryHolder; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; import org.slf4j.Logger; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java index 98dee4b40..052598ac2 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java @@ -7,7 +7,6 @@ import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryLoader; import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList; -import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.WorldPreset; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java index 37df0eead..195915fe9 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java @@ -2,11 +2,10 @@ package com.dfsek.terra.lifecycle.util; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; -import com.dfsek.terra.mod.util.MinecraftUtil; - import net.minecraft.util.Identifier; import com.dfsek.terra.mod.data.Codecs; +import com.dfsek.terra.mod.util.MinecraftUtil; public final class RegistryUtil { From 27a967f3a677b271719acaaf4eb42c279ebcb201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 12 Dec 2023 20:17:15 -0700 Subject: [PATCH 024/116] fix build --- .../terra/bukkit/generator/BukkitChunkGeneratorWrapper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java index 5201d6340..ac6c1abbd 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java @@ -27,6 +27,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; +import java.util.Random; import java.util.random.RandomGenerator; import com.dfsek.terra.api.block.state.BlockState; @@ -62,7 +63,7 @@ public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGener } @Override - public void generateNoise(@NotNull WorldInfo worldInfo, @NotNull RandomGenerator random, int x, int z, @NotNull ChunkData chunkData) { + public void generateNoise(@NotNull WorldInfo worldInfo, @NotNull Random random, int x, int z, @NotNull ChunkData chunkData) { BukkitWorldProperties properties = new BukkitWorldProperties(worldInfo); delegate.generateChunkData(new BukkitProtoChunk(chunkData), properties, pack.getBiomeProvider(), x, z); } From 50ba1c6eabc85f7284f9de11e1357c8db7484b8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Thu, 21 Dec 2023 08:47:52 -0700 Subject: [PATCH 025/116] push changes --- .../java/com/dfsek/terra/mod/ModPlatform.java | 1 + .../mod/config/VanillaWorldProperties.java | 10 ++- .../java/com/dfsek/terra/mod/data/Codecs.java | 5 +- .../mod/generation/GenerationSettings.java | 2 +- .../MinecraftChunkGeneratorWrapper.java | 17 +++-- .../mixin/generalize/ServerWorldMixin.java | 62 +++++++++++++++++++ .../com/dfsek/terra/mod/util/PresetUtil.java | 3 +- .../com/dfsek/terra/mod/util/TagUtil.java | 2 +- .../main/resources/terra.common.mixins.json | 1 + 9 files changed, 91 insertions(+), 12 deletions(-) create mode 100644 platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index cb988d1a5..eb5eecd21 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; import net.minecraft.entity.EntityType; import net.minecraft.entity.SpawnGroup; +import net.minecraft.entity.boss.dragon.EnderDragonFight; import net.minecraft.registry.Registry; import net.minecraft.server.MinecraftServer; import net.minecraft.sound.BiomeAdditionsSound; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java index d712bc49d..d8273cc82 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java @@ -82,7 +82,11 @@ public class VanillaWorldProperties implements ConfigTemplate, Properties { @Value("minecraft.sealevel") @Default - private Integer sealevel = 62; //TODO AUTO PULL DEFAULT + private Integer sealevel = null; + + @Value("minecraft.spawn-height") + @Default + private Integer spawnHeight = 64; public String getVanillaDimension() { return vanillaDimension; @@ -160,4 +164,8 @@ public class VanillaWorldProperties implements ConfigTemplate, Properties { public Integer getSealevel() { return sealevel; } + + public Integer getSpawnHeight() { + return spawnHeight; + } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java index 562238ced..a05f78413 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java @@ -48,8 +48,9 @@ public final class Codecs { public static final Codec TERRA_GENERATION_SETTINGS = RecordCodecBuilder .create(instance -> instance.group( TERRA_CONSTANT_RANGE.fieldOf("height").stable().forGetter(GenerationSettings::height), - Codec.INT.fieldOf("sealevel").forGetter(GenerationSettings::sealevel), - Codec.BOOL.fieldOf("mob_generation").forGetter(GenerationSettings::mobGeneration)) + Codec.INT.fieldOf("sea_level").forGetter(GenerationSettings::sealevel), + Codec.BOOL.fieldOf("mob_generation").forGetter(GenerationSettings::mobGeneration), + Codec.INT.fieldOf("spawn_height").forGetter(GenerationSettings::sealevel)) .apply(instance, instance.stable(GenerationSettings::new))); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java index 7c8bdc5bc..e3cfb83c8 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java @@ -3,5 +3,5 @@ package com.dfsek.terra.mod.generation; import com.dfsek.terra.api.util.ConstantRange; -public record GenerationSettings(ConstantRange height, Integer sealevel, Boolean mobGeneration) { +public record GenerationSettings(ConstantRange height, Integer sealevel, Boolean mobGeneration, Integer spawnHeight) { } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java index 233ec9285..b227a948a 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java @@ -35,6 +35,7 @@ import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.source.BiomeAccess; import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.dimension.NetherPortal; import net.minecraft.world.gen.GenerationStep.Carver; import net.minecraft.world.gen.StructureAccessor; import net.minecraft.world.gen.StructureWeightSampler; @@ -105,12 +106,6 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun } } - @Override - public int getWorldHeight() { - return settings.height().getRange(); - } - - @Override public CompletableFuture populateNoise(Executor executor, Blender blender, NoiseConfig noiseConfig, StructureAccessor structureAccessor, Chunk chunk) { @@ -165,6 +160,11 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun }); } + @Override + public int getWorldHeight() { + return settings.height().getRange(); + } + @Override public int getSeaLevel() { return settings.sealevel(); @@ -175,6 +175,11 @@ public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chun return settings.height().getMin(); } + @Override + public int getSpawnHeight(HeightLimitView world) { + return settings.spawnHeight(); + } + @Override public int getHeight(int x, int z, Type heightmap, HeightLimitView height, NoiseConfig noiseConfig) { WorldProperties properties = MinecraftAdapter.adapt(height, SeedHack.getSeed(noiseConfig.getMultiNoiseSampler())); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java new file mode 100644 index 000000000..d82e81304 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java @@ -0,0 +1,62 @@ +package com.dfsek.terra.mod.mixin.generalize; + + +import net.minecraft.block.entity.SignText; +import net.minecraft.client.render.DimensionEffects; +import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.WorldGenerationProgressListener; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.random.RandomSequencesState; +import net.minecraft.util.profiler.Profiler; +import net.minecraft.village.raid.RaidManager; +import net.minecraft.world.MutableWorldProperties; +import net.minecraft.world.World; +import net.minecraft.world.dimension.DimensionOptions; +import net.minecraft.world.dimension.DimensionType; +import net.minecraft.world.dimension.DimensionTypes; +import net.minecraft.world.level.ServerWorldProperties; +import net.minecraft.world.level.storage.LevelStorage; +import net.minecraft.world.level.storage.LevelStorage.Session; +import net.minecraft.world.spawner.SpecialSpawner; +import org.jetbrains.annotations.Nullable; +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; + +import java.util.List; +import java.util.concurrent.Executor; +import java.util.function.Supplier; + + +@Mixin(ServerWorld.class) +public abstract class ServerWorldMixin extends World { + protected ServerWorldMixin(MutableWorldProperties properties, RegistryKey registryRef, DynamicRegistryManager registryManager, + RegistryEntry dimensionEntry, Supplier profiler, boolean isClient, + boolean debugWorld, long biomeAccess, int maxChainedNeighborUpdates) { + super(properties, registryRef, registryManager, dimensionEntry, profiler, isClient, debugWorld, biomeAccess, + maxChainedNeighborUpdates); + } + + @Redirect(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/registry/entry/RegistryEntry;matchesKey(Lnet/minecraft/registry/RegistryKey;)Z")) + public boolean matchesKeyProxy(RegistryEntry instance, RegistryKey tRegistryKey) { + if (tRegistryKey == DimensionTypes.THE_END) { + return (this.getRegistryKey() == World.END); + } + return instance.matchesKey(tRegistryKey); + } + + @Redirect(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/village/raid/RaidManager;nameFor(Lnet/minecraft/registry/entry/RegistryEntry;)Ljava/lang/String;")) + public String nameForProxy(RegistryEntry dimensionTypeEntry) { + RegistryEntry entry = dimensionTypeEntry; + if (this.getRegistryKey() == World.END) { + entry = getRegistryManager().get(RegistryKeys.DIMENSION_TYPE).getEntry(DimensionTypes.THE_NETHER).orElseThrow(); + } + return RaidManager.nameFor(entry); + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 3aa6e9ba3..ce6cdbb84 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -130,7 +130,8 @@ public class PresetUtil { : vanillaWorldProperties.getSealevel(), vanillaWorldProperties.getMobGeneration() == null ? !defaultGeneratorSettings.value().mobGenerationDisabled() - : vanillaWorldProperties.getMobGeneration()); + : vanillaWorldProperties.getMobGeneration(), + vanillaWorldProperties.getSpawnHeight()); ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, generatorSettings); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java index 36ed6afea..2324e14ee 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java @@ -33,7 +33,7 @@ public final class TagUtil { } public static void registerWorldPresetTags(Registry registry) { - logger.info("Doing preset tag garbage...."); + logger.info("Registering Preset Tags."); Map, List>> collect = tagsToMutableMap(registry); PresetUtil diff --git a/platforms/mixin-common/src/main/resources/terra.common.mixins.json b/platforms/mixin-common/src/main/resources/terra.common.mixins.json index c795b0246..8feed3a96 100644 --- a/platforms/mixin-common/src/main/resources/terra.common.mixins.json +++ b/platforms/mixin-common/src/main/resources/terra.common.mixins.json @@ -10,6 +10,7 @@ "access.StructureAccessorAccessor", "access.VillagerTypeAccessor", "fix.BeeMoveGoalsUnsynchronizedRandomAccessFix", + "generalize.ServerWorldMixin", "implementations.compat.GenerationSettingsFloraFeaturesMixin", "implementations.terra.BiomeMixin", "implementations.terra.HandleImplementationMixin", From d5f0b69bc7cf3144b3b0fed33bc92640f344c994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 5 Jan 2024 14:46:01 -0700 Subject: [PATCH 026/116] UX tweaks to biome config --- .../java/com/dfsek/terra/mod/ModPlatform.java | 53 +++++++++---------- .../terra/mod/config/SpawnGroupTemplate.java | 18 ------- .../mod/config/SpawnSettingsTemplate.java | 7 ++- .../terra/mod/config/SpawnTypeConfig.java | 14 ++--- 4 files changed, 40 insertions(+), 52 deletions(-) delete mode 100644 platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnGroupTemplate.java diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index eb5eecd21..e129eb580 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -46,7 +46,6 @@ import com.dfsek.terra.mod.config.ProtoPlatformBiome; import com.dfsek.terra.mod.config.SoundEventTemplate; import com.dfsek.terra.mod.config.SpawnCostConfig; import com.dfsek.terra.mod.config.SpawnEntryTemplate; -import com.dfsek.terra.mod.config.SpawnGroupTemplate; import com.dfsek.terra.mod.config.SpawnSettingsTemplate; import com.dfsek.terra.mod.config.SpawnTypeConfig; import com.dfsek.terra.mod.config.VillagerTypeTemplate; @@ -79,32 +78,32 @@ public abstract class ModPlatform extends AbstractPlatform { public void register(TypeRegistry registry) { super.register(registry); registry.registerLoader(PlatformBiome.class, (type, o, loader, depthTracker) -> parseBiome((String) o, depthTracker)) - .registerLoader(Identifier.class, (type, o, loader, depthTracker) -> { - Identifier identifier = Identifier.tryParse((String) o); - if(identifier == null) - throw new LoadException("Invalid identifier: " + o, depthTracker); - return identifier; - }) - .registerLoader(Precipitation.class, (type, o, loader, depthTracker) -> Precipitation.valueOf(((String) o).toUpperCase( - Locale.ROOT))) - .registerLoader(GrassColorModifier.class, - (type, o, loader, depthTracker) -> GrassColorModifier.valueOf(((String) o).toUpperCase( - Locale.ROOT))) - .registerLoader(GrassColorModifier.class, - (type, o, loader, depthTracker) -> TemperatureModifier.valueOf(((String) o).toUpperCase( - Locale.ROOT))) - .registerLoader(BiomeParticleConfig.class, BiomeParticleConfigTemplate::new) - .registerLoader(SoundEvent.class, SoundEventTemplate::new) - .registerLoader(BiomeMoodSound.class, BiomeMoodSoundTemplate::new) - .registerLoader(BiomeAdditionsSound.class, BiomeAdditionsSoundTemplate::new) - .registerLoader(MusicSound.class, MusicSoundTemplate::new) - .registerLoader(EntityType.class, EntityTypeTemplate::new) - .registerLoader(SpawnCostConfig.class, SpawnCostConfig::new) - .registerLoader(SpawnEntry.class, SpawnEntryTemplate::new) - .registerLoader(SpawnGroup.class, SpawnGroupTemplate::new) - .registerLoader(SpawnTypeConfig.class, SpawnTypeConfig::new) - .registerLoader(SpawnSettings.class, SpawnSettingsTemplate::new) - .registerLoader(VillagerType.class, VillagerTypeTemplate::new); + .registerLoader(Identifier.class, (type, o, loader, depthTracker) -> { + Identifier identifier = Identifier.tryParse((String) o); + if(identifier == null) + throw new LoadException("Invalid identifier: " + o, depthTracker); + return identifier; + }) + .registerLoader(Precipitation.class, (type, o, loader, depthTracker) -> Precipitation.valueOf(((String) o).toUpperCase( + Locale.ROOT))) + .registerLoader(GrassColorModifier.class, + (type, o, loader, depthTracker) -> GrassColorModifier.valueOf(((String) o).toUpperCase( + Locale.ROOT))) + .registerLoader(GrassColorModifier.class, + (type, o, loader, depthTracker) -> TemperatureModifier.valueOf(((String) o).toUpperCase( + Locale.ROOT))) + .registerLoader(SpawnGroup.class,(type, o, loader, depthTracker) -> SpawnGroup.valueOf((String) o)) + .registerLoader(BiomeParticleConfig.class, BiomeParticleConfigTemplate::new) + .registerLoader(SoundEvent.class, SoundEventTemplate::new) + .registerLoader(BiomeMoodSound.class, BiomeMoodSoundTemplate::new) + .registerLoader(BiomeAdditionsSound.class, BiomeAdditionsSoundTemplate::new) + .registerLoader(MusicSound.class, MusicSoundTemplate::new) + .registerLoader(EntityType.class, EntityTypeTemplate::new) + .registerLoader(SpawnCostConfig.class, SpawnCostConfig::new) + .registerLoader(SpawnEntry.class, SpawnEntryTemplate::new) + .registerLoader(SpawnTypeConfig.class, SpawnTypeConfig::new) + .registerLoader(SpawnSettings.class, SpawnSettingsTemplate::new) + .registerLoader(VillagerType.class, VillagerTypeTemplate::new); } private ProtoPlatformBiome parseBiome(String id, DepthTracker tracker) throws LoadException { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnGroupTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnGroupTemplate.java deleted file mode 100644 index 0ae2047f2..000000000 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnGroupTemplate.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.mod.config; - -import com.dfsek.tectonic.api.config.template.annotations.Default; -import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import net.minecraft.entity.SpawnGroup; - - -public class SpawnGroupTemplate implements ObjectTemplate { - @Value("group") - @Default - private String group = null; - - @Override - public SpawnGroup get() { - return SpawnGroup.valueOf(group); - } -} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnSettingsTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnSettingsTemplate.java index 9392e94e1..86e9de007 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnSettingsTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnSettingsTemplate.java @@ -3,7 +3,9 @@ package com.dfsek.terra.mod.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import net.minecraft.entity.SpawnGroup; import net.minecraft.world.biome.SpawnSettings; +import net.minecraft.world.biome.SpawnSettings.SpawnEntry; import java.util.List; @@ -25,7 +27,10 @@ public class SpawnSettingsTemplate implements ObjectTemplate { public SpawnSettings get() { SpawnSettings.Builder builder = new SpawnSettings.Builder(); for(SpawnTypeConfig spawn : spawns) { - builder.spawn(spawn.getGroup(), spawn.getEntry()); + SpawnGroup group = spawn.getGroup(); + for (SpawnEntry entry : spawn.getEntry()) { + builder.spawn(group, entry); + } } for(SpawnCostConfig cost : costs) { builder.spawnCost(cost.getType(), cost.getMass(), cost.getGravity()); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnTypeConfig.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnTypeConfig.java index 9384f991d..b18c87e62 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnTypeConfig.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnTypeConfig.java @@ -6,21 +6,23 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import net.minecraft.entity.SpawnGroup; import net.minecraft.world.biome.SpawnSettings.SpawnEntry; +import java.util.List; + public class SpawnTypeConfig implements ObjectTemplate { @Value("group") @Default private SpawnGroup group = null; - - @Value("entry") + + @Value("entries") @Default - private SpawnEntry entry = null; - + private List entry = null; + public SpawnGroup getGroup() { return group; } - - public SpawnEntry getEntry() { + + public List getEntry() { return entry; } From f877f861cfc481972dfef73a28901df8c11c9ddc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 5 Jan 2024 14:47:26 -0700 Subject: [PATCH 027/116] use Ranges --- .../terra/mod/config/MusicSoundTemplate.java | 19 +++++++++---------- .../terra/mod/config/SpawnEntryTemplate.java | 17 ++++++++--------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java index 83a2f20ec..94a6341b3 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java @@ -3,6 +3,9 @@ package com.dfsek.terra.mod.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; + +import com.dfsek.terra.api.util.Range; + import net.minecraft.registry.Registries; import net.minecraft.sound.MusicSound; import net.minecraft.sound.SoundEvent; @@ -12,25 +15,21 @@ public class MusicSoundTemplate implements ObjectTemplate { @Value("sound") @Default private SoundEvent sound = null; - - @Value("min-delay") + + @Value("delay") @Default - private Integer minDelay = null; - - @Value("max-delay") - @Default - private Integer maxDelay = null; - + private Range delay = null; + @Value("replace-current-music") @Default private Boolean replaceCurrentMusic = null; @Override public MusicSound get() { - if(sound == null || minDelay == null || maxDelay == null || replaceCurrentMusic == null) { + if(sound == null || delay == null || replaceCurrentMusic == null) { return null; } else { - return new MusicSound(Registries.SOUND_EVENT.getEntry(sound), minDelay, maxDelay, replaceCurrentMusic); + return new MusicSound(Registries.SOUND_EVENT.getEntry(sound), delay.getMin(), delay.getMax(), replaceCurrentMusic); } } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java index 4fdf390d9..f7aa770bd 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java @@ -3,6 +3,9 @@ package com.dfsek.terra.mod.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; + +import com.dfsek.terra.api.util.Range; + import net.minecraft.entity.EntityType; import net.minecraft.world.biome.SpawnSettings.SpawnEntry; @@ -15,17 +18,13 @@ public class SpawnEntryTemplate implements ObjectTemplate { @Value("weight") @Default private Integer weight = null; - - @Value("min-group-size") + + @Value("group-size") @Default - private Integer minGroupSize = null; - - @Value("max-group-size") - @Default - private Integer maxGroupSize = null; - + private Range groupSize = null; + @Override public SpawnEntry get() { - return new SpawnEntry(type, weight, minGroupSize, maxGroupSize); + return new SpawnEntry(type, weight, groupSize.getMin(), groupSize.getMax()); } } From 4970bf5720edfbe72ce138c27d65020cbf153379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 5 Jan 2024 14:57:36 -0700 Subject: [PATCH 028/116] Implement linear map normalizer Updated astrash commit --- .../dfsek/terra/addons/noise/NoiseAddon.java | 1 + .../LinearMapNormalizerTemplate.java | 27 ++++++++++++++++++ .../noise/normalizer/LinearMapNormalizer.java | 28 +++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java create mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.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 ca3aa1a44..500f44c85 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 @@ -97,6 +97,7 @@ public class NoiseAddon implements AddonInitializer { .applyLoader(CubicSpline.Point.class, CubicSplinePointTemplate::new); noiseRegistry.register(addon.key("LINEAR"), LinearNormalizerTemplate::new); + noiseRegistry.register(addon.key("LINEAR_MAP"), LinearMapNormalizerTemplate::new); noiseRegistry.register(addon.key("NORMAL"), NormalNormalizerTemplate::new); noiseRegistry.register(addon.key("CLAMP"), ClampNormalizerTemplate::new); noiseRegistry.register(addon.key("PROBABILITY"), ProbabilityNormalizerTemplate::new); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java new file mode 100644 index 000000000..56a50ad54 --- /dev/null +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java @@ -0,0 +1,27 @@ +package com.dfsek.terra.addons.noise.config.templates.normalizer; + +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import com.dfsek.terra.addons.noise.normalizer.LinearMapNormalizer; +import com.dfsek.terra.api.noise.NoiseSampler; + + +public class LinearMapNormalizerTemplate extends NormalizerTemplate { + + @Value("from.a") + private double aFrom; + + @Value("from.b") + private double bFrom; + + @Value("to.a") + private double aTo; + + @Value("to.b") + private double bTo; + + @Override + public NoiseSampler get() { + return new LinearMapNormalizer(function, aFrom, aTo, bFrom, bTo); + } +} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java new file mode 100644 index 000000000..d124ef8de --- /dev/null +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java @@ -0,0 +1,28 @@ +package com.dfsek.terra.addons.noise.normalizer; + +import com.dfsek.terra.api.noise.NoiseSampler; + + +public class LinearMapNormalizer extends Normalizer { + + private final double aFrom; + + private final double aTo; + + private final double bFrom; + + private final double bTo; + + public LinearMapNormalizer(NoiseSampler sampler, double aFrom, double aTo, double bFrom, double bTo) { + super(sampler); + this.aFrom = aFrom; + this.aTo = aTo; + this.bFrom = bFrom; + this.bTo = bTo; + } + + @Override + public double normalize(double in) { + return (in - aFrom) * (aTo - bTo) / (aFrom - bFrom) + aTo; + } +} From 179a304cd2330b719d2e34d0fae78f682818a544 Mon Sep 17 00:00:00 2001 From: Astrash Date: Tue, 23 Aug 2022 10:35:00 +1000 Subject: [PATCH 029/116] Add default 'from' values for linear map template --- .../templates/normalizer/LinearMapNormalizerTemplate.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java index 56a50ad54..8a073641c 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; +import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.addons.noise.normalizer.LinearMapNormalizer; @@ -9,10 +10,12 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class LinearMapNormalizerTemplate extends NormalizerTemplate { @Value("from.a") - private double aFrom; + @Default + private double aFrom = -1; @Value("from.b") - private double bFrom; + @Default + private double bFrom = 1; @Value("to.a") private double aTo; From 56941c237c61b1b6483ece53b22c294c2cf5ad31 Mon Sep 17 00:00:00 2001 From: Astrash Date: Tue, 23 Aug 2022 11:06:32 +1000 Subject: [PATCH 030/116] Add meta annotations --- .../normalizer/LinearMapNormalizerTemplate.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java index 8a073641c..1a04fe190 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.addons.noise.normalizer.LinearMapNormalizer; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; @@ -11,17 +12,17 @@ public class LinearMapNormalizerTemplate extends NormalizerTemplate Date: Fri, 5 Jan 2024 15:00:16 -0700 Subject: [PATCH 031/116] Add parameter to turn off salting cellular lookup another updated astrash commit --- .../templates/noise/CellularNoiseTemplate.java | 7 ++++++- .../noise/samplers/noise/CellularSampler.java | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) 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 01b370e55..c1fdd2122 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 @@ -34,7 +34,11 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Value("lookup") @Default private @Meta NoiseSampler lookup = new OpenSimplex2Sampler(); - + + @Value("salt-lookup") + @Default + private @Meta boolean saltLookup = true; + @Override public NoiseSampler get() { CellularSampler sampler = new CellularSampler(); @@ -44,6 +48,7 @@ public class CellularNoiseTemplate extends NoiseTemplate { sampler.setReturnType(cellularReturnType); sampler.setDistanceFunction(cellularDistanceFunction); sampler.setSalt(salt); + sampler.setSaltLookup(saltLookup); return sampler; } } 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 6facef332..8e163f9ad 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 @@ -197,7 +197,9 @@ public class CellularSampler extends NoiseFunction { private double jitterModifier = 1.0; private NoiseSampler noiseLookup; - + + private boolean saltLookup; + public CellularSampler() { noiseLookup = new OpenSimplex2Sampler(); } @@ -217,7 +219,11 @@ public class CellularSampler extends NoiseFunction { public void setReturnType(ReturnType returnType) { this.returnType = returnType; } - + + public void setSaltLookup(boolean saltLookup) { + this.saltLookup = saltLookup; + } + @Override public double getNoiseRaw(long sl, double x, double y) { int seed = (int) sl; @@ -286,8 +292,8 @@ public class CellularSampler extends NoiseFunction { case Distance2Sub -> distance1 - distance0 - 1; case Distance2Mul -> distance1 * distance0 * 0.5 - 1; case Distance2Div -> distance0 / distance1 - 1; - case NoiseLookup -> noiseLookup.noise(sl, centerX, centerY); - case LocalNoiseLookup -> noiseLookup.noise(sl, x / frequency - centerX, y / frequency - centerY); + case NoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), centerX, centerY); + case LocalNoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), x / frequency - centerX, y / frequency - centerY); case Distance3 -> distance2 - 1; case Distance3Add -> (distance2 + distance0) * 0.5 - 1; case Distance3Sub -> distance2 - distance0 - 1; @@ -377,8 +383,8 @@ public class CellularSampler extends NoiseFunction { case Distance2Sub -> distance1 - distance0 - 1; case Distance2Mul -> distance1 * distance0 * 0.5 - 1; case Distance2Div -> distance0 / distance1 - 1; - case NoiseLookup -> noiseLookup.noise(sl, centerX, centerY, centerZ); - case LocalNoiseLookup -> noiseLookup.noise(sl, x / frequency - centerX, y / frequency - centerY, z / frequency - centerZ); + case NoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), centerX, centerY, centerZ); + case LocalNoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), x / frequency - centerX, y / frequency - centerY, z / frequency - centerZ); case Distance3 -> distance2 - 1; case Distance3Add -> (distance2 + distance0) * 0.5 - 1; case Distance3Sub -> distance2 - distance0 - 1; From ecbba57b0a418dde05ed95fc63006336159970ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 5 Jan 2024 15:01:36 -0700 Subject: [PATCH 032/116] fix enum to uppcases --- .../main/java/com/dfsek/terra/mod/ModPlatform.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index e129eb580..bb8f74ed6 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -84,15 +84,12 @@ public abstract class ModPlatform extends AbstractPlatform { throw new LoadException("Invalid identifier: " + o, depthTracker); return identifier; }) - .registerLoader(Precipitation.class, (type, o, loader, depthTracker) -> Precipitation.valueOf(((String) o).toUpperCase( - Locale.ROOT))) + .registerLoader(Precipitation.class, (type, o, loader, depthTracker) -> Precipitation.valueOf(((String) o).toUpperCase())) .registerLoader(GrassColorModifier.class, - (type, o, loader, depthTracker) -> GrassColorModifier.valueOf(((String) o).toUpperCase( - Locale.ROOT))) - .registerLoader(GrassColorModifier.class, - (type, o, loader, depthTracker) -> TemperatureModifier.valueOf(((String) o).toUpperCase( - Locale.ROOT))) - .registerLoader(SpawnGroup.class,(type, o, loader, depthTracker) -> SpawnGroup.valueOf((String) o)) + (type, o, loader, depthTracker) -> GrassColorModifier.valueOf(((String) o).toUpperCase())) + .registerLoader(TemperatureModifier.class, + (type, o, loader, depthTracker) -> TemperatureModifier.valueOf(((String) o).toUpperCase())) + .registerLoader(SpawnGroup.class, (type, o, loader, depthTracker) -> SpawnGroup.valueOf((String) o)) .registerLoader(BiomeParticleConfig.class, BiomeParticleConfigTemplate::new) .registerLoader(SoundEvent.class, SoundEventTemplate::new) .registerLoader(BiomeMoodSound.class, BiomeMoodSoundTemplate::new) From 77f766b8bbda3f53f7dad23662ef0d59ccb29720 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 5 Jan 2024 15:10:19 -0700 Subject: [PATCH 033/116] remove image and pipeline v1 --- common/addons/biome-provider-image-v2/LICENSE | 21 --- .../addons/biome-provider-image-v2/README.md | 5 - .../biome-provider-image-v2/build.gradle.kts | 8 -- .../src/main/resources/terra.addon.yml | 14 -- common/addons/biome-provider-image/README.md | 9 +- .../biome-provider-image/build.gradle.kts | 3 +- .../biome/image/ImageBiomeProvider.java | 84 ----------- .../biome/image/ImageBiomeProviderAddon.java | 56 -------- .../biome/image/ImageProviderTemplate.java | 45 ------ .../biome/image/v2/ImageBiomeProvider.java | 0 .../image/v2/ImageBiomeProviderAddon.java | 0 .../v2/config/ImageProviderTemplate.java | 0 .../ClosestBiomeColorConverterTemplate.java | 0 .../ExactBiomeColorConverterTemplate.java | 0 .../DefinedBiomeColorMappingTemplate.java | 0 .../src/main/resources/terra.addon.yml | 8 +- .../addons/biome-provider-pipeline-v2/LICENSE | 21 --- .../biome-provider-pipeline-v2/README.md | 12 -- .../build.gradle.kts | 5 - .../src/main/resources/terra.addon.yml | 12 -- .../addons/biome-provider-pipeline/README.md | 9 +- .../biome-provider-pipeline/build.gradle.kts | 4 +- .../biome/pipeline/BiomeHolderImpl.java | 94 ------------- .../addons/biome/pipeline/BiomePipeline.java | 83 ----------- .../biome/pipeline/BiomePipelineAddon.java | 96 ------------- .../biome/pipeline/BiomePipelineColumn.java | 71 ---------- .../biome/pipeline/BiomePipelineProvider.java | 130 ------------------ .../biome/pipeline/api/BiomeHolder.java | 26 ---- .../pipeline/api/delegate/BiomeDelegate.java | 35 ----- .../pipeline/api/delegate/DelegatedBiome.java | 40 ------ .../api/delegate/EphemeralBiomeDelegate.java | 51 ------- .../pipeline/api/delegate/SelfDelegate.java | 40 ------ .../biome/pipeline/api/stage/Stage.java | 20 --- .../api/stage/type/BiomeExpander.java | 15 -- .../pipeline/api/stage/type/BiomeMutator.java | 37 ----- .../pipeline/config/BiomeDelegateLoader.java | 32 ----- .../config/BiomePipelineTemplate.java | 54 -------- .../config/BiomeProviderTemplate.java | 37 ----- .../config/SamplerSourceTemplate.java | 34 ----- .../biome/pipeline/config/SourceTemplate.java | 17 --- .../pipeline/config/stage/StageTemplate.java | 23 ---- .../stage/expander/ExpanderStageTemplate.java | 21 --- .../mutator/BorderListMutatorTemplate.java | 42 ------ .../stage/mutator/BorderMutatorTemplate.java | 36 ----- .../mutator/ReplaceListMutatorTemplate.java | 38 ----- .../stage/mutator/ReplaceMutatorTemplate.java | 33 ----- .../stage/mutator/SmoothMutatorTemplate.java | 21 --- .../pipeline/expand/FractalExpander.java | 27 ---- .../pipeline/mutator/BorderListMutator.java | 67 --------- .../biome/pipeline/mutator/BorderMutator.java | 66 --------- .../pipeline/mutator/ReplaceListMutator.java | 72 ---------- .../pipeline/mutator/ReplaceMutator.java | 57 -------- .../biome/pipeline/mutator/SmoothMutator.java | 46 ------- .../biome/pipeline/source/BiomeSource.java | 17 --- .../biome/pipeline/source/SamplerSource.java | 33 ----- .../biome/pipeline/stages/ExpanderStage.java | 37 ----- .../biome/pipeline/stages/MutatorStage.java | 46 ------- .../biome/pipeline/v2/BiomePipelineAddon.java | 0 .../pipeline/v2/BiomePipelineColumn.java | 0 .../pipeline/v2/PipelineBiomeProvider.java | 0 .../biome/pipeline/v2/api/BiomeChunk.java | 0 .../biome/pipeline/v2/api/Expander.java | 0 .../biome/pipeline/v2/api/Pipeline.java | 0 .../biome/pipeline/v2/api/SeededVector.java | 0 .../addons/biome/pipeline/v2/api/Source.java | 0 .../addons/biome/pipeline/v2/api/Stage.java | 0 .../v2/api/biome/DelegatedPipelineBiome.java | 0 .../pipeline/v2/api/biome/PipelineBiome.java | 0 .../api/biome/PlaceholderPipelineBiome.java | 0 .../v2/api/biome/SelfPipelineBiome.java | 0 .../v2/config/BiomePipelineTemplate.java | 0 .../v2/config/PipelineBiomeLoader.java | 0 .../config/source/SamplerSourceTemplate.java | 0 .../v2/config/source/SourceTemplate.java | 0 .../v2/config/stage/StageTemplate.java | 0 .../stage/expander/ExpanderStageTemplate.java | 0 .../mutator/BorderListStageTemplate.java | 0 .../stage/mutator/BorderStageTemplate.java | 0 .../mutator/ReplaceListStageTemplate.java | 0 .../stage/mutator/ReplaceStageTemplate.java | 0 .../stage/mutator/SmoothStageTemplate.java | 0 .../pipeline/v2/pipeline/BiomeChunkImpl.java | 0 .../pipeline/v2/pipeline/PipelineImpl.java | 0 .../pipeline/v2/source/SamplerSource.java | 0 .../pipeline/v2/source/SingleSource.java | 0 .../v2/stage/expander/FractalExpander.java | 0 .../v2/stage/mutators/BorderListStage.java | 0 .../v2/stage/mutators/BorderStage.java | 0 .../v2/stage/mutators/ReplaceListStage.java | 0 .../v2/stage/mutators/ReplaceStage.java | 0 .../v2/stage/mutators/SmoothStage.java | 0 .../src/main/resources/terra.addon.yml | 4 +- .../dfsek/terra/addons/noise/NoiseAddon.java | 1 + common/addons/pipeline-image/build.gradle.kts | 2 +- 94 files changed, 24 insertions(+), 1893 deletions(-) delete mode 100644 common/addons/biome-provider-image-v2/LICENSE delete mode 100644 common/addons/biome-provider-image-v2/README.md delete mode 100644 common/addons/biome-provider-image-v2/build.gradle.kts delete mode 100644 common/addons/biome-provider-image-v2/src/main/resources/terra.addon.yml delete mode 100644 common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java delete mode 100644 common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java delete mode 100644 common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java rename common/addons/{biome-provider-image-v2 => biome-provider-image}/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java (100%) rename common/addons/{biome-provider-image-v2 => biome-provider-image}/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProviderAddon.java (100%) rename common/addons/{biome-provider-image-v2 => biome-provider-image}/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/ImageProviderTemplate.java (100%) rename common/addons/{biome-provider-image-v2 => biome-provider-image}/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ClosestBiomeColorConverterTemplate.java (100%) rename common/addons/{biome-provider-image-v2 => biome-provider-image}/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ExactBiomeColorConverterTemplate.java (100%) rename common/addons/{biome-provider-image-v2 => biome-provider-image}/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/mapping/DefinedBiomeColorMappingTemplate.java (100%) delete mode 100644 common/addons/biome-provider-pipeline-v2/LICENSE delete mode 100644 common/addons/biome-provider-pipeline-v2/README.md delete mode 100644 common/addons/biome-provider-pipeline-v2/build.gradle.kts delete mode 100644 common/addons/biome-provider-pipeline-v2/src/main/resources/terra.addon.yml delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/BiomeDelegate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/DelegatedBiome.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/EphemeralBiomeDelegate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/SelfDelegate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/Stage.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeExpander.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeDelegateLoader.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java (100%) rename common/addons/{biome-provider-pipeline-v2 => biome-provider-pipeline}/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java (100%) diff --git a/common/addons/biome-provider-image-v2/LICENSE b/common/addons/biome-provider-image-v2/LICENSE deleted file mode 100644 index 22b8e06e5..000000000 --- a/common/addons/biome-provider-image-v2/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020-2023 Polyhedral Development - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/common/addons/biome-provider-image-v2/README.md b/common/addons/biome-provider-image-v2/README.md deleted file mode 100644 index 573eabee7..000000000 --- a/common/addons/biome-provider-image-v2/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# biome-provider-image-v2 - -Implements and registers the `IMAGE` biome provider, which -utilizes various config types provided by the `library-image` addon to -distribute biomes based on images. diff --git a/common/addons/biome-provider-image-v2/build.gradle.kts b/common/addons/biome-provider-image-v2/build.gradle.kts deleted file mode 100644 index 989c8567c..000000000 --- a/common/addons/biome-provider-image-v2/build.gradle.kts +++ /dev/null @@ -1,8 +0,0 @@ -version = version("1.0.1") - -dependencies { - compileOnlyApi(project(":common:addons:manifest-addon-loader")) - compileOnlyApi(project(":common:addons:library-image")) - - -} diff --git a/common/addons/biome-provider-image-v2/src/main/resources/terra.addon.yml b/common/addons/biome-provider-image-v2/src/main/resources/terra.addon.yml deleted file mode 100644 index be3dd2af4..000000000 --- a/common/addons/biome-provider-image-v2/src/main/resources/terra.addon.yml +++ /dev/null @@ -1,14 +0,0 @@ -schema-version: 1 -contributors: - - Terra contributors -id: biome-provider-image-v2 -version: @VERSION@ -entrypoints: - - "com.dfsek.terra.addons.biome.image.v2.ImageBiomeProviderAddon" -website: - issues: https://github.com/PolyhedralDev/Terra/issues - source: https://github.com/PolyhedralDev/Terra - docs: https://terra.polydev.org -license: MIT License -depends: - library-image: "1.+" diff --git a/common/addons/biome-provider-image/README.md b/common/addons/biome-provider-image/README.md index 49e9b8fdb..573eabee7 100644 --- a/common/addons/biome-provider-image/README.md +++ b/common/addons/biome-provider-image/README.md @@ -1,6 +1,5 @@ -# biome-provider-image +# biome-provider-image-v2 -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 +Implements and registers the `IMAGE` biome provider, which +utilizes various config types provided by the `library-image` addon to +distribute biomes based on images. diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index e01ce95f8..55b7f98aa 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -1,7 +1,8 @@ -version = version("1.0.1") +version = version("2.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) + compileOnlyApi(project(":common:addons:library-image")) } 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 deleted file mode 100644 index 47132b653..000000000 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.image; - -import java.awt.Color; -import java.awt.image.BufferedImage; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.Set; - -import com.dfsek.terra.api.world.biome.Biome; -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 Math.abs(a.getRed() - b.getRed()) + Math.abs(a.getGreen() - b.getGreen()) + Math.abs(a.getBlue() - b.getBlue()); - } - - @Override - public Biome getBiome(int x, int y, int z, long seed) { - return getBiome(x, z); - } - - public Biome getBiome(int x, int z) { - 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; - })); - } - - @Override - public Optional getBaseBiome(int x, int z, long seed) { - return Optional.of(getBiome(x, z)); - } - - @Override - public Iterable getBiomes() { - return colorBiomeMap.values(); - } - - public enum Align { - CENTER { - @Override - public Color getColor(BufferedImage image, int x, int z) { - return new Color(image.getRGB(Math.floorMod(x - image.getWidth() / 2, image.getWidth()), - Math.floorMod(z - image.getHeight() / 2, image.getHeight()))); - } - }, - NONE { - @Override - public Color getColor(BufferedImage image, int x, int z) { - return new Color(image.getRGB(Math.floorMod(x, image.getWidth()), Math.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 deleted file mode 100644 index b561910bf..000000000 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.image; - -import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.function.Supplier; - -import com.dfsek.terra.addons.manifest.api.AddonInitializer; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class ImageBiomeProviderAddon implements AddonInitializer { - - public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { - }; - private static final Logger logger = LoggerFactory.getLogger(ImageBiomeProviderAddon.class); - @Inject - private Platform platform; - - @Inject - private BaseAddon addon; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(addon, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( - PROVIDER_REGISTRY_KEY); - providerRegistry.register(addon.key("IMAGE"), - () -> new ImageProviderTemplate(event.getPack().getRegistry(Biome.class))); - }) - .failThrough(); - if(platform.getTerraConfig().isDebugLog()) - logger.warn( - "The biome-provider-image addon is deprecated and scheduled for removal in Terra 7.0. It is recommended to use the " + - "biome-provider-image-v2 addon for future pack development instead."); - } -} 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 deleted file mode 100644 index 01bbffab6..000000000 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.image; - -import com.dfsek.tectonic.api.config.template.annotations.Default; -import com.dfsek.tectonic.api.config.template.annotations.Description; -import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; - -import java.awt.image.BufferedImage; -import java.util.HashSet; - -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -@SuppressWarnings("FieldMayBeFinal") -public class ImageProviderTemplate implements ObjectTemplate { - private final Registry biomes; - @Value("resolution") - @Default - @Description("Sets the resolution at which to sample the image.") - private int resolution = 1; - @Value("image.name") - @Description("Sets the location of the image on the filesystem, relative to the pack root.") - private BufferedImage image; - @Value("image.align") - @Description("Sets the alignment style to use for the image.") - 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-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java similarity index 100% rename from common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java diff --git a/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProviderAddon.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProviderAddon.java similarity index 100% rename from common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProviderAddon.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProviderAddon.java diff --git a/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/ImageProviderTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/ImageProviderTemplate.java similarity index 100% rename from common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/ImageProviderTemplate.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/ImageProviderTemplate.java diff --git a/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ClosestBiomeColorConverterTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ClosestBiomeColorConverterTemplate.java similarity index 100% rename from common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ClosestBiomeColorConverterTemplate.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ClosestBiomeColorConverterTemplate.java diff --git a/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ExactBiomeColorConverterTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ExactBiomeColorConverterTemplate.java similarity index 100% rename from common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ExactBiomeColorConverterTemplate.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ExactBiomeColorConverterTemplate.java diff --git a/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/mapping/DefinedBiomeColorMappingTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/mapping/DefinedBiomeColorMappingTemplate.java similarity index 100% rename from common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/mapping/DefinedBiomeColorMappingTemplate.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/mapping/DefinedBiomeColorMappingTemplate.java diff --git a/common/addons/biome-provider-image/src/main/resources/terra.addon.yml b/common/addons/biome-provider-image/src/main/resources/terra.addon.yml index 3fd86ad52..be3dd2af4 100644 --- a/common/addons/biome-provider-image/src/main/resources/terra.addon.yml +++ b/common/addons/biome-provider-image/src/main/resources/terra.addon.yml @@ -1,12 +1,14 @@ schema-version: 1 contributors: - Terra contributors -id: biome-provider-image +id: biome-provider-image-v2 version: @VERSION@ entrypoints: - - "com.dfsek.terra.addons.biome.image.ImageBiomeProviderAddon" + - "com.dfsek.terra.addons.biome.image.v2.ImageBiomeProviderAddon" website: issues: https://github.com/PolyhedralDev/Terra/issues source: https://github.com/PolyhedralDev/Terra docs: https://terra.polydev.org -license: MIT License \ No newline at end of file +license: MIT License +depends: + library-image: "1.+" diff --git a/common/addons/biome-provider-pipeline-v2/LICENSE b/common/addons/biome-provider-pipeline-v2/LICENSE deleted file mode 100644 index 22b8e06e5..000000000 --- a/common/addons/biome-provider-pipeline-v2/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020-2023 Polyhedral Development - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline-v2/README.md b/common/addons/biome-provider-pipeline-v2/README.md deleted file mode 100644 index 745ffa241..000000000 --- a/common/addons/biome-provider-pipeline-v2/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# biome-provider-pipeline-2 - -The second version of the Biome Pipeline, a procedural biome provider that uses a series -of "stages" to apply "mutations" to a 2D grid of biomes. - -Version 2 is a re-implementation of the original addon with the primary goal of providing -consistent scaling for noise relative to the world -(See https://github.com/PolyhedralDev/Terra/issues/264 for more details), and has been -included as a separate addon to maintain parity with packs utilizing the first version. - -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-v2/build.gradle.kts b/common/addons/biome-provider-pipeline-v2/build.gradle.kts deleted file mode 100644 index f0b8af23a..000000000 --- a/common/addons/biome-provider-pipeline-v2/build.gradle.kts +++ /dev/null @@ -1,5 +0,0 @@ -version = version("1.0.1") - -dependencies { - compileOnlyApi(project(":common:addons:manifest-addon-loader")) -} \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline-v2/src/main/resources/terra.addon.yml b/common/addons/biome-provider-pipeline-v2/src/main/resources/terra.addon.yml deleted file mode 100644 index f800574ca..000000000 --- a/common/addons/biome-provider-pipeline-v2/src/main/resources/terra.addon.yml +++ /dev/null @@ -1,12 +0,0 @@ -schema-version: 1 -contributors: - - Terra contributors -id: biome-provider-pipeline-v2 -version: @VERSION@ -entrypoints: - - "com.dfsek.terra.addons.biome.pipeline.v2.BiomePipelineAddon" -website: - issues: https://github.com/PolyhedralDev/Terra/issues - source: https://github.com/PolyhedralDev/Terra - docs: https://terra.polydev.org -license: MIT License \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/README.md b/common/addons/biome-provider-pipeline/README.md index 9e55109a7..745ffa241 100644 --- a/common/addons/biome-provider-pipeline/README.md +++ b/common/addons/biome-provider-pipeline/README.md @@ -1,7 +1,12 @@ -# biome-provider-pipeline +# biome-provider-pipeline-2 -Implements the Biome Pipeline, a procedural biome provider that uses a series +The second version of the Biome Pipeline, a procedural biome provider that uses a series of "stages" to apply "mutations" to a 2D grid of biomes. +Version 2 is a re-implementation of the original addon with the primary goal of providing +consistent scaling for noise relative to the world +(See https://github.com/PolyhedralDev/Terra/issues/264 for more details), and has been +included as a separate addon to maintain parity with packs utilizing the first version. + 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/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 2e19b7c85..2bbce32db 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -1,5 +1,5 @@ -version = version("1.0.2") +version = version("2.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) -} +} \ 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 deleted file mode 100644 index 73dc95675..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeExpander; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.util.vector.Vector2; - - -public class BiomeHolderImpl implements BiomeHolder { - private final Vector2.Mutable origin; - private final int width; - private final int offset; - private BiomeDelegate[][] biomes; - - public BiomeHolderImpl(int width, Vector2.Mutable origin) { - width += 4; - this.width = width; - biomes = new BiomeDelegate[width][width]; - this.origin = origin; - this.offset = 2; - } - - private BiomeHolderImpl(BiomeDelegate[][] biomes, Vector2.Mutable 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) { - BiomeDelegate[][] old = biomes; - int newWidth = width * 2 - 1; - - biomes = new BiomeDelegate[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]); - 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]); - 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]); - } - } - 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++) { - for(int z = 0; z < width; z++) { - BiomeMutator.ViewPoint viewPoint = new BiomeMutator.ViewPoint(this, x, z); - biomes[x][z] = mutator.mutate(viewPoint, x + origin.getX(), z + origin.getZ(), seed); - } - } - } - - @Override - public void fill(BiomeSource source, long seed) { - for(int x = 0; x < width; x++) { - for(int z = 0; z < width; z++) { - biomes[x][z] = source.getBiome(origin.getX() + x, origin.getZ() + z, seed); - } - } - } - - @Override - public BiomeDelegate getBiome(int x, int z) { - x += offset; - z += offset; - return getBiomeRaw(x, z); - } - - @Override - public BiomeDelegate getBiomeRaw(int x, int z) { - if(x >= width || z >= width || x < 0 || z < 0) return null; - return biomes[x][z]; - } -} 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 deleted file mode 100644 index e5f5f9ed6..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.util.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) { - BiomeHolder holder = new BiomeHolderImpl(init, Vector2.of(x * (init - 1), z * (init - 1)).mutable()); - holder.fill(source, seed); - for(Stage stage : stages) holder = stage.apply(holder, seed); - return holder; - } - - public BiomeSource getSource() { - return source; - } - - public List getStages() { - return Collections.unmodifiableList(stages); - } - - public int getSize() { - return size; - } - - public static final class BiomePipelineBuilder { - private final int init; - private final 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 deleted file mode 100644 index 5df9c900c..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline; - -import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.function.Supplier; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; -import com.dfsek.terra.addons.biome.pipeline.config.BiomeDelegateLoader; -import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.SamplerSourceTemplate; -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.source.BiomeSource; -import com.dfsek.terra.addons.manifest.api.AddonInitializer; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.BaseAddon; -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.inject.annotations.Inject; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class BiomePipelineAddon implements AddonInitializer { - - 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<>() { - }; - private static final Logger logger = LoggerFactory.getLogger(BiomePipelineAddon.class); - @Inject - private Platform platform; - - @Inject - private BaseAddon addon; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(addon, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( - PROVIDER_REGISTRY_KEY); - providerRegistry.register(addon.key("PIPELINE"), BiomePipelineTemplate::new); - }) - .then(event -> { - CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry( - SOURCE_REGISTRY_KEY); - sourceRegistry.register(addon.key("SAMPLER"), SamplerSourceTemplate::new); - }) - .then(event -> { - CheckedRegistry>> stageRegistry = event.getPack().getOrCreateRegistry( - STAGE_REGISTRY_KEY); - stageRegistry.register(addon.key("FRACTAL_EXPAND"), ExpanderStageTemplate::new); - stageRegistry.register(addon.key("SMOOTH"), SmoothMutatorTemplate::new); - stageRegistry.register(addon.key("REPLACE"), ReplaceMutatorTemplate::new); - stageRegistry.register(addon.key("REPLACE_LIST"), ReplaceListMutatorTemplate::new); - stageRegistry.register(addon.key("BORDER"), BorderMutatorTemplate::new); - stageRegistry.register(addon.key("BORDER_LIST"), BorderListMutatorTemplate::new); - }) - .failThrough(); - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(addon, ConfigPackPostLoadEvent.class) - .then(event -> { - Registry biomeRegistry = event.getPack().getRegistry(Biome.class); - event.getPack().applyLoader(BiomeDelegate.class, new BiomeDelegateLoader(biomeRegistry)); - }); - - if(platform.getTerraConfig().isDebugLog()) - logger.warn( - "The biome-provider-pipeline addon is deprecated and scheduled for removal in Terra 7.0. It is recommended to use the" + - " biome-provider-pipeline-v2 addon for future pack development instead."); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java deleted file mode 100644 index 1c03359af..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline; - -import java.util.function.Consumer; - -import com.dfsek.terra.api.util.Column; -import com.dfsek.terra.api.util.function.IntIntObjConsumer; -import com.dfsek.terra.api.util.function.IntObjConsumer; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -class BiomePipelineColumn implements Column { - private final int min; - private final int max; - - private final int x; - private final int z; - private final Biome biome; - - protected BiomePipelineColumn(BiomeProvider biomeProvider, int min, int max, int x, int z, long seed) { - this.min = min; - this.max = max; - this.x = x; - this.z = z; - this.biome = biomeProvider.getBiome(x, 0, z, seed); - } - - @Override - public int getMinY() { - return min; - } - - @Override - public int getMaxY() { - return max; - } - - @Override - public int getX() { - return x; - } - - @Override - public int getZ() { - return z; - } - - @Override - public Biome get(int y) { - return biome; - } - - @Override - public void forRanges(int resolution, IntIntObjConsumer consumer) { - consumer.accept(min, max, biome); - } - - @Override - public void forEach(Consumer consumer) { - for(int y = min; y < max; y++) { - consumer.accept(biome); - } - } - - @Override - public void forEach(IntObjConsumer consumer) { - for(int y = min; y < max; y++) { - consumer.accept(y, biome); - } - } -} 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 deleted file mode 100644 index ef952736d..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline; - -import com.github.benmanes.caffeine.cache.Caffeine; -import com.github.benmanes.caffeine.cache.LoadingCache; - -import java.util.Comparator; -import java.util.HashSet; -import java.util.Optional; -import java.util.Set; -import java.util.stream.StreamSupport; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.registry.key.StringIdentifiable; -import com.dfsek.terra.api.util.Column; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.biome.generation.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; - - private final Set biomes; - - public BiomePipelineProvider(BiomePipeline pipeline, int resolution, NoiseSampler mutator, double noiseAmp) { - this.resolution = resolution; - this.mutator = mutator; - this.noiseAmp = noiseAmp; - holderCache = Caffeine.newBuilder() - .maximumSize(1024) - .build(key -> pipeline.getBiomes(key.x, key.z, key.seed)); - this.pipeline = pipeline; - - Set biomeSet = new HashSet<>(); - pipeline.getSource().getBiomes().forEach(biomeSet::add); - Iterable result = biomeSet; - for(Stage stage : pipeline.getStages()) { - result = stage.getBiomes(result); // pass through all stages - } - this.biomes = new HashSet<>(); - Iterable finalResult = result; - result.forEach(biomeDelegate -> { - if(biomeDelegate.isEphemeral()) { - - StringBuilder biomeList = new StringBuilder("\n"); - StreamSupport.stream(finalResult.spliterator(), false) - .sorted(Comparator.comparing(StringIdentifiable::getID)) - .forEach(delegate -> biomeList - .append(" - ") - .append(delegate.getID()) - .append(':') - .append(delegate.getClass().getCanonicalName()) - .append('\n')); - throw new IllegalArgumentException("Biome Pipeline leaks ephemeral biome \"" + biomeDelegate.getID() + - "\". Ensure there is a stage to guarantee replacement of the ephemeral biome. Biomes: " + - biomeList); - } - this.biomes.add(biomeDelegate.getBiome()); - }); - } - - @Override - public Biome getBiome(int x, int y, int z, long seed) { - return getBiome(x, z, seed); - } - - public Biome getBiome(int x, int z, long seed) { - x += mutator.noise(seed + 1, x, z) * noiseAmp; - z += mutator.noise(seed + 2, x, z) * noiseAmp; - - - x /= resolution; - z /= resolution; - - int fdX = Math.floorDiv(x, pipeline.getSize()); - int fdZ = Math.floorDiv(z, pipeline.getSize()); - return holderCache.get(new SeededVector(fdX, fdZ, seed)).getBiome(x - fdX * pipeline.getSize(), - z - fdZ * pipeline.getSize()).getBiome(); - } - - @Override - public Optional getBaseBiome(int x, int z, long seed) { - return Optional.of(getBiome(x, z, seed)); - } - - @Override - public Iterable getBiomes() { - return biomes; - } - - @Override - public Column getColumn(int x, int z, long seed, int min, int max) { - return new BiomePipelineColumn(this, min, max, x, z, seed); - } - - @Override - public int resolution() { - return resolution; - } - - private record SeededVector(int x, int z, long seed) { - @Override - public boolean equals(Object obj) { - if(obj instanceof SeededVector that) { - return this.z == that.z && this.x == that.x && this.seed == that.seed; - } - return false; - } - - @Override - public int hashCode() { - int code = x; - code = 31 * code + z; - return 31 * code + ((int) (seed ^ (seed >>> 32))); - } - } -} 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 deleted file mode 100644 index 5acb166a1..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.api; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeExpander; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; - - -public interface BiomeHolder { - BiomeHolder expand(BiomeExpander expander, long seed); - - void mutate(BiomeMutator mutator, long seed); - - void fill(BiomeSource source, long seed); - - BiomeDelegate getBiome(int x, int z); - - BiomeDelegate getBiomeRaw(int x, int z); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/BiomeDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/BiomeDelegate.java deleted file mode 100644 index c7e96c01e..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/BiomeDelegate.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api.delegate; - -import java.util.Set; - -import com.dfsek.terra.api.registry.key.StringIdentifiable; -import com.dfsek.terra.api.world.biome.Biome; - - -public interface BiomeDelegate extends StringIdentifiable { - static BiomeDelegate ephemeral(String id) { - return new EphemeralBiomeDelegate(id); - } - - static BiomeDelegate from(Biome biome) { - return new DelegatedBiome(biome); - } - - static BiomeDelegate self() { - return SelfDelegate.INSTANCE; - } - - Biome getBiome(); - - Set getTags(); - - default boolean isEphemeral() { - return false; - } - - default boolean isSelf() { - return false; - } - - -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/DelegatedBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/DelegatedBiome.java deleted file mode 100644 index ea724928f..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/DelegatedBiome.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api.delegate; - -import java.util.Set; - -import com.dfsek.terra.api.world.biome.Biome; - - -final class DelegatedBiome implements BiomeDelegate { - private final Biome biome; - - public DelegatedBiome(Biome biome) { - this.biome = biome; - } - - @Override - public Biome getBiome() { - return biome; - } - - @Override - public int hashCode() { - return biome.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if(!(obj instanceof DelegatedBiome that)) return false; - return that.biome.equals(this.biome); - } - - @Override - public Set getTags() { - return biome.getTags(); - } - - @Override - public String getID() { - return biome.getID(); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/EphemeralBiomeDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/EphemeralBiomeDelegate.java deleted file mode 100644 index e8e000dff..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/EphemeralBiomeDelegate.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api.delegate; - -import java.util.HashSet; -import java.util.Set; - -import com.dfsek.terra.api.world.biome.Biome; - - -final class EphemeralBiomeDelegate implements BiomeDelegate { - private final Set tags; - private final String id; - - public EphemeralBiomeDelegate(String id) { - this.id = id; - tags = new HashSet<>(); - tags.add(id); - tags.add("ALL"); - } - - @Override - public Biome getBiome() { - throw new UnsupportedOperationException("Cannot get biome from ephemeral delegate"); - } - - @Override - public Set getTags() { - return tags; - } - - @Override - public String getID() { - return id; - } - - @Override - public boolean isEphemeral() { - return true; - } - - @Override - public int hashCode() { - return id.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if(!(obj instanceof EphemeralBiomeDelegate that)) return false; - - return this.id.equals(that.id); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/SelfDelegate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/SelfDelegate.java deleted file mode 100644 index 6b62818d2..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/delegate/SelfDelegate.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api.delegate; - -import java.util.Collections; -import java.util.Set; - -import com.dfsek.terra.api.world.biome.Biome; - - -final class SelfDelegate implements BiomeDelegate { - public static final SelfDelegate INSTANCE = new SelfDelegate(); - - private SelfDelegate() { - - } - - @Override - public Biome getBiome() { - throw new UnsupportedOperationException("Cannot get biome from self delegate"); - } - - @Override - public boolean isSelf() { - return true; - } - - @Override - public boolean isEphemeral() { - return true; - } - - @Override - public Set getTags() { - return Collections.emptySet(); - } - - @Override - public String getID() { - return "SELF"; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/Stage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/Stage.java deleted file mode 100644 index d007c6c8f..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/Stage.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.api.stage; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; - - -public interface Stage { - BiomeHolder apply(BiomeHolder in, long seed); - - boolean isExpansion(); - - Iterable getBiomes(Iterable biomes); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeExpander.java deleted file mode 100644 index 4fcb9feeb..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeExpander.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.api.stage.type; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; - - -public interface BiomeExpander { - BiomeDelegate getBetween(double x, double z, long seed, BiomeDelegate... others); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeMutator.java deleted file mode 100644 index 6362b582d..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/stage/type/BiomeMutator.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.api.stage.type; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; - - -public interface BiomeMutator { - BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed); - - default Iterable getBiomes(Iterable biomes) { - return biomes; - } - - 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 BiomeDelegate 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/config/BiomeDelegateLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeDelegateLoader.java deleted file mode 100644 index 9c755ce2d..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeDelegateLoader.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config; - -import com.dfsek.tectonic.api.depth.DepthTracker; -import com.dfsek.tectonic.api.exception.LoadException; -import com.dfsek.tectonic.api.loader.ConfigLoader; -import com.dfsek.tectonic.api.loader.type.TypeLoader; -import org.jetbrains.annotations.NotNull; - -import java.lang.reflect.AnnotatedType; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.world.biome.Biome; - - -public class BiomeDelegateLoader implements TypeLoader { - private final Registry biomeRegistry; - - public BiomeDelegateLoader(Registry biomeRegistry) { - this.biomeRegistry = biomeRegistry; - } - - @Override - public BiomeDelegate load(@NotNull AnnotatedType t, @NotNull Object c, @NotNull ConfigLoader loader, DepthTracker depthTracker) - throws LoadException { - if(c.equals("SELF")) return BiomeDelegate.self(); - return biomeRegistry - .getByID((String) c) - .map(BiomeDelegate::from) - .orElseGet(() -> BiomeDelegate.ephemeral((String) c)); - } -} 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 deleted file mode 100644 index 491f019ba..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.config; - -import com.dfsek.tectonic.api.config.template.annotations.Default; -import com.dfsek.tectonic.api.config.template.annotations.Description; -import com.dfsek.tectonic.api.config.template.annotations.Value; - -import java.util.List; - -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.Stage; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -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 { - @Value("pipeline.initial-size") - @Default - @Description(""" - The initial size of biome chunks. This value must be at least 2. - This is not the final size of biome chunks. Final chunks will be much larger. - - It is recommended to keep biome chunks' final size in the range of [50, 300] - to prevent performance issues. To calculate the size of biome chunks, simply - take initial-size and for each expand stage, multiply the running value by 2 - and subtract 1. (The size is also printed to the server console if you - have debug mode enabled)""") - private @Meta int initialSize = 2; - - @Value("pipeline.source") - @Description("The Biome Source to use for initial population of biomes.") - private @Meta BiomeSource source; - - @Value("pipeline.stages") - @Description("A list of pipeline stages to apply to the result of #source") - private @Meta List<@Meta Stage> stages; - - @Override - public BiomeProvider get() { - BiomePipeline.BiomePipelineBuilder biomePipelineBuilder = new BiomePipeline.BiomePipelineBuilder(initialSize); - stages.forEach(biomePipelineBuilder::addStage); - BiomePipeline pipeline = biomePipelineBuilder.build(source); - return new BiomePipelineProvider(pipeline, resolution, blend, blendAmp); - } -} 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 deleted file mode 100644 index f42fd7c20..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.config; - -import com.dfsek.tectonic.api.config.template.annotations.Default; -import com.dfsek.tectonic.api.config.template.annotations.Description; -import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.tectonic.api.config.template.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 - @Description(""" - The resolution at which to sample biomes. - - Larger values are quadratically faster, but produce lower quality results. - For example, a value of 3 would sample every 3 blocks.""") - protected @Meta int resolution = 1; - @Value("blend.sampler") - @Default - @Description("A sampler to use for blending the edges of biomes via domain warping.") - protected @Meta NoiseSampler blend = NoiseSampler.zero(); - @Value("blend.amplitude") - @Default - @Description("The amplitude at which to perform blending.") - protected @Meta double blendAmp = 0d; -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java deleted file mode 100644 index b79c2e79a..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SamplerSourceTemplate.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.config; - -import com.dfsek.tectonic.api.config.template.annotations.Description; -import com.dfsek.tectonic.api.config.template.annotations.Value; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.addons.biome.pipeline.source.SamplerSource; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -public class SamplerSourceTemplate extends SourceTemplate { - @Value("sampler") - @Description("The sampler used to distribute biomes.") - private @Meta NoiseSampler noise; - - @Value("biomes") - @Description("The biomes to be distributed.") - private @Meta ProbabilityCollection<@Meta BiomeDelegate> biomes; - - @Override - public BiomeSource get() { - return new SamplerSource(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 deleted file mode 100644 index 6f04cfd47..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.config; - -import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; - -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; - - -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 deleted file mode 100644 index ec326ed0c..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.config.stage; - -import com.dfsek.tectonic.api.config.template.annotations.Description; -import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; - -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public abstract class StageTemplate implements ObjectTemplate { - @Value("sampler") - @Description("Sampler to use for stage distribution.") - 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 deleted file mode 100644 index 9c13e1fd2..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.config.stage.expander; - -import com.dfsek.terra.addons.biome.pipeline.api.stage.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; - - -public class ExpanderStageTemplate extends StageTemplate { - @Override - 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 deleted file mode 100644 index 5cb7287e1..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; - -import com.dfsek.tectonic.api.config.template.annotations.Value; - -import java.util.Map; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.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; - - -@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 BiomeDelegate> defaultTo; - - @Value("replace") - private @Meta Map<@Meta BiomeDelegate, @Meta ProbabilityCollection<@Meta BiomeDelegate>> 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 deleted file mode 100644 index f9b8888df..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; - -import com.dfsek.tectonic.api.config.template.annotations.Value; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.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; - - -@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 BiomeDelegate> 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 deleted file mode 100644 index 8522f0488..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; - -import com.dfsek.tectonic.api.config.template.annotations.Value; - -import java.util.Map; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.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; - - -@SuppressWarnings("unused") -public class ReplaceListMutatorTemplate extends StageTemplate { - @Value("default-from") - private @Meta String defaultFrom; - - @Value("default-to") - private @Meta ProbabilityCollection<@Meta BiomeDelegate> defaultTo; - - @Value("to") - private @Meta Map<@Meta BiomeDelegate, @Meta ProbabilityCollection<@Meta BiomeDelegate>> 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 deleted file mode 100644 index 48e3da95b..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; - -import com.dfsek.tectonic.api.config.template.annotations.Value; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.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; - - -@SuppressWarnings("unused") -public class ReplaceMutatorTemplate extends StageTemplate { - @Value("from") - private @Meta String from; - - @Value("to") - private @Meta ProbabilityCollection<@Meta BiomeDelegate> 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 deleted file mode 100644 index 8959a229a..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; - -import com.dfsek.terra.addons.biome.pipeline.api.stage.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() { - return new MutatorStage(new SmoothMutator(noise)); - } -} 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 deleted file mode 100644 index aa06967e2..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.expand; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeExpander; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; - - -public class FractalExpander implements BiomeExpander { - private final NoiseSampler sampler; - - public FractalExpander(NoiseSampler sampler) { - this.sampler = sampler; - } - - @Override - public BiomeDelegate getBetween(double x, double z, long seed, BiomeDelegate... others) { - return others[MathUtil.normalizeIndex(sampler.noise(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 deleted file mode 100644 index 21ed29efe..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.function.Predicate; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -public class BorderListMutator implements BiomeMutator { - private final String border; - private final NoiseSampler noiseSampler; - private final ProbabilityCollection replaceDefault; - private final String defaultReplace; - private final Map> replace; - - 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 BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { - BiomeDelegate origin = viewPoint.getBiome(0, 0); - if(origin.getTags().contains(defaultReplace)) { - for(int xi = -1; xi <= 1; xi++) { - for(int zi = -1; zi <= 1; zi++) { - if(xi == 0 && zi == 0) continue; - BiomeDelegate current = viewPoint.getBiome(xi, zi); - if(current != null && current.getTags().contains(border)) { - if(replace.containsKey(origin)) { - BiomeDelegate biome = replace.get(origin).get(noiseSampler, x, z, seed); - return biome.isSelf() ? origin : biome; - } - BiomeDelegate biome = replaceDefault.get(noiseSampler, x, z, seed); - return biome.isSelf() ? origin : biome; - } - } - } - } - return origin; - } - - @Override - public Iterable getBiomes(Iterable biomes) { - Set biomeSet = new HashSet<>(); - biomes.forEach(biomeSet::add); - biomeSet.addAll(replaceDefault.getContents().stream().filter(Predicate.not(BiomeDelegate::isSelf)).toList()); - replace.forEach((biome, collection) -> biomeSet.addAll(collection.getContents())); - return biomeSet; - } -} 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 deleted file mode 100644 index 43fd9f663..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import java.util.HashSet; -import java.util.Set; -import java.util.function.Predicate; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -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 BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { - BiomeDelegate origin = viewPoint.getBiome(0, 0); - if(origin.getTags().contains(replaceTag)) { - for(int xi = -1; xi <= 1; xi++) { - for(int zi = -1; zi <= 1; zi++) { - if(xi == 0 && zi == 0) continue; - BiomeDelegate current = viewPoint.getBiome(xi, zi); - if(current != null && current.getTags().contains(border)) { - BiomeDelegate biome = replace.get(noiseSampler, x, z, seed); - return biome.isSelf() ? origin : biome; - } - } - } - } - return origin; - } - - @Override - public Iterable getBiomes(Iterable biomes) { - Set biomeSet = new HashSet<>(); - biomes.forEach(biomeSet::add); - biomeSet.addAll( - replace - .getContents() - .stream() - .filter( - Predicate.not(BiomeDelegate::isSelf) - ) - .toList() - ); - return biomeSet; - } -} 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 deleted file mode 100644 index 3939b133b..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.stream.Stream; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -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) { - this.replace = replace; - this.sampler = sampler; - this.defaultTag = defaultTag; - this.replaceDefault = replaceDefault; - } - - @Override - public BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { - BiomeDelegate center = viewPoint.getBiome(0, 0); - if(replace.containsKey(center)) { - BiomeDelegate biome = replace.get(center).get(sampler, x, z, seed); - return biome.isSelf() ? viewPoint.getBiome(0, 0) : biome; - } - if(viewPoint.getBiome(0, 0).getTags().contains(defaultTag)) { - BiomeDelegate biome = replaceDefault.get(sampler, x, z, seed); - return biome.isSelf() ? viewPoint.getBiome(0, 0) : biome; - } - return center; - } - - @Override - public Iterable getBiomes(Iterable biomes) { - Set biomeSet = new HashSet<>(); - - Set reject = new HashSet<>(); - - biomes.forEach(biome -> { - if(!biome.getTags().contains(defaultTag) && !replace.containsKey(biome)) { - biomeSet.add(biome); - } else { - reject.add(biome); - } - }); - biomeSet.addAll(replaceDefault.getContents().stream().flatMap(terraBiome -> { - if(terraBiome.isSelf()) return reject.stream(); - return Stream.of(terraBiome); - }).toList()); - replace.forEach((biome, collection) -> biomeSet.addAll(collection.getContents().stream().map(terraBiome -> { - if(terraBiome.isSelf()) return biome; - return terraBiome; - }).toList())); - return biomeSet; - } -} 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 deleted file mode 100644 index f64871b39..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import java.util.HashSet; -import java.util.Set; -import java.util.stream.Stream; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -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 BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { - if(viewPoint.getBiome(0, 0).getTags().contains(replaceableTag)) { - BiomeDelegate biome = replace.get(sampler, x, z, seed); - return biome.isSelf() ? viewPoint.getBiome(0, 0) : biome; - } - return viewPoint.getBiome(0, 0); - } - - @Override - public Iterable getBiomes(Iterable biomes) { - Set biomeSet = new HashSet<>(); - Set reject = new HashSet<>(); - biomes.forEach(biome -> { - if(!biome.getTags().contains(replaceableTag)) { - biomeSet.add(biome); - } else { - reject.add(biome); - } - }); - biomeSet.addAll(replace.getContents().stream().flatMap(terraBiome -> { - if(terraBiome.isSelf()) return reject.stream(); - return Stream.of(terraBiome); - }).toList()); - return biomeSet; - } -} 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 deleted file mode 100644 index 8d8d01bf2..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import java.util.Objects; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; - - -public class SmoothMutator implements BiomeMutator { - - private final NoiseSampler sampler; - - public SmoothMutator(NoiseSampler sampler) { - this.sampler = sampler; - } - - @Override - public BiomeDelegate mutate(ViewPoint viewPoint, double x, double z, long seed) { - BiomeDelegate top = viewPoint.getBiome(1, 0); - BiomeDelegate bottom = viewPoint.getBiome(-1, 0); - BiomeDelegate left = viewPoint.getBiome(0, 1); - BiomeDelegate 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.noise(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 deleted file mode 100644 index 56b67b7f4..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.source; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; - - -public interface BiomeSource { - BiomeDelegate getBiome(double x, double z, long seed); - - Iterable getBiomes(); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java deleted file mode 100644 index 7fc981d31..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.source; - -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -public class SamplerSource implements BiomeSource { - private final ProbabilityCollection biomes; - private final NoiseSampler sampler; - - public SamplerSource(ProbabilityCollection biomes, NoiseSampler sampler) { - this.biomes = biomes; - this.sampler = sampler; - } - - @Override - public BiomeDelegate getBiome(double x, double z, long seed) { - return biomes.get(sampler, x, z, seed); - } - - @Override - public Iterable getBiomes() { - return biomes.getContents(); - } -} 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 deleted file mode 100644 index 45602fb6b..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.stages; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeExpander; - - -public class ExpanderStage implements Stage { - private final BiomeExpander expander; - - public ExpanderStage(BiomeExpander expander) { - this.expander = expander; - } - - @Override - public BiomeHolder apply(BiomeHolder in, long seed) { - return in.expand(expander, seed); - } - - @Override - public boolean isExpansion() { - return true; - } - - @Override - public Iterable getBiomes(Iterable biomes) { - return biomes; - } -} 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 deleted file mode 100644 index 8efbaaa27..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2020-2023 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.biome.pipeline.stages; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate; -import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.stage.type.BiomeMutator; - - -public class MutatorStage implements Stage { - private final BiomeMutator mutator; - - public MutatorStage(BiomeMutator mutator) { - this.mutator = mutator; - } - - @Override - public BiomeHolder apply(BiomeHolder in, long seed) { - in.mutate(mutator, seed); - return in; - } - - @Override - public boolean isExpansion() { - return false; - } - - @Override - public Iterable getBiomes(Iterable biomes) { - return mutator.getBiomes(biomes); - } - - public enum Type { - REPLACE, - REPLACE_LIST, - BORDER, - BORDER_LIST, - SMOOTH - } -} diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java similarity index 100% rename from common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java diff --git a/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml b/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml index abd2555a5..f800574ca 100644 --- a/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml +++ b/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml @@ -1,10 +1,10 @@ schema-version: 1 contributors: - Terra contributors -id: biome-provider-pipeline +id: biome-provider-pipeline-v2 version: @VERSION@ entrypoints: - - "com.dfsek.terra.addons.biome.pipeline.BiomePipelineAddon" + - "com.dfsek.terra.addons.biome.pipeline.v2.BiomePipelineAddon" website: issues: https://github.com/PolyhedralDev/Terra/issues source: https://github.com/PolyhedralDev/Terra 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 500f44c85..a639422d9 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,6 +35,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.CubicSplineNormalizerTemplate; import com.dfsek.terra.addons.noise.config.templates.normalizer.ExpressionNormalizerTemplate; +import com.dfsek.terra.addons.noise.config.templates.normalizer.LinearMapNormalizerTemplate; 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.config.templates.normalizer.PosterizationNormalizerTemplate; diff --git a/common/addons/pipeline-image/build.gradle.kts b/common/addons/pipeline-image/build.gradle.kts index 1befb4b44..81b010d74 100644 --- a/common/addons/pipeline-image/build.gradle.kts +++ b/common/addons/pipeline-image/build.gradle.kts @@ -2,6 +2,6 @@ version = version("1.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) - compileOnlyApi(project(":common:addons:biome-provider-pipeline-v2")) + compileOnlyApi(project(":common:addons:biome-provider-pipeline")) compileOnlyApi(project(":common:addons:library-image")) } From 87ea5ce9e761ab69c818651c7371545522827195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 5 Jan 2024 15:12:35 -0700 Subject: [PATCH 034/116] remove translation logic --- .../terra/bukkit/handles/BukkitWorldHandle.java | 14 -------------- .../terra/mod/handle/MinecraftWorldHandle.java | 15 --------------- 2 files changed, 29 deletions(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index f3bc5cdf0..3259268f3 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -42,13 +42,6 @@ public class BukkitWorldHandle implements WorldHandle { @Override public synchronized @NotNull BlockState createBlockState(@NotNull String data) { - if(data.equals("minecraft:grass")) { //TODO: remove in 7.0 - data = "minecraft:short_grass"; - logger.warn( - "Translating minecraft:grass to minecraft:short_grass. In 1.20.3 minecraft:grass was renamed to minecraft:short_grass" + - ". You are advised to perform this rename in your config backs as this translation will be removed in the next major " + - "version of Terra."); - } org.bukkit.block.data.BlockData bukkitData = Bukkit.createBlockData( data); // somehow bukkit managed to make this not thread safe! :) return BukkitBlockState.newInstance(bukkitData); @@ -61,13 +54,6 @@ public class BukkitWorldHandle implements WorldHandle { @Override public @NotNull EntityType getEntity(@NotNull String id) { - if(!id.contains(":")) { //TODO: remove in 7.0 - String newid = "minecraft:" + id.toLowerCase(); - logger.warn( - "Translating " + id + " to " + newid + ". In 1.20.3 entity parsing was reworked" + - ". You are advised to perform this rename in your config backs as this translation will be removed in the next major " + - "version of Terra."); - } if(!id.startsWith("minecraft:")) throw new IllegalArgumentException("Invalid entity identifier " + id); String entityID = id.toUpperCase(Locale.ROOT).substring(10); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java index c1ba5b506..9b5d1738b 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java @@ -41,13 +41,6 @@ public class MinecraftWorldHandle implements WorldHandle { @Override public @NotNull BlockState createBlockState(@NotNull String data) { try { - if(data.equals("minecraft:grass")) { //TODO: remove in 7.0 - data = "minecraft:short_grass"; - logger.warn( - "Translating minecraft:grass to minecraft:short_grass. In 1.20.3 minecraft:grass was renamed to minecraft:short_grass" + - ". You are advised to perform this rename in your config packs as this translation will be removed in the next major " + - "version of Terra."); - } net.minecraft.block.BlockState state = BlockArgumentParser.block(Registries.BLOCK.getReadOnlyWrapper(), data, true) .blockState(); if(state == null) throw new IllegalArgumentException("Invalid data: " + data); @@ -64,14 +57,6 @@ public class MinecraftWorldHandle implements WorldHandle { @Override public @NotNull EntityType getEntity(@NotNull String id) { - if(!id.contains(":")) { //TODO: remove in 7.0 - String newid = "minecraft:" + id.toLowerCase(); - logger.warn( - "Translating " + id + " to " + newid + ". In 1.20.3 entity parsing was reworked" + - ". You are advised to perform this rename in your config packs as this translation will be removed in the next major " + - "version of Terra."); - id = newid; - } if(!id.contains(":")) throw new IllegalArgumentException("Invalid entity identifier " + id); Identifier identifier = Identifier.tryParse(id); if(identifier == null) identifier = Identifier.tryParse(id); From 921212ccb5158ce09705c7f487debe6247a95294 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 5 Jan 2024 17:19:27 -0700 Subject: [PATCH 035/116] Remove dump-resources and allow for ignoring specific resources --- .../dfsek/terra/api/config/PluginConfig.java | 6 +- .../com/dfsek/terra/AbstractPlatform.java | 99 ++++++++++--------- .../dfsek/terra/config/PluginConfigImpl.java | 16 +-- .../base/src/main/resources/config.yml | 6 +- 4 files changed, 67 insertions(+), 60 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 7946d0ec9..62919f12d 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 @@ -9,12 +9,12 @@ package com.dfsek.terra.api.config; import com.dfsek.terra.api.Platform; +import java.util.List; + public interface PluginConfig { void load(Platform platform); - boolean dumpDefaultConfig(); - boolean isDebugCommands(); boolean isDebugProfiler(); @@ -31,5 +31,7 @@ public interface PluginConfig { int getMaxRecursion(); + List getIgnoredResources(); + int getProviderCache(); } diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java index 1ea3fc88b..6637201fe 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -143,11 +143,8 @@ public abstract class AbstractPlatform implements Platform { config.load(this); // load config.yml - if(config.dumpDefaultConfig()) { - dumpResources(); - } else { - logger.info("Skipping resource dumping."); - } + + dumpResources(config.getIgnoredResources()); if(config.isDebugProfiler()) { // if debug.profiler is enabled, start profiling profiler.start(); @@ -259,7 +256,7 @@ public abstract class AbstractPlatform implements Platform { return internalAddon; } - protected void dumpResources() { + protected void dumpResources(List ignoredResources) { try(InputStream resourcesConfig = getClass().getResourceAsStream("/resources.yml")) { if(resourcesConfig == null) { logger.info("No resources config found. Skipping resource dumping."); @@ -301,51 +298,55 @@ public abstract class AbstractPlatform implements Platform { Map> resources = new Yaml().load(resourceYaml); resources.forEach((dir, entries) -> entries.forEach(entry -> { String resourceClassPath = dir + "/" + entry; - String resourcePath = resourceClassPath.replace('/', File.separatorChar); - File resource = new File(getDataFolder(), resourcePath); - if(resource.exists()) - return; // dont overwrite + if (ignoredResources.contains(dir) || ignoredResources.contains(entry) || ignoredResources.contains(resourceClassPath)) { + logger.info("Not dumping resource {} because it is ignored.", resourceClassPath); + } else { + String resourcePath = resourceClassPath.replace('/', File.separatorChar); + File resource = new File(getDataFolder(), resourcePath); + if(resource.exists()) + return; // dont overwrite - try(InputStream is = getClass().getResourceAsStream("/" + resourceClassPath)) { - if(is == null) { - logger.error("Resource {} doesn't exist on the classpath!", resourcePath); - return; + try(InputStream is = getClass().getResourceAsStream("/" + resourceClassPath)) { + if(is == null) { + logger.error("Resource {} doesn't exist on the classpath!", resourcePath); + return; + } + + paths + .stream() + .filter(Pair.testRight(resourcePath::startsWith)) + .forEach(Pair.consumeLeft(path -> { + logger.info("Removing outdated resource {}, replacing with {}", path, resourcePath); + try { + Files.delete(path); + } catch(IOException e) { + throw new UncheckedIOException(e); + } + })); + + if(pathsNoMajor + .stream() + .anyMatch(resourcePath::startsWith) && // if any share name + paths + .stream() + .map(Pair.unwrapRight()) + .noneMatch(resourcePath::startsWith)) { // but dont share major version + logger.warn( + "Addon {} has a new major version available. It will not be automatically updated; you will need to " + + "ensure " + + "compatibility and update manually.", + resourcePath); + } + + logger.info("Dumping resource {}.", resource.getAbsolutePath()); + resource.getParentFile().mkdirs(); + resource.createNewFile(); + try(OutputStream os = new FileOutputStream(resource)) { + IOUtils.copy(is, os); + } + } catch(IOException e) { + throw new UncheckedIOException(e); } - - paths - .stream() - .filter(Pair.testRight(resourcePath::startsWith)) - .forEach(Pair.consumeLeft(path -> { - logger.info("Removing outdated resource {}, replacing with {}", path, resourcePath); - try { - Files.delete(path); - } catch(IOException e) { - throw new UncheckedIOException(e); - } - })); - - if(pathsNoMajor - .stream() - .anyMatch(resourcePath::startsWith) && // if any share name - paths - .stream() - .map(Pair.unwrapRight()) - .noneMatch(resourcePath::startsWith)) { // but dont share major version - logger.warn( - "Addon {} has a new major version available. It will not be automatically updated; you will need to " + - "ensure " + - "compatibility and update manually.", - resourcePath); - } - - logger.info("Dumping resource {}...", resource.getAbsolutePath()); - resource.getParentFile().mkdirs(); - resource.createNewFile(); - try(OutputStream os = new FileOutputStream(resource)) { - IOUtils.copy(is, os); - } - } catch(IOException e) { - throw new UncheckedIOException(e); } })); } catch(IOException e) { diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java index d22c2945f..b63b09eef 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java @@ -30,6 +30,8 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.UncheckedIOException; +import java.util.Collections; +import java.util.List; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.PluginConfig; @@ -71,9 +73,9 @@ public class PluginConfigImpl implements ConfigTemplate, PluginConfig { @Default private int providerCache = 32; - @Value("dump-default") + @Value("ignored-resources") @Default - private boolean dumpDefaultData = true; + private List ignoredResources = Collections.emptyList(); @Value("script.max-recursion") @Default @@ -99,11 +101,6 @@ public class PluginConfigImpl implements ConfigTemplate, PluginConfig { logger.info("Debug logging enabled."); } - @Override - public boolean dumpDefaultConfig() { - return dumpDefaultData; - } - @Override public boolean isDebugCommands() { return debugCommands; @@ -139,6 +136,11 @@ public class PluginConfigImpl implements ConfigTemplate, PluginConfig { return samplerCache; } + @Override + public List getIgnoredResources() { + return ignoredResources; + } + @Override public int getMaxRecursion() { return maxRecursion; diff --git a/common/implementation/base/src/main/resources/config.yml b/common/implementation/base/src/main/resources/config.yml index 72dd67061..ae2f6c2a8 100644 --- a/common/implementation/base/src/main/resources/config.yml +++ b/common/implementation/base/src/main/resources/config.yml @@ -10,11 +10,13 @@ debug: log: false profiler: false script: false -dump-default: true biome-search-resolution: 4 cache: structure: 32 sampler: 128 biome-provider: 32 script: - max-recursion: 1000 \ No newline at end of file + max-recursion: 1000 +ignored-resources: +# - "addons" +# - "packs" \ No newline at end of file From 45528acac8933c266ace92b93315a6ba5525bb0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 5 Jan 2024 18:34:55 -0700 Subject: [PATCH 036/116] update v2 addon tag --- .../biome-provider-image/src/main/resources/terra.addon.yml | 2 +- .../biome-provider-pipeline/src/main/resources/terra.addon.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/addons/biome-provider-image/src/main/resources/terra.addon.yml b/common/addons/biome-provider-image/src/main/resources/terra.addon.yml index be3dd2af4..00c4fbec2 100644 --- a/common/addons/biome-provider-image/src/main/resources/terra.addon.yml +++ b/common/addons/biome-provider-image/src/main/resources/terra.addon.yml @@ -1,7 +1,7 @@ schema-version: 1 contributors: - Terra contributors -id: biome-provider-image-v2 +id: biome-provider-image version: @VERSION@ entrypoints: - "com.dfsek.terra.addons.biome.image.v2.ImageBiomeProviderAddon" diff --git a/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml b/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml index f800574ca..449f0c188 100644 --- a/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml +++ b/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml @@ -1,7 +1,7 @@ schema-version: 1 contributors: - Terra contributors -id: biome-provider-pipeline-v2 +id: biome-provider-pipeline version: @VERSION@ entrypoints: - "com.dfsek.terra.addons.biome.pipeline.v2.BiomePipelineAddon" From 5350917412176968253cf6f9ab1cac623f67e32b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 5 Jan 2024 18:36:01 -0700 Subject: [PATCH 037/116] refactor v2 addons --- .../image/{v2 => }/ImageBiomeProvider.java | 2 +- .../{v2 => }/ImageBiomeProviderAddon.java | 10 +++---- .../config/ImageProviderTemplate.java | 4 +-- .../ClosestBiomeColorConverterTemplate.java | 2 +- .../ExactBiomeColorConverterTemplate.java | 2 +- .../DefinedBiomeColorMappingTemplate.java | 2 +- .../src/main/resources/terra.addon.yml | 2 +- .../pipeline/{v2 => }/BiomePipelineAddon.java | 26 +++++++++---------- .../{v2 => }/BiomePipelineColumn.java | 2 +- .../{v2 => }/PipelineBiomeProvider.java | 12 ++++----- .../addons/biome/pipeline/api/BiomeChunk.java | 10 +++++++ .../biome/pipeline/{v2 => }/api/Expander.java | 10 +++---- .../biome/pipeline/{v2 => }/api/Pipeline.java | 2 +- .../pipeline/{v2 => }/api/SeededVector.java | 2 +- .../addons/biome/pipeline/api/Source.java | 11 ++++++++ .../addons/biome/pipeline/api/Stage.java | 15 +++++++++++ .../api/biome/DelegatedPipelineBiome.java | 2 +- .../{v2 => }/api/biome/PipelineBiome.java | 2 +- .../api/biome/PlaceholderPipelineBiome.java | 2 +- .../{v2 => }/api/biome/SelfPipelineBiome.java | 2 +- .../config/BiomePipelineTemplate.java | 10 +++---- .../{v2 => }/config/PipelineBiomeLoader.java | 4 +-- .../config/source/SamplerSourceTemplate.java | 8 +++--- .../config/source/SourceTemplate.java | 4 +-- .../{v2 => }/config/stage/StageTemplate.java | 4 +-- .../stage/expander/ExpanderStageTemplate.java | 8 +++--- .../mutator/BorderListStageTemplate.java | 10 +++---- .../stage/mutator/BorderStageTemplate.java | 10 +++---- .../mutator/ReplaceListStageTemplate.java | 10 +++---- .../stage/mutator/ReplaceStageTemplate.java | 10 +++---- .../stage/mutator/SmoothStageTemplate.java | 8 +++--- .../{v2 => }/pipeline/BiomeChunkImpl.java | 12 ++++----- .../{v2 => }/pipeline/PipelineImpl.java | 14 +++++----- .../{v2 => }/source/SamplerSource.java | 6 ++--- .../{v2 => }/source/SingleSource.java | 6 ++--- .../stage/expander/FractalExpander.java | 8 +++--- .../stage/mutators/BorderListStage.java | 8 +++--- .../{v2 => }/stage/mutators/BorderStage.java | 8 +++--- .../stage/mutators/ReplaceListStage.java | 8 +++--- .../{v2 => }/stage/mutators/ReplaceStage.java | 8 +++--- .../{v2 => }/stage/mutators/SmoothStage.java | 8 +++--- .../biome/pipeline/v2/api/BiomeChunk.java | 10 ------- .../addons/biome/pipeline/v2/api/Source.java | 11 -------- .../addons/biome/pipeline/v2/api/Stage.java | 15 ----------- .../src/main/resources/terra.addon.yml | 2 +- .../biome/pipeline/image/ImageSource.java | 4 +-- .../pipeline/image/PipelineImageAddon.java | 8 +++--- .../image/config/ImageSourceTemplate.java | 4 +-- ...stPipelineBiomeColorConverterTemplate.java | 2 +- ...ctPipelineBiomeColorConverterTemplate.java | 2 +- ...inedPipelineBiomeColorMappingTemplate.java | 2 +- 51 files changed, 177 insertions(+), 177 deletions(-) rename common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/{v2 => }/ImageBiomeProvider.java (96%) rename common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/{v2 => }/ImageBiomeProviderAddon.java (88%) rename common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/{v2 => }/config/ImageProviderTemplate.java (91%) rename common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/{v2 => }/config/converter/ClosestBiomeColorConverterTemplate.java (88%) rename common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/{v2 => }/config/converter/ExactBiomeColorConverterTemplate.java (93%) rename common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/{v2 => }/config/converter/mapping/DefinedBiomeColorMappingTemplate.java (90%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/BiomePipelineAddon.java (77%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/BiomePipelineColumn.java (96%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/PipelineBiomeProvider.java (91%) create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeChunk.java rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/api/Expander.java (60%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/api/Pipeline.java (78%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/api/SeededVector.java (89%) create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Source.java create mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/api/biome/DelegatedPipelineBiome.java (92%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/api/biome/PipelineBiome.java (91%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/api/biome/PlaceholderPipelineBiome.java (94%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/api/biome/SelfPipelineBiome.java (92%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/config/BiomePipelineTemplate.java (86%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/config/PipelineBiomeLoader.java (88%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/config/source/SamplerSourceTemplate.java (77%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/config/source/SourceTemplate.java (74%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/config/stage/StageTemplate.java (85%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/config/stage/expander/ExpanderStageTemplate.java (56%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/config/stage/mutator/BorderListStageTemplate.java (73%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/config/stage/mutator/BorderStageTemplate.java (68%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/config/stage/mutator/ReplaceListStageTemplate.java (71%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/config/stage/mutator/ReplaceStageTemplate.java (66%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/config/stage/mutator/SmoothStageTemplate.java (56%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/pipeline/BiomeChunkImpl.java (95%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/pipeline/PipelineImpl.java (85%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/source/SamplerSource.java (77%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/source/SingleSource.java (69%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/stage/expander/FractalExpander.java (81%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/stage/mutators/BorderListStage.java (92%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/stage/mutators/BorderStage.java (90%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/stage/mutators/ReplaceListStage.java (91%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/stage/mutators/ReplaceStage.java (87%) rename common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/{v2 => }/stage/mutators/SmoothStage.java (84%) delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java similarity index 96% rename from common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index 073bea70e..d1c919bde 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.image.v2; +package com.dfsek.terra.addons.biome.image; import java.util.Optional; diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProviderAddon.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java similarity index 88% rename from common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProviderAddon.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java index 8c9763336..695ce35b9 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProviderAddon.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java @@ -5,16 +5,16 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.image.v2; +package com.dfsek.terra.addons.biome.image; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.function.Supplier; -import com.dfsek.terra.addons.biome.image.v2.config.ImageProviderTemplate; -import com.dfsek.terra.addons.biome.image.v2.config.converter.ClosestBiomeColorConverterTemplate; -import com.dfsek.terra.addons.biome.image.v2.config.converter.ExactBiomeColorConverterTemplate; -import com.dfsek.terra.addons.biome.image.v2.config.converter.mapping.DefinedBiomeColorMappingTemplate; +import com.dfsek.terra.addons.biome.image.config.ImageProviderTemplate; +import com.dfsek.terra.addons.biome.image.config.converter.ClosestBiomeColorConverterTemplate; +import com.dfsek.terra.addons.biome.image.config.converter.ExactBiomeColorConverterTemplate; +import com.dfsek.terra.addons.biome.image.config.converter.mapping.DefinedBiomeColorMappingTemplate; import com.dfsek.terra.addons.image.converter.ColorConverter; import com.dfsek.terra.addons.image.converter.mapping.BiomeDefinedColorMapping; import com.dfsek.terra.addons.image.converter.mapping.ColorMapping; diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/ImageProviderTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/ImageProviderTemplate.java similarity index 91% rename from common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/ImageProviderTemplate.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/ImageProviderTemplate.java index 6596a0a8d..c041a12f9 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/ImageProviderTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/ImageProviderTemplate.java @@ -5,14 +5,14 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.image.v2.config; +package com.dfsek.terra.addons.biome.image.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.image.v2.ImageBiomeProvider; +import com.dfsek.terra.addons.biome.image.ImageBiomeProvider; import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.image.converter.ColorConverter; import com.dfsek.terra.api.world.biome.Biome; diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ClosestBiomeColorConverterTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/ClosestBiomeColorConverterTemplate.java similarity index 88% rename from common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ClosestBiomeColorConverterTemplate.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/ClosestBiomeColorConverterTemplate.java index 5581aa5a1..f88960e0e 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ClosestBiomeColorConverterTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/ClosestBiomeColorConverterTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.image.v2.config.converter; +package com.dfsek.terra.addons.biome.image.config.converter; import com.dfsek.tectonic.api.config.template.annotations.Value; diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ExactBiomeColorConverterTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/ExactBiomeColorConverterTemplate.java similarity index 93% rename from common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ExactBiomeColorConverterTemplate.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/ExactBiomeColorConverterTemplate.java index ce00bcb2f..c05d63916 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/ExactBiomeColorConverterTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/ExactBiomeColorConverterTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.image.v2.config.converter; +package com.dfsek.terra.addons.biome.image.config.converter; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/mapping/DefinedBiomeColorMappingTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/mapping/DefinedBiomeColorMappingTemplate.java similarity index 90% rename from common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/mapping/DefinedBiomeColorMappingTemplate.java rename to common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/mapping/DefinedBiomeColorMappingTemplate.java index 8cfc22408..17864a01f 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/converter/mapping/DefinedBiomeColorMappingTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/mapping/DefinedBiomeColorMappingTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.image.v2.config.converter.mapping; +package com.dfsek.terra.addons.biome.image.config.converter.mapping; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; diff --git a/common/addons/biome-provider-image/src/main/resources/terra.addon.yml b/common/addons/biome-provider-image/src/main/resources/terra.addon.yml index 00c4fbec2..f031ef124 100644 --- a/common/addons/biome-provider-image/src/main/resources/terra.addon.yml +++ b/common/addons/biome-provider-image/src/main/resources/terra.addon.yml @@ -4,7 +4,7 @@ contributors: id: biome-provider-image version: @VERSION@ entrypoints: - - "com.dfsek.terra.addons.biome.image.v2.ImageBiomeProviderAddon" + - "com.dfsek.terra.addons.biome.image.ImageBiomeProviderAddon" website: issues: https://github.com/PolyhedralDev/Terra/issues source: https://github.com/PolyhedralDev/Terra diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java similarity index 77% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index 509651d7d..8fb932d3d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -5,24 +5,24 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2; +package com.dfsek.terra.addons.biome.pipeline; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.function.Supplier; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.config.BiomePipelineTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.config.PipelineBiomeLoader; -import com.dfsek.terra.addons.biome.pipeline.v2.config.source.SamplerSourceTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.expander.ExpanderStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.BorderListStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.BorderStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.ReplaceListStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.ReplaceStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.SmoothStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.PipelineBiomeLoader; +import com.dfsek.terra.addons.biome.pipeline.config.source.SamplerSourceTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceStageTemplate; +import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothStageTemplate; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java similarity index 96% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java index 736211517..9f6bb4d6b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineColumn.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineColumn.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.v2; +package com.dfsek.terra.addons.biome.pipeline; import java.util.function.Consumer; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java similarity index 91% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java index 8c36a7ccf..0212a0e8a 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java @@ -1,5 +1,10 @@ -package com.dfsek.terra.addons.biome.pipeline.v2; +package com.dfsek.terra.addons.biome.pipeline; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.api.Pipeline; +import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; @@ -9,11 +14,6 @@ import java.util.Optional; import java.util.Set; import java.util.stream.StreamSupport; -import com.dfsek.terra.addons.biome.pipeline.v2.api.BiomeChunk; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Pipeline; -import com.dfsek.terra.addons.biome.pipeline.v2.api.SeededVector; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.registry.key.StringIdentifiable; import com.dfsek.terra.api.util.Column; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeChunk.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeChunk.java new file mode 100644 index 000000000..c9a2a9cb3 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeChunk.java @@ -0,0 +1,10 @@ +package com.dfsek.terra.addons.biome.pipeline.api; + + +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; + + +public interface BiomeChunk { + + PipelineBiome get(int xInChunk, int zInChunk); +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Expander.java similarity index 60% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Expander.java index abf4416b8..8f8bfde0a 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Expander.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.api; +package com.dfsek.terra.addons.biome.pipeline.api; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl.ViewPoint; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; /** @@ -10,7 +10,7 @@ import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl.ViewPoin */ public interface Expander extends Stage { - PipelineBiome fillBiome(ViewPoint viewPoint); + PipelineBiome fillBiome(BiomeChunkImpl.ViewPoint viewPoint); @Override default int maxRelativeReadDistance() { @@ -18,7 +18,7 @@ public interface Expander extends Stage { } @Override - default PipelineBiome apply(ViewPoint viewPoint) { + default PipelineBiome apply(BiomeChunkImpl.ViewPoint viewPoint) { PipelineBiome currentBiome = viewPoint.getBiome(); if(currentBiome == null) { return fillBiome(viewPoint); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java similarity index 78% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java index 37c8f1db0..13aa5aa0f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Pipeline.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.api; +package com.dfsek.terra.addons.biome.pipeline.api; import java.util.List; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/SeededVector.java similarity index 89% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/SeededVector.java index bee1f2424..febd27b9f 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/SeededVector.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/SeededVector.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.api; +package com.dfsek.terra.addons.biome.pipeline.api; public record SeededVector(long seed, int x, int z) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Source.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Source.java new file mode 100644 index 000000000..fd9a35bac --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Source.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.addons.biome.pipeline.api; + + +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; + + +public interface Source { + PipelineBiome get(long seed, int x, int z); + + Iterable getBiomes(); +} \ No newline at end of file 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 new file mode 100644 index 000000000..7b9b2aa75 --- /dev/null +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.addons.biome.pipeline.api; + +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; + + +public interface Stage { + PipelineBiome apply(BiomeChunkImpl.ViewPoint viewPoint); + + int maxRelativeReadDistance(); + + default Iterable getBiomes(Iterable biomes) { + return biomes; + } +} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java similarity index 92% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java index 0d57fd02e..5b2970640 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/DelegatedPipelineBiome.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.api.biome; +package com.dfsek.terra.addons.biome.pipeline.api.biome; import com.dfsek.terra.api.world.biome.Biome; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java similarity index 91% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java index 9ee5f6a65..fdcc77cc7 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PipelineBiome.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PipelineBiome.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.api.biome; +package com.dfsek.terra.addons.biome.pipeline.api.biome; import java.util.Set; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PlaceholderPipelineBiome.java similarity index 94% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PlaceholderPipelineBiome.java index b527564e2..5a458676e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/PlaceholderPipelineBiome.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/PlaceholderPipelineBiome.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.api.biome; +package com.dfsek.terra.addons.biome.pipeline.api.biome; import java.util.HashSet; import java.util.Set; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java similarity index 92% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java index 2f0be6d4e..7a00ef5fd 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/biome/SelfPipelineBiome.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/SelfPipelineBiome.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.api.biome; +package com.dfsek.terra.addons.biome.pipeline.api.biome; import java.util.Collections; import java.util.Set; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java similarity index 86% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index 937a1b7df..a365838a4 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/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 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.config; +package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Description; @@ -14,10 +14,10 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.v2.PipelineBiomeProvider; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.PipelineImpl; +import com.dfsek.terra.addons.biome.pipeline.pipeline.PipelineImpl; +import com.dfsek.terra.addons.biome.pipeline.PipelineBiomeProvider; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java similarity index 88% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java index 8f8e5d50d..afd249c25 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/PipelineBiomeLoader.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/PipelineBiomeLoader.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.config; +package com.dfsek.terra.addons.biome.pipeline.config; import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; @@ -8,7 +8,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.world.biome.Biome; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java similarity index 77% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java index 8b98cad62..87ece72f9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SamplerSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java @@ -5,14 +5,14 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.config.source; +package com.dfsek.terra.addons.biome.pipeline.config.source; import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.source.SamplerSource; +import com.dfsek.terra.addons.biome.pipeline.source.SamplerSource; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SourceTemplate.java similarity index 74% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SourceTemplate.java index 2c87fc98f..04fc5d6c3 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/source/SourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SourceTemplate.java @@ -5,11 +5,11 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.config.source; +package com.dfsek.terra.addons.biome.pipeline.config.source; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.Source; public abstract class SourceTemplate implements ObjectTemplate { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/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 85% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java index d3bbe528c..1e2eb6c5a 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/StageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java @@ -5,13 +5,13 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.config.stage; +package com.dfsek.terra.addons.biome.pipeline.config.stage; import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; 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/v2/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 56% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/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 index 7c1b58ad4..03b0419d2 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/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,11 +5,11 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.expander; +package com.dfsek.terra.addons.biome.pipeline.config.stage.expander; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.stage.expander.FractalExpander; +import com.dfsek.terra.addons.biome.pipeline.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.stage.expander.FractalExpander; public class ExpanderStageTemplate extends StageTemplate { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListStageTemplate.java similarity index 73% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListStageTemplate.java index 0f5ccc6ed..9fe6f42e0 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListStageTemplate.java @@ -5,16 +5,16 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.Map; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.BorderListStage; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.stage.mutators.BorderListStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderStageTemplate.java similarity index 68% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderStageTemplate.java index 6b6bbe4f8..02902a4e1 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderStageTemplate.java @@ -5,14 +5,14 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.BorderStage; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.stage.mutators.BorderStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListStageTemplate.java similarity index 71% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListStageTemplate.java index 53d6aff2f..5a17ba0ab 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListStageTemplate.java @@ -5,16 +5,16 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.Map; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.ReplaceListStage; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.stage.mutators.ReplaceListStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceStageTemplate.java similarity index 66% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceStageTemplate.java index 4a62704c9..778290338 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceStageTemplate.java @@ -5,14 +5,14 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.ReplaceStage; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; +import com.dfsek.terra.addons.biome.pipeline.stage.mutators.ReplaceStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothStageTemplate.java similarity index 56% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothStageTemplate.java index 8f897c0ab..10a18ede9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothStageTemplate.java @@ -5,11 +5,11 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; +package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.SmoothStage; +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.stage.mutators.SmoothStage; public class SmoothStageTemplate extends StageTemplate { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java similarity index 95% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java index 78b0fe806..a9dabb54e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java @@ -1,12 +1,12 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.pipeline; +package com.dfsek.terra.addons.biome.pipeline.pipeline; import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.v2.api.BiomeChunk; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.v2.api.SeededVector; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; public class BiomeChunkImpl implements BiomeChunk { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java similarity index 85% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java index 3adef3d8e..fa2bcaa96 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/PipelineImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java @@ -1,16 +1,16 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.pipeline; +package com.dfsek.terra.addons.biome.pipeline.pipeline; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.v2.api.BiomeChunk; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Pipeline; -import com.dfsek.terra.addons.biome.pipeline.v2.api.SeededVector; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.api.Pipeline; +import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; public class PipelineImpl implements Pipeline { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java similarity index 77% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java index 6ff9d98cd..6932d0f2c 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SamplerSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java @@ -1,7 +1,7 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.source; +package com.dfsek.terra.addons.biome.pipeline.source; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SingleSource.java similarity index 69% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SingleSource.java index 5649c3db4..dbd1e3747 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SingleSource.java @@ -1,10 +1,10 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.source; +package com.dfsek.terra.addons.biome.pipeline.source; import java.util.Collections; import java.util.Set; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; public class SingleSource implements Source { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java similarity index 81% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java index 957972e61..d6c429d49 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/expander/FractalExpander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java @@ -1,8 +1,8 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.stage.expander; +package com.dfsek.terra.addons.biome.pipeline.stage.expander; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Expander; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java similarity index 92% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java index a269fb7f2..78b3ea1d0 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderListStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.stage.mutators; import java.util.ArrayList; import java.util.HashSet; @@ -14,9 +14,9 @@ import java.util.Map; import java.util.Set; import java.util.function.Predicate; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.vector.Vector2Int; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java similarity index 90% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java index c1b5dbfba..655c84105 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/BorderStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.stage.mutators; import java.util.ArrayList; import java.util.HashSet; @@ -13,9 +13,9 @@ import java.util.List; import java.util.Set; import java.util.function.Predicate; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.vector.Vector2Int; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java similarity index 91% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java index 8d4ec30f7..4f58c201b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceListStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java @@ -5,11 +5,11 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.stage.mutators; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java similarity index 87% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java index b15986c82..c08770bb6 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/ReplaceStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java @@ -5,15 +5,15 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.stage.mutators; import java.util.HashSet; import java.util.Set; import java.util.stream.Stream; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java similarity index 84% rename from common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java rename to common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java index 5b8cac234..46aed6eae 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/stage/mutators/SmoothStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java @@ -5,13 +5,13 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators; +package com.dfsek.terra.addons.biome.pipeline.stage.mutators; import java.util.Objects; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java deleted file mode 100644 index 93e84fe3b..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/BiomeChunk.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.api; - - -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; - - -public interface BiomeChunk { - - PipelineBiome get(int xInChunk, int zInChunk); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java deleted file mode 100644 index 4a4953e41..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Source.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.api; - - -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; - - -public interface Source { - PipelineBiome get(long seed, int x, int z); - - Iterable getBiomes(); -} \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java deleted file mode 100644 index 973af0882..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.v2.api; - -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl.ViewPoint; - - -public interface Stage { - PipelineBiome apply(ViewPoint viewPoint); - - int maxRelativeReadDistance(); - - default Iterable getBiomes(Iterable biomes) { - return biomes; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml b/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml index 449f0c188..abd2555a5 100644 --- a/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml +++ b/common/addons/biome-provider-pipeline/src/main/resources/terra.addon.yml @@ -4,7 +4,7 @@ contributors: id: biome-provider-pipeline version: @VERSION@ entrypoints: - - "com.dfsek.terra.addons.biome.pipeline.v2.BiomePipelineAddon" + - "com.dfsek.terra.addons.biome.pipeline.BiomePipelineAddon" website: issues: https://github.com/PolyhedralDev/Terra/issues source: https://github.com/PolyhedralDev/Terra diff --git a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/ImageSource.java b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/ImageSource.java index 1d54dec89..b629dd35d 100644 --- a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/ImageSource.java +++ b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/ImageSource.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.image; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.image.converter.ColorConverter; diff --git a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/PipelineImageAddon.java b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/PipelineImageAddon.java index 34de699af..ea303e8dc 100644 --- a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/PipelineImageAddon.java +++ b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/PipelineImageAddon.java @@ -8,10 +8,10 @@ import com.dfsek.terra.addons.biome.pipeline.image.config.ImageSourceTemplate; import com.dfsek.terra.addons.biome.pipeline.image.config.converter.ClosestPipelineBiomeColorConverterTemplate; import com.dfsek.terra.addons.biome.pipeline.image.config.converter.ExactPipelineBiomeColorConverterTemplate; import com.dfsek.terra.addons.biome.pipeline.image.config.converter.mapping.DefinedPipelineBiomeColorMappingTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.BiomePipelineAddon; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.DelegatedPipelineBiome; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.BiomePipelineAddon; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.biome.DelegatedPipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.image.converter.ColorConverter; import com.dfsek.terra.addons.image.converter.mapping.BiomeDefinedColorMapping; import com.dfsek.terra.addons.image.converter.mapping.ColorMapping; diff --git a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/ImageSourceTemplate.java b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/ImageSourceTemplate.java index 8814d195b..b2256396e 100644 --- a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/ImageSourceTemplate.java +++ b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/ImageSourceTemplate.java @@ -4,8 +4,8 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.biome.pipeline.image.ImageSource; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.Source; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.image.converter.ColorConverter; diff --git a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/ClosestPipelineBiomeColorConverterTemplate.java b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/ClosestPipelineBiomeColorConverterTemplate.java index 4c98bfee7..499d7c0aa 100644 --- a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/ClosestPipelineBiomeColorConverterTemplate.java +++ b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/ClosestPipelineBiomeColorConverterTemplate.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.biome.pipeline.image.config.converter; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.image.config.converter.ClosestColorConverterTemplate; import com.dfsek.terra.addons.image.converter.mapping.ColorMapping; diff --git a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/ExactPipelineBiomeColorConverterTemplate.java b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/ExactPipelineBiomeColorConverterTemplate.java index 4f2724008..5499fdb7b 100644 --- a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/ExactPipelineBiomeColorConverterTemplate.java +++ b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/ExactPipelineBiomeColorConverterTemplate.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.biome.pipeline.image.config.converter; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.image.config.converter.ExactColorConverterTemplate; import com.dfsek.terra.addons.image.converter.mapping.ColorMapping; diff --git a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/mapping/DefinedPipelineBiomeColorMappingTemplate.java b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/mapping/DefinedPipelineBiomeColorMappingTemplate.java index 1406d8383..d743e9e8b 100644 --- a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/mapping/DefinedPipelineBiomeColorMappingTemplate.java +++ b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/mapping/DefinedPipelineBiomeColorMappingTemplate.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.Map; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.image.config.ColorLoader.ColorString; import com.dfsek.terra.addons.image.converter.mapping.ColorMapping; import com.dfsek.terra.addons.image.util.MapUtil; From 2f470a3720eadcb824d8bfa9c8051f30901e0a4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 5 Jan 2024 18:52:10 -0700 Subject: [PATCH 038/116] addon dep --- common/addons/pipeline-image/src/main/resources/terra.addon.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/addons/pipeline-image/src/main/resources/terra.addon.yml b/common/addons/pipeline-image/src/main/resources/terra.addon.yml index 2ae877a14..750434fba 100644 --- a/common/addons/pipeline-image/src/main/resources/terra.addon.yml +++ b/common/addons/pipeline-image/src/main/resources/terra.addon.yml @@ -12,4 +12,4 @@ website: license: MIT License depends: library-image: "1.+" - biome-provider-pipeline-v2: "1.+" + biome-provider-pipeline: "2.+" From 56dd15c9aaa7090707daac6f7b2fba9ac42c3c28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 5 Jan 2024 19:44:31 -0700 Subject: [PATCH 039/116] clean up flora injection and make it configurable, off by default --- .../config/PreLoadCompatibilityOptions.java | 8 +++ .../dfsek/terra/mod/util/MinecraftUtil.java | 63 ++++++++++++------- 2 files changed, 49 insertions(+), 22 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/PreLoadCompatibilityOptions.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/PreLoadCompatibilityOptions.java index 7efd74015..3dce7ef6e 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/PreLoadCompatibilityOptions.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/PreLoadCompatibilityOptions.java @@ -42,6 +42,10 @@ public class PreLoadCompatibilityOptions implements ConfigTemplate, Properties { @Default private double airThreshold = -0.5; + @Value("minecraft.inject-flora") + @Default + private boolean injectFlora = false; + public boolean useVanillaBiomes() { return vanillaBiomes; } @@ -57,4 +61,8 @@ public class PreLoadCompatibilityOptions implements ConfigTemplate, Properties { public double getAirThreshold() { return airThreshold; } + + public boolean isInjectFlora() { + return injectFlora; + } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index bd7428742..d7595d0cd 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -1,5 +1,10 @@ package com.dfsek.terra.mod.util; +import com.dfsek.terra.mod.CommonPlatform; + +import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; +import com.dfsek.terra.mod.config.ProtoPlatformBiome; + import net.minecraft.block.entity.LootableContainerBlockEntity; import net.minecraft.block.entity.MobSpawnerBlockEntity; import net.minecraft.block.entity.SignBlockEntity; @@ -68,29 +73,43 @@ public final class MinecraftUtil { return null; } - public static void registerFlora(Registry biomes) { - logger.info("Injecting flora into Terra biomes..."); - TERRA_BIOME_MAP - .forEach((vb, terraBiomes) -> - biomes.getOrEmpty(vb) - .ifPresentOrElse(vanilla -> terraBiomes - .forEach(tb -> biomes.getOrEmpty(tb) - .ifPresentOrElse( - terra -> { - List> flowerFeatures = List.copyOf( - vanilla.getGenerationSettings() - .getFlowerFeatures()); - logger.debug("Injecting flora into biome" + - " {} : {}", tb, - flowerFeatures); - ((FloraFeatureHolder) terra.getGenerationSettings()).setFloraFeatures( - flowerFeatures); - }, - () -> logger.error( - "No such biome: {}", - tb))), - () -> logger.error("No vanilla biome: {}", vb))); + public static void registerFlora(Registry biomeRegistry) { + CommonPlatform.get().getConfigRegistry().forEach(pack -> { // Register all Terra biomes. + pack.getCheckedRegistry(com.dfsek.terra.api.world.biome.Biome.class) + .forEach((id, biome) -> { + PreLoadCompatibilityOptions compatibilityOptions = pack.getContext().get(PreLoadCompatibilityOptions.class); + if (compatibilityOptions.isInjectFlora()) { + registerFlora(biome, pack, id, biomeRegistry); + } + }); + }); + logger.info("Injecting flora into Terra biomes..."); + + } + + public static void registerFlora(com.dfsek.terra.api.world.biome.Biome biome, ConfigPack pack, com.dfsek.terra.api.registry.key.RegistryKey id, Registry biomeRegistry) { + RegistryKey vanillaKey = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(biomeRegistry); + biomeRegistry.getOrEmpty(vanillaKey) + .ifPresentOrElse(vanillaBiome -> { + Identifier terraBiomeIdentifier = new Identifier("terra", MinecraftUtil.createBiomeID(pack, id)); + biomeRegistry.getOrEmpty(terraBiomeIdentifier).ifPresentOrElse( + terraBiome -> { + List> flowerFeatures = List.copyOf( + vanillaBiome.getGenerationSettings() + .getFlowerFeatures()); + logger.debug("Injecting flora into biome" + + " {} : {}", terraBiomeIdentifier, + flowerFeatures); + ((FloraFeatureHolder) terraBiome.getGenerationSettings()).setFloraFeatures( + flowerFeatures); + }, + () -> logger.error( + "No such biome: {}", + terraBiomeIdentifier) + ); + }, + () -> logger.error("No vanilla biome: {}", vanillaKey)); } public static Map> getTerraBiomeMap() { From cd69c7e77d1a1cb7855f701ec665267939b3cd3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 5 Jan 2024 19:49:20 -0700 Subject: [PATCH 040/116] bump version --- build.gradle.kts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index a8a497a85..c98267d07 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,8 @@ preRelease(true) -versionProjects(":common:api", version("6.5.0")) -versionProjects(":common:implementation", version("6.5.0")) -versionProjects(":platforms", version("6.5.0")) +versionProjects(":common:api", version("7.0.0")) +versionProjects(":common:implementation", version("7.0.0")) +versionProjects(":platforms", version("7.0.0")) allprojects { From 7214053b9eb2302a6c017f6240fac35f162c592e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Sun, 7 Jan 2024 11:57:17 -0700 Subject: [PATCH 041/116] update fabric loader --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index a150ac3b2..d1299c6d8 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -41,7 +41,7 @@ object Versions { const val minecraft = "1.20.4" const val yarn = "$minecraft+build.1" - const val fabricLoader = "0.15.1" + const val fabricLoader = "0.15.3" const val architecuryLoom = "1.4.369" const val architecturyPlugin = "3.4.151" From 0731d781d5263b6f83509ca187c6b1655856974e Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Tue, 17 Sep 2024 17:54:19 -0600 Subject: [PATCH 042/116] fix-up --- .../commands/structure/StructureCommandAddon.java | 5 ----- .../src/main/java/com/dfsek/terra/mod/data/Codecs.java | 10 +++++----- .../java/com/dfsek/terra/mod/util/MinecraftUtil.java | 2 +- .../main/java/com/dfsek/terra/mod/util/PresetUtil.java | 8 ++++---- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java index 45e0499ee..c4ef7f7ff 100644 --- a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java +++ b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java @@ -1,10 +1,5 @@ package com.dfsek.terra.addons.commands.structure; -import cloud.commandframework.ArgumentDescription; -import cloud.commandframework.CommandManager; -import cloud.commandframework.arguments.standard.EnumArgument; -import cloud.commandframework.arguments.standard.LongArgument; -import cloud.commandframework.context.CommandContext; import java.util.random.RandomGenerator; import java.util.random.RandomGeneratorFactory; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java index 5f140c69d..bfe3a2dd9 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java @@ -42,12 +42,12 @@ public final class Codecs { .forGetter(TerraBiomeSource::getPack)) .apply(instance, instance.stable(TerraBiomeSource::new))); - public static final Codec TERRA_CONSTANT_RANGE = RecordCodecBuilder.mapCodec(range -> range.group( + public static final Codec TERRA_CONSTANT_RANGE = RecordCodecBuilder.create(range -> range.group( Codec.INT.fieldOf("min").stable().forGetter(ConstantRange::getMin), Codec.INT.fieldOf("max").stable().forGetter(ConstantRange::getMax)).apply(range, range.stable(ConstantRange::new))); public static final Codec TERRA_GENERATION_SETTINGS = RecordCodecBuilder - .mapCodec(instance -> instance.group( + .create(instance -> instance.group( TERRA_CONSTANT_RANGE.fieldOf("height").stable().forGetter(GenerationSettings::height), Codec.INT.fieldOf("sea_level").forGetter(GenerationSettings::sealevel), Codec.BOOL.fieldOf("mob_generation").forGetter(GenerationSettings::mobGeneration), @@ -55,8 +55,8 @@ public final class Codecs { .apply(instance, instance.stable(GenerationSettings::new))); - public static final Codec MINECRAFT_CHUNK_GENERATOR_WRAPPER = RecordCodecBuilder - .create( + public static final MapCodec MINECRAFT_CHUNK_GENERATOR_WRAPPER = RecordCodecBuilder + .mapCodec( instance -> instance.group( TERRA_BIOME_SOURCE.fieldOf("biome_source") .stable() @@ -71,7 +71,7 @@ public final class Codecs { MinecraftChunkGeneratorWrapper::new)) ); - public static final Codec TERRA_CONSTANT_RANGE_INT_PROVIDER_TYPE = RecordCodecBuilder.create(range -> range.group( + public static final MapCodec TERRA_CONSTANT_RANGE_INT_PROVIDER_TYPE = RecordCodecBuilder.mapCodec(range -> range.group( Codec.INT.fieldOf("min").stable().forGetter(TerraIntProvider::getMin), Codec.INT.fieldOf("max").stable().forGetter(TerraIntProvider::getMax)) .apply(range, range.stable((min, max) -> new TerraIntProvider(new ConstantRange( diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index d7595d0cd..e7a6cf420 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -92,7 +92,7 @@ public final class MinecraftUtil { RegistryKey vanillaKey = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(biomeRegistry); biomeRegistry.getOrEmpty(vanillaKey) .ifPresentOrElse(vanillaBiome -> { - Identifier terraBiomeIdentifier = new Identifier("terra", MinecraftUtil.createBiomeID(pack, id)); + Identifier terraBiomeIdentifier = Identifier.of("terra", MinecraftUtil.createBiomeID(pack, id)); biomeRegistry.getOrEmpty(terraBiomeIdentifier).ifPresentOrElse( terraBiome -> { List> flowerFeatures = List.copyOf( diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 608e32bad..63ecf391b 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -93,7 +93,7 @@ public class PresetUtil { private static void insertCustom(ModPlatform platform, String key, ConfigPack pack, Registry dimensionTypeRegistry, Registry chunkGeneratorSettingsRegistry, HashMap, DimensionOptions> dimensionMap) { - Identifier demensionIdentifier = new Identifier(key); + Identifier demensionIdentifier = Identifier.of(key); VanillaWorldProperties vanillaWorldProperties; @@ -103,13 +103,13 @@ public class PresetUtil { vanillaWorldProperties = new VanillaWorldProperties(); } - DimensionType defaultDimension = dimensionTypeRegistry.get(new Identifier(vanillaWorldProperties.getVanillaDimension())); + DimensionType defaultDimension = dimensionTypeRegistry.get(Identifier.of(vanillaWorldProperties.getVanillaDimension())); assert defaultDimension != null; DimensionType dimensionType = DimensionUtil.createDimension(vanillaWorldProperties, defaultDimension, platform); RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey( - new Identifier("terra", pack.getID().toLowerCase( + Identifier.of("terra", pack.getID().toLowerCase( Locale.ROOT))); Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); @@ -119,7 +119,7 @@ public class PresetUtil { TerraBiomeSource biomeSource = new TerraBiomeSource(pack); RegistryEntry defaultGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry( - chunkGeneratorSettingsRegistry.get(new Identifier(vanillaWorldProperties.getVanillaGeneration()))); + chunkGeneratorSettingsRegistry.get(Identifier.of(vanillaWorldProperties.getVanillaGeneration()))); GenerationSettings generatorSettings = new GenerationSettings( vanillaWorldProperties.getHeight() == null ? new ConstantRange( From 2df27556315782b5d6b8adebf64cde8fe6aa2131 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Sat, 21 Sep 2024 17:20:28 -0600 Subject: [PATCH 043/116] small opt --- .../com/dfsek/terra/mod/util/MinecraftUtil.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index e7a6cf420..60b47110c 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -74,15 +74,15 @@ public final class MinecraftUtil { } public static void registerFlora(Registry biomeRegistry) { - CommonPlatform.get().getConfigRegistry().forEach(pack -> { // Register all Terra biomes. - pack.getCheckedRegistry(com.dfsek.terra.api.world.biome.Biome.class) - .forEach((id, biome) -> { - PreLoadCompatibilityOptions compatibilityOptions = pack.getContext().get(PreLoadCompatibilityOptions.class); - if (compatibilityOptions.isInjectFlora()) { - registerFlora(biome, pack, id, biomeRegistry); - } - }); + CommonPlatform.get().getConfigRegistry().forEach(pack -> { // Register all Terra biomes. + PreLoadCompatibilityOptions compatibilityOptions = pack.getContext().get(PreLoadCompatibilityOptions.class); + if (compatibilityOptions.isInjectFlora()) { + pack.getCheckedRegistry(com.dfsek.terra.api.world.biome.Biome.class) + .forEach((id, biome) -> { + registerFlora(biome, pack, id, biomeRegistry); + }); + } }); logger.info("Injecting flora into Terra biomes..."); From a95a1284a4f8fee34ed90aa6e35cd89372f85732 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Tue, 24 Sep 2024 09:54:53 -0600 Subject: [PATCH 044/116] reformat --- buildSrc/src/main/kotlin/Versions.kt | 2 +- .../com/dfsek/terra/addons/noise/samplers/ImageSampler.java | 4 ++-- .../terra/addons/structure/BiomeStructuresTemplate.java | 6 +++--- .../script/builders/UnaryBooleanFunctionBuilder.java | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 1e48e716a..848de51d5 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -15,7 +15,7 @@ object Versions { const val caffeine = "3.1.8" const val slf4j = "2.0.16" - + object Internal { const val shadow = "8.3.1" const val apacheText = "1.12.0" 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 13c9ceb6d..88f103416 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 @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.noise.samplers; -import java.awt.image.BufferedImage; - import com.dfsek.terra.api.noise.NoiseSampler; +import java.awt.image.BufferedImage; + public class ImageSampler implements NoiseSampler { private final BufferedImage image; 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 99e80e9bc..cd7d201a1 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 @@ -11,12 +11,12 @@ import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import java.util.Collections; -import java.util.Set; - import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; +import java.util.Collections; +import java.util.Set; + @SuppressWarnings("FieldMayBeFinal") public class BiomeStructuresTemplate implements ObjectTemplate { 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 0be9cd209..6fedf93a8 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 @@ -7,9 +7,6 @@ package com.dfsek.terra.addons.terrascript.script.builders; -import java.util.List; -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.Scope; @@ -18,6 +15,9 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import java.util.List; +import java.util.function.BiConsumer; + public class UnaryBooleanFunctionBuilder implements FunctionBuilder> { From 581651e83b906ac3d3501383f4d686c3194771b2 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Tue, 24 Sep 2024 10:06:57 -0600 Subject: [PATCH 045/116] reformat --- .../addons/biome/extrusion/api/Extrusion.java | 4 +- .../biome/image/ImageBiomeProviderAddon.java | 4 +- .../biome/pipeline/PipelineBiomeProvider.java | 10 ++-- .../addons/biome/pipeline/api/Stage.java | 2 +- .../api/biome/DelegatedPipelineBiome.java | 4 +- .../config/BiomePipelineTemplate.java | 4 +- .../config/source/SamplerSourceTemplate.java | 2 +- .../stage/expander/FractalExpander.java | 2 +- .../stage/mutators/BorderListStage.java | 2 +- .../pipeline/stage/mutators/BorderStage.java | 2 +- .../stage/mutators/ReplaceListStage.java | 12 ++--- .../pipeline/stage/mutators/ReplaceStage.java | 2 +- .../pipeline/stage/mutators/SmoothStage.java | 2 +- .../structure/StructureCommandAddon.java | 5 +- .../biome/holder/PaletteHolderBuilder.java | 4 +- .../distributors/PointSetDistributor.java | 4 +- .../dfsek/terra/addons/noise/NoiseAddon.java | 1 + .../addons/noise/NoiseConfigPackTemplate.java | 6 +-- .../config/templates/FunctionTemplate.java | 4 +- .../noise/CellularNoiseTemplate.java | 4 +- .../LinearMapNormalizerTemplate.java | 10 ++-- .../noise/normalizer/LinearMapNormalizer.java | 12 ++--- .../addons/noise/samplers/ImageSampler.java | 4 +- .../noise/samplers/noise/CellularSampler.java | 11 ++-- .../structure/BiomeStructuresTemplate.java | 6 +-- .../feature/FeatureGenerationAddon.java | 10 ++-- .../image/config/image/ImageTemplate.java | 4 +- .../pipeline/image/PipelineImageAddon.java | 8 +-- .../image/config/ImageSourceTemplate.java | 2 +- .../structure/mutator/MutatedStructure.java | 4 +- .../builders/CheckBlockFunctionBuilder.java | 4 +- .../builders/UnaryBooleanFunctionBuilder.java | 6 +-- .../dfsek/terra/api/config/PluginConfig.java | 4 +- .../platform/CommandRegistrationEvent.java | 4 +- .../com/dfsek/terra/AbstractPlatform.java | 2 +- .../preprocessor/MetaNumberPreprocessor.java | 7 ++- .../src/test/java/registry/RegistryTest.java | 7 +-- .../BukkitChunkGeneratorWrapper.java | 1 - .../bukkit/world/BukkitWorldProperties.java | 4 +- .../dfsek/terra/cli/handle/CLIItemHandle.java | 4 +- .../java/com/dfsek/terra/mod/ModPlatform.java | 48 ++++++++--------- .../terra/mod/config/MusicSoundTemplate.java | 9 ++-- .../terra/mod/config/SpawnEntryTemplate.java | 9 ++-- .../java/com/dfsek/terra/mod/data/Codecs.java | 11 ++-- .../MinecraftChunkGeneratorWrapper.java | 1 - .../mixin/generalize/ServerWorldMixin.java | 28 ++++------ .../dfsek/terra/mod/util/MinecraftUtil.java | 54 +++++++++---------- .../com/dfsek/terra/mod/util/PresetUtil.java | 5 +- .../terra/lifecycle/LifecycleEntryPoint.java | 6 +-- .../terra/lifecycle/LifecyclePlatform.java | 2 +- 50 files changed, 179 insertions(+), 188 deletions(-) diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/Extrusion.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/Extrusion.java index c1d5f5524..4c4ca972a 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/Extrusion.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/Extrusion.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.extrusion.api; -import com.dfsek.terra.api.world.biome.Biome; - import java.util.Collection; +import com.dfsek.terra.api.world.biome.Biome; + public interface Extrusion { Biome extrude(Biome original, int x, int y, int z, long seed); 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 695ce35b9..20a7c2192 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 @@ -9,8 +9,6 @@ package com.dfsek.terra.addons.biome.image; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import java.util.function.Supplier; - import com.dfsek.terra.addons.biome.image.config.ImageProviderTemplate; import com.dfsek.terra.addons.biome.image.config.converter.ClosestBiomeColorConverterTemplate; import com.dfsek.terra.addons.biome.image.config.converter.ExactBiomeColorConverterTemplate; @@ -29,6 +27,8 @@ import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import java.util.function.Supplier; + public class ImageBiomeProviderAddon implements AddonInitializer { public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java index 0212a0e8a..1052a2279 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java @@ -1,10 +1,5 @@ package com.dfsek.terra.addons.biome.pipeline; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; -import com.dfsek.terra.addons.biome.pipeline.api.Pipeline; -import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; @@ -14,6 +9,11 @@ import java.util.Optional; import java.util.Set; import java.util.stream.StreamSupport; +import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.api.Pipeline; +import com.dfsek.terra.addons.biome.pipeline.api.SeededVector; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.registry.key.StringIdentifiable; import com.dfsek.terra.api.util.Column; 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 7b9b2aa75..f08d382de 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,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.api; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; public interface Stage { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java index 5b2970640..a915e32f2 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/biome/DelegatedPipelineBiome.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.api.biome; -import com.dfsek.terra.api.world.biome.Biome; - import java.util.Set; +import com.dfsek.terra.api.world.biome.Biome; + public final class DelegatedPipelineBiome implements PipelineBiome { private final Biome biome; 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 a365838a4..4ee6e00bc 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 @@ -14,10 +14,10 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.List; -import com.dfsek.terra.addons.biome.pipeline.pipeline.PipelineImpl; import com.dfsek.terra.addons.biome.pipeline.PipelineBiomeProvider; import com.dfsek.terra.addons.biome.pipeline.api.Source; import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.pipeline.PipelineImpl; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -29,7 +29,7 @@ public class BiomePipelineTemplate implements ObjectTemplate { @Default @Description(""" The resolution at which to sample biomes. - + Larger values are quadratically faster, but produce lower quality results. For example, a value of 3 would sample every 3 blocks.""") protected @Meta int resolution = 1; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java index 87ece72f9..d2d42e4c5 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java @@ -10,9 +10,9 @@ package com.dfsek.terra.addons.biome.pipeline.config.source; import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.source.SamplerSource; import com.dfsek.terra.addons.biome.pipeline.api.Source; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.source.SamplerSource; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java index d6c429d49..af2600d33 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addons.biome.pipeline.stage.expander; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; import com.dfsek.terra.addons.biome.pipeline.api.Expander; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java index 78b3ea1d0..1b45c6f08 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java @@ -14,9 +14,9 @@ import java.util.Map; import java.util.Set; import java.util.function.Predicate; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.vector.Vector2Int; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java index 655c84105..4a7228254 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java @@ -13,9 +13,9 @@ import java.util.List; import java.util.Set; import java.util.function.Predicate; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.vector.Vector2Int; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java index 4f58c201b..114642c48 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java @@ -7,17 +7,17 @@ package com.dfsek.terra.addons.biome.pipeline.stage.mutators; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.stream.Stream; +import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.collection.ProbabilityCollection; + public class ReplaceListStage implements Stage { private final Map> replace; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java index c08770bb6..67c4c8729 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java @@ -11,9 +11,9 @@ import java.util.HashSet; import java.util.Set; import java.util.stream.Stream; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java index 46aed6eae..e44648549 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java @@ -9,9 +9,9 @@ package com.dfsek.terra.addons.biome.pipeline.stage.mutators; import java.util.Objects; -import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java index 2c50f7a7b..28447f0a1 100644 --- a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java +++ b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java @@ -1,8 +1,6 @@ package com.dfsek.terra.addons.commands.structure; -import java.util.random.RandomGenerator; -import java.util.random.RandomGeneratorFactory; import org.incendo.cloud.CommandManager; import org.incendo.cloud.component.DefaultValue; import org.incendo.cloud.context.CommandContext; @@ -10,7 +8,8 @@ import org.incendo.cloud.description.Description; import org.incendo.cloud.parser.standard.EnumParser; import org.incendo.cloud.parser.standard.LongParser; -import java.util.Random; +import java.util.random.RandomGenerator; +import java.util.random.RandomGeneratorFactory; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; 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 a96cbcc48..e840f9817 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 @@ -7,11 +7,11 @@ package com.dfsek.terra.addons.biome.holder; -import com.dfsek.terra.api.world.chunk.generation.util.Palette; - import java.util.Map; import java.util.TreeMap; +import com.dfsek.terra.api.world.chunk.generation.util.Palette; + public class PaletteHolderBuilder { private final TreeMap paletteMap = new TreeMap<>(); 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 4285af486..f85d41e5f 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 @@ -7,11 +7,11 @@ 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; 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 1391b7606..e2fa8956c 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 @@ -37,6 +37,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.CubicSplineNormalizerTemplate; import com.dfsek.terra.addons.noise.config.templates.normalizer.ExpressionNormalizerTemplate; +import com.dfsek.terra.addons.noise.config.templates.normalizer.LinearMapNormalizerTemplate; 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.config.templates.normalizer.PosterizationNormalizerTemplate; 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 d6ac6c00c..c41af1763 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 @@ -11,14 +11,14 @@ import com.dfsek.tectonic.api.config.template.ConfigTemplate; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; +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.api.config.meta.Meta; import com.dfsek.terra.api.properties.Properties; -import java.util.LinkedHashMap; -import java.util.Map; - @SuppressWarnings("FieldMayBeFinal") public class NoiseConfigPackTemplate implements ConfigTemplate, Properties { 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 543ac908a..5be66c1f6 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 @@ -11,12 +11,12 @@ import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.Meta; + import java.util.LinkedHashMap; import java.util.List; import java.util.Objects; -import com.dfsek.terra.api.config.meta.Meta; - @SuppressWarnings("unused") public class FunctionTemplate implements ObjectTemplate { 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 c1fdd2122..1258929e4 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 @@ -34,11 +34,11 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Value("lookup") @Default private @Meta NoiseSampler lookup = new OpenSimplex2Sampler(); - + @Value("salt-lookup") @Default private @Meta boolean saltLookup = true; - + @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/normalizer/LinearMapNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java index 1a04fe190..a03411628 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java @@ -9,21 +9,21 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class LinearMapNormalizerTemplate extends NormalizerTemplate { - + @Value("from.a") @Default private @Meta double aFrom = -1; - + @Value("from.b") @Default private @Meta double bFrom = 1; - + @Value("to.a") private @Meta double aTo; - + @Value("to.b") private @Meta double bTo; - + @Override public NoiseSampler get() { return new LinearMapNormalizer(function, aFrom, aTo, bFrom, bTo); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java index d124ef8de..2338a6493 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java @@ -4,15 +4,15 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class LinearMapNormalizer extends Normalizer { - + private final double aFrom; - + private final double aTo; - + private final double bFrom; - + private final double bTo; - + public LinearMapNormalizer(NoiseSampler sampler, double aFrom, double aTo, double bFrom, double bTo) { super(sampler); this.aFrom = aFrom; @@ -20,7 +20,7 @@ public class LinearMapNormalizer extends Normalizer { this.bFrom = bFrom; this.bTo = bTo; } - + @Override public double normalize(double in) { return (in - aFrom) * (aTo - bTo) / (aFrom - bFrom) + aTo; 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 88f103416..13c9ceb6d 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 @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.noise.samplers; -import com.dfsek.terra.api.noise.NoiseSampler; - import java.awt.image.BufferedImage; +import com.dfsek.terra.api.noise.NoiseSampler; + public class ImageSampler implements NoiseSampler { private final BufferedImage image; 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 8e163f9ad..4fd80a511 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 @@ -197,9 +197,9 @@ public class CellularSampler extends NoiseFunction { private double jitterModifier = 1.0; private NoiseSampler noiseLookup; - + private boolean saltLookup; - + public CellularSampler() { noiseLookup = new OpenSimplex2Sampler(); } @@ -219,11 +219,11 @@ public class CellularSampler extends NoiseFunction { public void setReturnType(ReturnType returnType) { this.returnType = returnType; } - + public void setSaltLookup(boolean saltLookup) { this.saltLookup = saltLookup; } - + @Override public double getNoiseRaw(long sl, double x, double y) { int seed = (int) sl; @@ -384,7 +384,8 @@ public class CellularSampler extends NoiseFunction { case Distance2Mul -> distance1 * distance0 * 0.5 - 1; case Distance2Div -> distance0 / distance1 - 1; case NoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), centerX, centerY, centerZ); - case LocalNoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), x / frequency - centerX, y / frequency - centerY, z / frequency - centerZ); + case LocalNoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), x / frequency - centerX, y / frequency - centerY, + z / frequency - centerZ); case Distance3 -> distance2 - 1; case Distance3Add -> (distance2 + distance0) * 0.5 - 1; case Distance3Sub -> distance2 - distance0 - 1; 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 cd7d201a1..99e80e9bc 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 @@ -11,12 +11,12 @@ import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.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; + @SuppressWarnings("FieldMayBeFinal") public class BiomeStructuresTemplate implements ObjectTemplate { 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 f1ca7d945..41009ed0b 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 @@ -11,6 +11,13 @@ import com.dfsek.tectonic.api.config.template.dynamic.DynamicTemplate; import com.dfsek.tectonic.api.config.template.dynamic.DynamicValue; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Supplier; + import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures; import com.dfsek.terra.addons.generation.feature.config.FeatureStageTemplate; import com.dfsek.terra.addons.manifest.api.AddonInitializer; @@ -28,9 +35,6 @@ import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; -import java.util.*; -import java.util.function.Supplier; - public class FeatureGenerationAddon implements AddonInitializer { public static final TypeKey>> STAGE_TYPE_KEY = new TypeKey<>() { diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageTemplate.java index 0ef7ee751..ad9fdb6e4 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageTemplate.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageTemplate.java @@ -3,11 +3,11 @@ package com.dfsek.terra.addons.image.config.image; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import java.io.IOException; - import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.api.config.ConfigPack; +import java.io.IOException; + public class ImageTemplate implements ObjectTemplate { diff --git a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/PipelineImageAddon.java b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/PipelineImageAddon.java index ea303e8dc..aa0757093 100644 --- a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/PipelineImageAddon.java +++ b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/PipelineImageAddon.java @@ -4,14 +4,14 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.function.Supplier; -import com.dfsek.terra.addons.biome.pipeline.image.config.ImageSourceTemplate; -import com.dfsek.terra.addons.biome.pipeline.image.config.converter.ClosestPipelineBiomeColorConverterTemplate; -import com.dfsek.terra.addons.biome.pipeline.image.config.converter.ExactPipelineBiomeColorConverterTemplate; -import com.dfsek.terra.addons.biome.pipeline.image.config.converter.mapping.DefinedPipelineBiomeColorMappingTemplate; import com.dfsek.terra.addons.biome.pipeline.BiomePipelineAddon; import com.dfsek.terra.addons.biome.pipeline.api.Source; import com.dfsek.terra.addons.biome.pipeline.api.biome.DelegatedPipelineBiome; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.image.config.ImageSourceTemplate; +import com.dfsek.terra.addons.biome.pipeline.image.config.converter.ClosestPipelineBiomeColorConverterTemplate; +import com.dfsek.terra.addons.biome.pipeline.image.config.converter.ExactPipelineBiomeColorConverterTemplate; +import com.dfsek.terra.addons.biome.pipeline.image.config.converter.mapping.DefinedPipelineBiomeColorMappingTemplate; import com.dfsek.terra.addons.image.converter.ColorConverter; import com.dfsek.terra.addons.image.converter.mapping.BiomeDefinedColorMapping; import com.dfsek.terra.addons.image.converter.mapping.ColorMapping; diff --git a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/ImageSourceTemplate.java b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/ImageSourceTemplate.java index b2256396e..0154d80e8 100644 --- a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/ImageSourceTemplate.java +++ b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/ImageSourceTemplate.java @@ -3,9 +3,9 @@ package com.dfsek.terra.addons.biome.pipeline.image.config; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.biome.pipeline.image.ImageSource; import com.dfsek.terra.addons.biome.pipeline.api.Source; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.image.ImageSource; import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.image.converter.ColorConverter; diff --git a/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java index 4a91f07c8..5fbc42028 100644 --- a/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java +++ b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.structure.mutator; +import java.util.random.RandomGenerator; + import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.structure.Structure; @@ -9,8 +11,6 @@ import com.dfsek.terra.api.world.WritableWorld; import com.dfsek.terra.api.world.util.ReadInterceptor; import com.dfsek.terra.api.world.util.WriteInterceptor; -import java.util.random.RandomGenerator; - public class MutatedStructure implements Structure, Keyed { private final RegistryKey key; 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 cfef3f572..588b99f53 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 @@ -7,13 +7,13 @@ 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") 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 6fedf93a8..0be9cd209 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 @@ -7,6 +7,9 @@ package com.dfsek.terra.addons.terrascript.script.builders; +import java.util.List; +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.Scope; @@ -15,9 +18,6 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import java.util.List; -import java.util.function.BiConsumer; - public class UnaryBooleanFunctionBuilder implements FunctionBuilder> { 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 62919f12d..baee8c01f 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 @@ -7,10 +7,10 @@ package com.dfsek.terra.api.config; -import com.dfsek.terra.api.Platform; - import java.util.List; +import com.dfsek.terra.api.Platform; + public interface PluginConfig { void load(Platform platform); diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/CommandRegistrationEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/CommandRegistrationEvent.java index 3ad041c9b..80088ff6d 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/CommandRegistrationEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/platform/CommandRegistrationEvent.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.event.events.platform; +import org.incendo.cloud.CommandManager; + import com.dfsek.terra.api.command.CommandSender; import com.dfsek.terra.api.event.events.Event; -import org.incendo.cloud.CommandManager; - public class CommandRegistrationEvent implements Event { private final CommandManager commandManager; diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java index 6637201fe..7aa032ea0 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -298,7 +298,7 @@ public abstract class AbstractPlatform implements Platform { Map> resources = new Yaml().load(resourceYaml); resources.forEach((dir, entries) -> entries.forEach(entry -> { String resourceClassPath = dir + "/" + entry; - if (ignoredResources.contains(dir) || ignoredResources.contains(entry) || ignoredResources.contains(resourceClassPath)) { + if(ignoredResources.contains(dir) || ignoredResources.contains(entry) || ignoredResources.contains(resourceClassPath)) { logger.info("Not dumping resource {} because it is ignored.", resourceClassPath); } else { String resourcePath = resourceClassPath.replace('/', File.separatorChar); diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java index c823d7ec4..9197adeb1 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java @@ -24,15 +24,14 @@ import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; import com.dfsek.tectonic.api.loader.ConfigLoader; import com.dfsek.tectonic.api.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.util.Map; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.util.reflection.TypeKey; + public class MetaNumberPreprocessor extends MetaPreprocessor { public static final TypeKey META_STRING_KEY = new TypeKey<@Meta String>() { diff --git a/common/implementation/base/src/test/java/registry/RegistryTest.java b/common/implementation/base/src/test/java/registry/RegistryTest.java index 4ea1326fe..01612bd7e 100644 --- a/common/implementation/base/src/test/java/registry/RegistryTest.java +++ b/common/implementation/base/src/test/java/registry/RegistryTest.java @@ -17,8 +17,6 @@ package registry; -import org.junit.jupiter.api.Test; - import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; @@ -27,7 +25,10 @@ import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; public class RegistryTest { diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java index ac6c1abbd..bd6796bad 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java @@ -28,7 +28,6 @@ import org.slf4j.LoggerFactory; import java.util.List; import java.util.Random; -import java.util.random.RandomGenerator; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorldProperties.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorldProperties.java index 7ece9ac7b..f9763df90 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorldProperties.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorldProperties.java @@ -1,9 +1,9 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.world.info.WorldProperties; - import org.bukkit.generator.WorldInfo; +import com.dfsek.terra.api.world.info.WorldProperties; + public class BukkitWorldProperties implements WorldProperties { private final WorldInfo delegate; diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/handle/CLIItemHandle.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/handle/CLIItemHandle.java index 3228901bc..535e23897 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/handle/CLIItemHandle.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/handle/CLIItemHandle.java @@ -1,11 +1,11 @@ package com.dfsek.terra.cli.handle; +import java.util.Set; + import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.inventory.Item; import com.dfsek.terra.api.inventory.item.Enchantment; -import java.util.Set; - public class CLIItemHandle implements ItemHandle { @Override diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index a4885acc5..d1434fb23 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -6,7 +6,6 @@ import com.dfsek.tectonic.api.exception.LoadException; import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.EntityType; import net.minecraft.entity.SpawnGroup; -import net.minecraft.entity.boss.dragon.EnderDragonFight; import net.minecraft.registry.Registry; import net.minecraft.server.MinecraftServer; import net.minecraft.sound.BiomeAdditionsSound; @@ -30,7 +29,6 @@ import org.jetbrains.annotations.NotNull; import java.util.HashSet; import java.util.List; -import java.util.Locale; import java.util.function.BiConsumer; import com.dfsek.terra.AbstractPlatform; @@ -79,29 +77,29 @@ public abstract class ModPlatform extends AbstractPlatform { public void register(TypeRegistry registry) { super.register(registry); registry.registerLoader(PlatformBiome.class, (type, o, loader, depthTracker) -> parseBiome((String) o, depthTracker)) - .registerLoader(Identifier.class, (type, o, loader, depthTracker) -> { - Identifier identifier = Identifier.tryParse((String) o); - if(identifier == null) - throw new LoadException("Invalid identifier: " + o, depthTracker); - return identifier; - }) - .registerLoader(Precipitation.class, (type, o, loader, depthTracker) -> Precipitation.valueOf(((String) o).toUpperCase())) - .registerLoader(GrassColorModifier.class, - (type, o, loader, depthTracker) -> GrassColorModifier.valueOf(((String) o).toUpperCase())) - .registerLoader(TemperatureModifier.class, - (type, o, loader, depthTracker) -> TemperatureModifier.valueOf(((String) o).toUpperCase())) - .registerLoader(SpawnGroup.class, (type, o, loader, depthTracker) -> SpawnGroup.valueOf((String) o)) - .registerLoader(BiomeParticleConfig.class, BiomeParticleConfigTemplate::new) - .registerLoader(SoundEvent.class, SoundEventTemplate::new) - .registerLoader(BiomeMoodSound.class, BiomeMoodSoundTemplate::new) - .registerLoader(BiomeAdditionsSound.class, BiomeAdditionsSoundTemplate::new) - .registerLoader(MusicSound.class, MusicSoundTemplate::new) - .registerLoader(EntityType.class, EntityTypeTemplate::new) - .registerLoader(SpawnCostConfig.class, SpawnCostConfig::new) - .registerLoader(SpawnEntry.class, SpawnEntryTemplate::new) - .registerLoader(SpawnTypeConfig.class, SpawnTypeConfig::new) - .registerLoader(SpawnSettings.class, SpawnSettingsTemplate::new) - .registerLoader(VillagerType.class, VillagerTypeTemplate::new); + .registerLoader(Identifier.class, (type, o, loader, depthTracker) -> { + Identifier identifier = Identifier.tryParse((String) o); + if(identifier == null) + throw new LoadException("Invalid identifier: " + o, depthTracker); + return identifier; + }) + .registerLoader(Precipitation.class, (type, o, loader, depthTracker) -> Precipitation.valueOf(((String) o).toUpperCase())) + .registerLoader(GrassColorModifier.class, + (type, o, loader, depthTracker) -> GrassColorModifier.valueOf(((String) o).toUpperCase())) + .registerLoader(TemperatureModifier.class, + (type, o, loader, depthTracker) -> TemperatureModifier.valueOf(((String) o).toUpperCase())) + .registerLoader(SpawnGroup.class, (type, o, loader, depthTracker) -> SpawnGroup.valueOf((String) o)) + .registerLoader(BiomeParticleConfig.class, BiomeParticleConfigTemplate::new) + .registerLoader(SoundEvent.class, SoundEventTemplate::new) + .registerLoader(BiomeMoodSound.class, BiomeMoodSoundTemplate::new) + .registerLoader(BiomeAdditionsSound.class, BiomeAdditionsSoundTemplate::new) + .registerLoader(MusicSound.class, MusicSoundTemplate::new) + .registerLoader(EntityType.class, EntityTypeTemplate::new) + .registerLoader(SpawnCostConfig.class, SpawnCostConfig::new) + .registerLoader(SpawnEntry.class, SpawnEntryTemplate::new) + .registerLoader(SpawnTypeConfig.class, SpawnTypeConfig::new) + .registerLoader(SpawnSettings.class, SpawnSettingsTemplate::new) + .registerLoader(VillagerType.class, VillagerTypeTemplate::new); } private ProtoPlatformBiome parseBiome(String id, DepthTracker tracker) throws LoadException { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java index 94a6341b3..83ab9be05 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java @@ -3,23 +3,22 @@ package com.dfsek.terra.mod.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; - -import com.dfsek.terra.api.util.Range; - import net.minecraft.registry.Registries; import net.minecraft.sound.MusicSound; import net.minecraft.sound.SoundEvent; +import com.dfsek.terra.api.util.Range; + public class MusicSoundTemplate implements ObjectTemplate { @Value("sound") @Default private SoundEvent sound = null; - + @Value("delay") @Default private Range delay = null; - + @Value("replace-current-music") @Default private Boolean replaceCurrentMusic = null; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java index f7aa770bd..40a948a13 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java @@ -3,12 +3,11 @@ package com.dfsek.terra.mod.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; - -import com.dfsek.terra.api.util.Range; - import net.minecraft.entity.EntityType; import net.minecraft.world.biome.SpawnSettings.SpawnEntry; +import com.dfsek.terra.api.util.Range; + public class SpawnEntryTemplate implements ObjectTemplate { @Value("type") @@ -18,11 +17,11 @@ public class SpawnEntryTemplate implements ObjectTemplate { @Value("weight") @Default private Integer weight = null; - + @Value("group-size") @Default private Range groupSize = null; - + @Override public SpawnEntry get() { return new SpawnEntry(type, weight, groupSize.getMin(), groupSize.getMax()); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java index bfe3a2dd9..b3666c139 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java @@ -71,9 +71,10 @@ public final class Codecs { MinecraftChunkGeneratorWrapper::new)) ); - public static final MapCodec TERRA_CONSTANT_RANGE_INT_PROVIDER_TYPE = RecordCodecBuilder.mapCodec(range -> range.group( - Codec.INT.fieldOf("min").stable().forGetter(TerraIntProvider::getMin), - Codec.INT.fieldOf("max").stable().forGetter(TerraIntProvider::getMax)) - .apply(range, range.stable((min, max) -> new TerraIntProvider(new ConstantRange( - min, max))))); + public static final MapCodec TERRA_CONSTANT_RANGE_INT_PROVIDER_TYPE = RecordCodecBuilder.mapCodec( + range -> range.group( + Codec.INT.fieldOf("min").stable().forGetter(TerraIntProvider::getMin), + Codec.INT.fieldOf("max").stable().forGetter(TerraIntProvider::getMax)) + .apply(range, range.stable((min, max) -> new TerraIntProvider(new ConstantRange( + min, max))))); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java index bd2e88eff..5f311b99b 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/MinecraftChunkGeneratorWrapper.java @@ -35,7 +35,6 @@ import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.source.BiomeAccess; import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.dimension.NetherPortal; import net.minecraft.world.gen.GenerationStep.Carver; import net.minecraft.world.gen.StructureAccessor; import net.minecraft.world.gen.StructureWeightSampler; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java index d82e81304..9d71d6c28 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java @@ -1,36 +1,21 @@ package com.dfsek.terra.mod.mixin.generalize; -import net.minecraft.block.entity.SignText; -import net.minecraft.client.render.DimensionEffects; import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.WorldGenerationProgressListener; import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.math.random.RandomSequencesState; import net.minecraft.util.profiler.Profiler; import net.minecraft.village.raid.RaidManager; import net.minecraft.world.MutableWorldProperties; import net.minecraft.world.World; -import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionTypes; -import net.minecraft.world.level.ServerWorldProperties; -import net.minecraft.world.level.storage.LevelStorage; -import net.minecraft.world.level.storage.LevelStorage.Session; -import net.minecraft.world.spawner.SpecialSpawner; -import org.jetbrains.annotations.Nullable; -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; -import java.util.List; -import java.util.concurrent.Executor; import java.util.function.Supplier; @@ -43,18 +28,23 @@ public abstract class ServerWorldMixin extends World { maxChainedNeighborUpdates); } - @Redirect(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/registry/entry/RegistryEntry;matchesKey(Lnet/minecraft/registry/RegistryKey;)Z")) + @Redirect(method = "", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/registry/entry/RegistryEntry;matchesKey(Lnet/minecraft/registry/RegistryKey;)Z")) public boolean matchesKeyProxy(RegistryEntry instance, RegistryKey tRegistryKey) { - if (tRegistryKey == DimensionTypes.THE_END) { + if(tRegistryKey == DimensionTypes.THE_END) { return (this.getRegistryKey() == World.END); } return instance.matchesKey(tRegistryKey); } - @Redirect(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/village/raid/RaidManager;nameFor(Lnet/minecraft/registry/entry/RegistryEntry;)Ljava/lang/String;")) + @Redirect(method = "", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/village/raid/RaidManager;nameFor(Lnet/minecraft/registry/entry/RegistryEntry;)" + + "Ljava/lang/String;")) public String nameForProxy(RegistryEntry dimensionTypeEntry) { RegistryEntry entry = dimensionTypeEntry; - if (this.getRegistryKey() == World.END) { + if(this.getRegistryKey() == World.END) { entry = getRegistryManager().get(RegistryKeys.DIMENSION_TYPE).getEntry(DimensionTypes.THE_NETHER).orElseThrow(); } return RaidManager.nameFor(entry); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index 60b47110c..64376ddde 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -1,10 +1,5 @@ package com.dfsek.terra.mod.util; -import com.dfsek.terra.mod.CommonPlatform; - -import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; -import com.dfsek.terra.mod.config.ProtoPlatformBiome; - import net.minecraft.block.entity.LootableContainerBlockEntity; import net.minecraft.block.entity.MobSpawnerBlockEntity; import net.minecraft.block.entity.SignBlockEntity; @@ -39,6 +34,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.util.ConstantRange; +import com.dfsek.terra.mod.CommonPlatform; +import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; +import com.dfsek.terra.mod.config.ProtoPlatformBiome; import com.dfsek.terra.mod.config.VanillaBiomeProperties; import com.dfsek.terra.mod.data.Codecs; import com.dfsek.terra.mod.implmentation.TerraIntProvider; @@ -77,7 +75,7 @@ public final class MinecraftUtil { CommonPlatform.get().getConfigRegistry().forEach(pack -> { // Register all Terra biomes. PreLoadCompatibilityOptions compatibilityOptions = pack.getContext().get(PreLoadCompatibilityOptions.class); - if (compatibilityOptions.isInjectFlora()) { + if(compatibilityOptions.isInjectFlora()) { pack.getCheckedRegistry(com.dfsek.terra.api.world.biome.Biome.class) .forEach((id, biome) -> { registerFlora(biome, pack, id, biomeRegistry); @@ -88,28 +86,30 @@ public final class MinecraftUtil { } - public static void registerFlora(com.dfsek.terra.api.world.biome.Biome biome, ConfigPack pack, com.dfsek.terra.api.registry.key.RegistryKey id, Registry biomeRegistry) { + public static void registerFlora(com.dfsek.terra.api.world.biome.Biome biome, ConfigPack pack, + com.dfsek.terra.api.registry.key.RegistryKey id, + Registry biomeRegistry) { RegistryKey vanillaKey = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(biomeRegistry); - biomeRegistry.getOrEmpty(vanillaKey) - .ifPresentOrElse(vanillaBiome -> { - Identifier terraBiomeIdentifier = Identifier.of("terra", MinecraftUtil.createBiomeID(pack, id)); - biomeRegistry.getOrEmpty(terraBiomeIdentifier).ifPresentOrElse( - terraBiome -> { - List> flowerFeatures = List.copyOf( - vanillaBiome.getGenerationSettings() - .getFlowerFeatures()); - logger.debug("Injecting flora into biome" + - " {} : {}", terraBiomeIdentifier, - flowerFeatures); - ((FloraFeatureHolder) terraBiome.getGenerationSettings()).setFloraFeatures( - flowerFeatures); - }, - () -> logger.error( - "No such biome: {}", - terraBiomeIdentifier) - ); - }, - () -> logger.error("No vanilla biome: {}", vanillaKey)); + biomeRegistry.getOrEmpty(vanillaKey) + .ifPresentOrElse(vanillaBiome -> { + Identifier terraBiomeIdentifier = Identifier.of("terra", MinecraftUtil.createBiomeID(pack, id)); + biomeRegistry.getOrEmpty(terraBiomeIdentifier).ifPresentOrElse( + terraBiome -> { + List> flowerFeatures = List.copyOf( + vanillaBiome.getGenerationSettings() + .getFlowerFeatures()); + logger.debug("Injecting flora into biome" + + " {} : {}", terraBiomeIdentifier, + flowerFeatures); + ((FloraFeatureHolder) terraBiome.getGenerationSettings()).setFloraFeatures( + flowerFeatures); + }, + () -> logger.error( + "No such biome: {}", + terraBiomeIdentifier) + ); + }, + () -> logger.error("No vanilla biome: {}", vanillaKey)); } public static Map> getTerraBiomeMap() { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 63ecf391b..896d0ec6e 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -47,8 +47,9 @@ public class PresetUtil { platform.multiNoiseBiomeSourceParameterListRegistry(); - Identifier generatorID = Identifier.tryParse("terra:" + pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase( - Locale.ROOT)); + Identifier generatorID = Identifier.tryParse( + "terra:" + pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase( + Locale.ROOT)); PRESETS.add(generatorID); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecycleEntryPoint.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecycleEntryPoint.java index 48dc88249..0cbfa77b4 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecycleEntryPoint.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecycleEntryPoint.java @@ -1,8 +1,5 @@ package com.dfsek.terra.lifecycle; -import com.dfsek.terra.api.command.CommandSender; -import com.dfsek.terra.api.event.events.platform.CommandRegistrationEvent; - import net.minecraft.server.command.ServerCommandSource; import org.incendo.cloud.SenderMapper; import org.incendo.cloud.execution.ExecutionCoordinator; @@ -10,6 +7,9 @@ import org.incendo.cloud.fabric.FabricServerCommandManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.dfsek.terra.api.command.CommandSender; +import com.dfsek.terra.api.event.events.platform.CommandRegistrationEvent; + public final class LifecycleEntryPoint { private static final Logger logger = LoggerFactory.getLogger(LifecycleEntryPoint.class); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java index 5f7369167..30cd0e6d7 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java @@ -4,8 +4,8 @@ import ca.solostudios.strata.Versions; import ca.solostudios.strata.parser.tokenizer.ParseException; import ca.solostudios.strata.version.Version; import net.minecraft.MinecraftVersion; -import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.enchantment.Enchantment; +import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKeys; import net.minecraft.server.MinecraftServer; From a7a7354c402a4a42fe75bb032b4b464ec75562ff Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Tue, 24 Sep 2024 23:30:04 -0600 Subject: [PATCH 046/116] remove 7.0 todo --- .../java/com/dfsek/terra/bukkit/util/BukkitUtils.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/BukkitUtils.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/BukkitUtils.java index 6c0a9c7f4..eb5d62270 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/BukkitUtils.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/BukkitUtils.java @@ -20,14 +20,6 @@ public class BukkitUtils { } public static EntityType getEntityType(String id) { - if(!id.contains(":")) { //TODO: remove in 7.0 - String newid = "minecraft:" + id.toLowerCase(); - ; - logger.warn( - "Translating " + id + " to " + newid + ". In 1.20.3 entity parsing was reworked" + - ". You are advised to perform this rename in your config backs as this translation will be removed in the next major " + - "version of Terra."); - } if(!id.startsWith("minecraft:")) throw new IllegalArgumentException("Invalid entity identifier " + id); String entityID = id.toUpperCase(Locale.ROOT).substring(10); From f5f3725dba13a7c504fd0664fd86d9b1108f6637 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Wed, 25 Sep 2024 15:47:19 -0600 Subject: [PATCH 047/116] Addon dependency updates --- buildSrc/src/main/kotlin/Versions.kt | 2 +- common/addons/config-number-predicate/build.gradle.kts | 7 +------ common/addons/manifest-addon-loader/build.gradle.kts | 4 ++-- common/addons/structure-sponge-loader/build.gradle.kts | 8 ++------ .../addons/structure-terrascript-loader/build.gradle.kts | 8 ++------ platforms/cli/build.gradle.kts | 2 +- 6 files changed, 9 insertions(+), 22 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 848de51d5..d1d076134 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -25,6 +25,7 @@ object Versions { const val snakeYml = "2.3" const val jetBrainsAnnotations = "24.1.0" const val junit = "5.11.0" + const val nbt = "6.1" } } @@ -72,7 +73,6 @@ object Versions { // } // object CLI { - const val nbt = "6.1" const val logback = "1.5.8" } } \ No newline at end of file diff --git a/common/addons/config-number-predicate/build.gradle.kts b/common/addons/config-number-predicate/build.gradle.kts index 2ea535016..b76b64160 100644 --- a/common/addons/config-number-predicate/build.gradle.kts +++ b/common/addons/config-number-predicate/build.gradle.kts @@ -5,9 +5,4 @@ version = version("1.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) api("com.dfsek", "paralithic", Versions.Libraries.paralithic) -} - - -tasks.named("shadowJar") { - relocate("com.dfsek.paralithic", "com.dfsek.terra.addons.numberpredicate.lib.paralithic") -} +} \ No newline at end of file diff --git a/common/addons/manifest-addon-loader/build.gradle.kts b/common/addons/manifest-addon-loader/build.gradle.kts index 6a5b6f54e..8a2c03003 100644 --- a/common/addons/manifest-addon-loader/build.gradle.kts +++ b/common/addons/manifest-addon-loader/build.gradle.kts @@ -1,8 +1,8 @@ version = version("1.0.0") dependencies { - api("commons-io:commons-io:2.7") - implementation("com.dfsek.tectonic:yaml:${Versions.Libraries.tectonic}") + api("commons-io", "commons-io", Versions.Libraries.Internal.apacheIO) + implementation("com.dfsek.tectonic", "yaml", Versions.Libraries.tectonic) } tasks.withType { diff --git a/common/addons/structure-sponge-loader/build.gradle.kts b/common/addons/structure-sponge-loader/build.gradle.kts index dba93405f..20c002866 100644 --- a/common/addons/structure-sponge-loader/build.gradle.kts +++ b/common/addons/structure-sponge-loader/build.gradle.kts @@ -3,11 +3,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar version = version("1.0.0") dependencies { - api("commons-io:commons-io:2.7") - api("com.github.Querz:NBT:6.1") + api("commons-io", "commons-io", Versions.Libraries.Internal.apacheIO) + api("com.github.Querz", "NBT", Versions.Libraries.Internal.nbt) compileOnlyApi(project(":common:addons:manifest-addon-loader")) -} - -tasks.named("shadowJar") { - relocate("org.apache.commons", "com.dfsek.terra.addons.sponge.lib.commons") } \ 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 a042ee13c..24e3a20e9 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -3,10 +3,6 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar version = version("1.2.0") dependencies { - api("commons-io:commons-io:2.7") + api("commons-io", "commons-io", Versions.Libraries.Internal.apacheIO) compileOnlyApi(project(":common:addons:manifest-addon-loader")) -} - -tasks.named("shadowJar") { - relocate("org.apache.commons", "com.dfsek.terra.addons.terrascript.lib.commons") -} +} \ No newline at end of file diff --git a/platforms/cli/build.gradle.kts b/platforms/cli/build.gradle.kts index 5070c047f..893649caf 100644 --- a/platforms/cli/build.gradle.kts +++ b/platforms/cli/build.gradle.kts @@ -8,7 +8,7 @@ dependencies { shadedApi(project(":common:implementation:base")) shadedApi("commons-io", "commons-io", Versions.Libraries.Internal.apacheIO) - shadedApi("com.github.Querz", "NBT", Versions.CLI.nbt) + shadedApi("com.github.Querz", "NBT", Versions.Libraries.Internal.nbt) shadedImplementation("com.google.guava", "guava", Versions.Libraries.Internal.guava) From 1912d8e34ceea7cdebb9daa999f5b3760e2087ce Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Fri, 25 Oct 2024 15:44:51 -0600 Subject: [PATCH 048/116] Fixup --- .../mixin/generalize/ServerWorldMixin.java | 22 ++++++++---- .../dfsek/terra/mod/util/MinecraftUtil.java | 8 ++--- .../com/dfsek/terra/mod/util/PresetUtil.java | 36 +++++++++---------- 3 files changed, 35 insertions(+), 31 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java index 9d71d6c28..cd096cb82 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java @@ -2,30 +2,38 @@ package com.dfsek.terra.mod.mixin.generalize; import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.WorldGenerationProgressListener; import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.random.RandomSequencesState; import net.minecraft.util.profiler.Profiler; import net.minecraft.village.raid.RaidManager; import net.minecraft.world.MutableWorldProperties; import net.minecraft.world.World; +import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionTypes; +import net.minecraft.world.level.ServerWorldProperties; +import net.minecraft.world.level.storage.LevelStorage; +import net.minecraft.world.spawner.SpecialSpawner; +import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +import java.util.List; +import java.util.concurrent.Executor; import java.util.function.Supplier; @Mixin(ServerWorld.class) public abstract class ServerWorldMixin extends World { - protected ServerWorldMixin(MutableWorldProperties properties, RegistryKey registryRef, DynamicRegistryManager registryManager, - RegistryEntry dimensionEntry, Supplier profiler, boolean isClient, - boolean debugWorld, long biomeAccess, int maxChainedNeighborUpdates) { - super(properties, registryRef, registryManager, dimensionEntry, profiler, isClient, debugWorld, biomeAccess, - maxChainedNeighborUpdates); + public ServerWorldMixin(MinecraftServer server, Executor workerExecutor, LevelStorage.Session session, ServerWorldProperties properties, RegistryKey worldKey, DimensionOptions dimensionOptions, WorldGenerationProgressListener worldGenerationProgressListener, boolean debugWorld, long seed, List spawners, boolean shouldTickTime, @Nullable RandomSequencesState randomSequencesState) { + super(properties, worldKey, server.getRegistryManager(), dimensionOptions.dimensionTypeEntry(), false, debugWorld, seed, server.getMaxChainedNeighborUpdates()); } @Redirect(method = "", @@ -45,7 +53,9 @@ public abstract class ServerWorldMixin extends World { public String nameForProxy(RegistryEntry dimensionTypeEntry) { RegistryEntry entry = dimensionTypeEntry; if(this.getRegistryKey() == World.END) { - entry = getRegistryManager().get(RegistryKeys.DIMENSION_TYPE).getEntry(DimensionTypes.THE_NETHER).orElseThrow(); + Registry dimensionTypeRegistry = getRegistryManager().getOrThrow(RegistryKeys.DIMENSION_TYPE); + entry = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.THE_NETHER)); + } return RaidManager.nameFor(entry); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index 544d819ad..7c44ace4d 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -71,7 +71,7 @@ public final class MinecraftUtil { } public static void registerFlora(Registry biomeRegistry) { - + logger.info("Injecting flora into Terra biomes..."); CommonPlatform.get().getConfigRegistry().forEach(pack -> { // Register all Terra biomes. PreLoadCompatibilityOptions compatibilityOptions = pack.getContext().get(PreLoadCompatibilityOptions.class); if(compatibilityOptions.isInjectFlora()) { @@ -81,18 +81,16 @@ public final class MinecraftUtil { }); } }); - logger.info("Injecting flora into Terra biomes..."); - } public static void registerFlora(com.dfsek.terra.api.world.biome.Biome biome, ConfigPack pack, com.dfsek.terra.api.registry.key.RegistryKey id, Registry biomeRegistry) { RegistryKey vanillaKey = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(biomeRegistry); - biomeRegistry.getOrEmpty(vanillaKey) + biomeRegistry.getOptionalValue(vanillaKey) .ifPresentOrElse(vanillaBiome -> { Identifier terraBiomeIdentifier = Identifier.of("terra", MinecraftUtil.createBiomeID(pack, id)); - biomeRegistry.getOrEmpty(terraBiomeIdentifier).ifPresentOrElse( + biomeRegistry.getOptionalValue(terraBiomeIdentifier).ifPresentOrElse( terraBiome -> { List> flowerFeatures = List.copyOf( vanillaBiome.getGenerationSettings() diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 896d0ec6e..703965a7b 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -146,15 +146,14 @@ public class PresetUtil { Registry multiNoiseBiomeSourceParameterLists, Registry biomeRegistry, HashMap, DimensionOptions> map) { if(!map.containsKey(DimensionOptions.OVERWORLD)) { - RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow(); + RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.OVERWORLD)); - RegistryEntry.Reference overworldChunkBiomeReference = - multiNoiseBiomeSourceParameterLists.getEntry( - MultiNoiseBiomeSourceParameterLists.OVERWORLD).orElseThrow(); + RegistryEntry overworldChunkBiomeReference = + multiNoiseBiomeSourceParameterLists.getEntry(multiNoiseBiomeSourceParameterLists.get( + MultiNoiseBiomeSourceParameterLists.OVERWORLD)); - RegistryEntry overworldChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry( - ChunkGeneratorSettings.OVERWORLD) - .orElseThrow(); + RegistryEntry overworldChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get( + ChunkGeneratorSettings.OVERWORLD)); DimensionOptions overworldDimensionOptions = new DimensionOptions(overworldDimensionType, @@ -162,31 +161,28 @@ public class PresetUtil { map.put(DimensionOptions.OVERWORLD, overworldDimensionOptions); } if(!map.containsKey(DimensionOptions.NETHER)) { - RegistryEntry netherDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.THE_NETHER).orElseThrow(); + RegistryEntry netherDimensionType = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.THE_NETHER)); - RegistryEntry.Reference netherChunkBiomeReference = - multiNoiseBiomeSourceParameterLists.getEntry( - MultiNoiseBiomeSourceParameterLists.NETHER).orElseThrow(); - - RegistryEntry netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry( - ChunkGeneratorSettings.NETHER) - .orElseThrow(); + RegistryEntry netherChunkBiomeReference = + multiNoiseBiomeSourceParameterLists.getEntry(multiNoiseBiomeSourceParameterLists.get( + MultiNoiseBiomeSourceParameterLists.NETHER)); + RegistryEntry netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get( + ChunkGeneratorSettings.NETHER)); DimensionOptions overworldDimensionOptions = new DimensionOptions(netherDimensionType, (new NoiseChunkGenerator(MultiNoiseBiomeSource.create(netherChunkBiomeReference), netherChunkGeneratorSettings))); map.put(DimensionOptions.NETHER, overworldDimensionOptions); } if(!map.containsKey(DimensionOptions.END)) { - RegistryEntry endDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.THE_END).orElseThrow(); + RegistryEntry endDimensionType = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.THE_END)); - RegistryEntry endChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry( - ChunkGeneratorSettings.END) - .orElseThrow(); + RegistryEntry endChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get( + ChunkGeneratorSettings.END)); DimensionOptions overworldDimensionOptions = new DimensionOptions(endDimensionType, - (new NoiseChunkGenerator(TheEndBiomeSource.createVanilla(biomeRegistry.getReadOnlyWrapper()), endChunkGeneratorSettings))); + (new NoiseChunkGenerator(TheEndBiomeSource.createVanilla(biomeRegistry), endChunkGeneratorSettings))); map.put(DimensionOptions.END, overworldDimensionOptions); } } From 3d66386f9966a7c413ecd0b4942a37761eff04af Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Fri, 25 Oct 2024 15:58:15 -0600 Subject: [PATCH 049/116] Populate packs in a metapack under extended --- .../java/com/dfsek/terra/mod/ModPlatform.java | 6 ++---- .../com/dfsek/terra/mod/util/PresetUtil.java | 12 ++++++------ .../java/com/dfsek/terra/mod/util/TagUtil.java | 16 ++++++++++------ 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index d1434fb23..47b4299a9 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -62,14 +62,12 @@ public abstract class ModPlatform extends AbstractPlatform { public void registerWorldTypes(BiConsumer registerFunction) { HashSet configPacksInMetaPack = new HashSet<>(); getRawMetaConfigRegistry().forEach(pack -> { - PresetUtil.createMetaPackPreset(pack, this).apply(registerFunction); + PresetUtil.createMetaPackPreset(pack, this, false).apply(registerFunction); pack.packs().forEach((k, v) -> configPacksInMetaPack.add(v.getID())); }); getRawConfigRegistry() .forEach(pack -> { - if(!configPacksInMetaPack.contains(pack.getID())) { - PresetUtil.createDefault(pack, this).apply(registerFunction); - } + PresetUtil.createDefault(pack, this, configPacksInMetaPack.contains(pack.getID())).apply(registerFunction); }); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 703965a7b..fc853d554 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -38,9 +38,9 @@ import com.dfsek.terra.mod.generation.TerraBiomeSource; public class PresetUtil { private static final Logger LOGGER = LoggerFactory.getLogger(PresetUtil.class); - private static final List PRESETS = new ArrayList<>(); + private static final List> PRESETS = new ArrayList<>(); - public static Pair createDefault(ConfigPack pack, ModPlatform platform) { + public static Pair createDefault(ConfigPack pack, ModPlatform platform, boolean extended) { Registry dimensionTypeRegistry = platform.dimensionTypeRegistry(); Registry chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry(); Registry multiNoiseBiomeSourceParameterLists = @@ -51,7 +51,7 @@ public class PresetUtil { "terra:" + pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase( Locale.ROOT)); - PRESETS.add(generatorID); + PRESETS.add(Pair.of(generatorID, extended)); HashMap, DimensionOptions> dimensionMap = new HashMap<>(); @@ -65,7 +65,7 @@ public class PresetUtil { return Pair.of(generatorID, preset); } - public static Pair createMetaPackPreset(MetaPack metaPack, ModPlatform platform) { + public static Pair createMetaPackPreset(MetaPack metaPack, ModPlatform platform, boolean extended) { Registry dimensionTypeRegistry = platform.dimensionTypeRegistry(); Registry chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry(); Registry multiNoiseBiomeSourceParameterLists = @@ -75,7 +75,7 @@ public class PresetUtil { metaPack.getID().toLowerCase(Locale.ROOT) + "/" + metaPack.getNamespace().toLowerCase( Locale.ROOT)); - PRESETS.add(generatorID); + PRESETS.add(Pair.of(generatorID, extended)); HashMap, DimensionOptions> dimensionMap = new HashMap<>(); @@ -187,7 +187,7 @@ public class PresetUtil { } } - public static List getPresets() { + public static List> getPresets() { return PRESETS; } } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java index b172878a8..de8542a41 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java @@ -36,16 +36,20 @@ public final class TagUtil { PresetUtil .getPresets() - .forEach(id -> MinecraftUtil - .getEntry(registry, id) + .forEach(pair -> MinecraftUtil + .getEntry(registry, pair.getLeft()) .ifPresentOrElse( - preset -> collect - .computeIfAbsent(WorldPresetTags.NORMAL, tag -> new ArrayList<>()) - .add(preset), - () -> logger.error("Preset {} does not exist!", id))); + preset -> { + boolean useExtendedTag = pair.getRight(); // Get the boolean value from the pair + collect + .computeIfAbsent(useExtendedTag ? WorldPresetTags.EXTENDED : WorldPresetTags.NORMAL, tag -> new ArrayList<>()) + .add(preset); + }, + () -> logger.error("Preset {} does not exist!", pair.getLeft()))); registry.startTagReload(new RegistryTags<>(registry.getKey(), collect)).apply(); + if(logger.isDebugEnabled()) { registry.streamEntries() .map(e -> e.registryKey().getValue() + ": " + From d088d2f5a83716ac4689bb4bed0f550482595f4c Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Fri, 25 Oct 2024 15:59:38 -0600 Subject: [PATCH 050/116] InlineVar --- .../src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java index 03ff2243e..34b6f44bc 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java @@ -60,7 +60,7 @@ public class DimensionUtil { MonsterSettings defaultMonsterSettings = defaultDimension.monsterSettings(); - MonsterSettings monsterSettings = new MonsterSettings( + return new MonsterSettings( monsterSettingsConfig.getPiglinSafe() == null ? defaultMonsterSettings.piglinSafe() : monsterSettingsConfig.getPiglinSafe(), monsterSettingsConfig.getHasRaids() == null ? defaultMonsterSettings.hasRaids() : monsterSettingsConfig.getHasRaids(), monsterSettingsConfig.getMonsterSpawnLight() == null ? defaultMonsterSettings.monsterSpawnLightTest() : new TerraIntProvider( @@ -69,6 +69,5 @@ public class DimensionUtil { ? defaultMonsterSettings.monsterSpawnBlockLightLimit() : monsterSettingsConfig.getMonsterSpawnBlockLightLimit() ); - return monsterSettings; } } From d91e531fa54e63acdad8ff0e3793d4290cb31d3f Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Fri, 25 Oct 2024 16:28:00 -0600 Subject: [PATCH 051/116] fix allay --- .../com/dfsek/terra/allay/AllayPlatform.java | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/AllayPlatform.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/AllayPlatform.java index e40d88f69..335c7ddf4 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/AllayPlatform.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/AllayPlatform.java @@ -39,19 +39,26 @@ public class AllayPlatform extends AbstractPlatform { public boolean reload() { getTerraConfig().load(this); getRawConfigRegistry().clear(); - boolean succeed = getRawConfigRegistry().loadAll(this); + try { + getRawConfigRegistry().loadAll(this); - GENERATOR_WRAPPERS.forEach(wrapper -> { - getConfigRegistry().get(wrapper.getConfigPack().getRegistryKey()).ifPresent(pack -> { - wrapper.setConfigPack(pack); - var dimension = wrapper.getAllayWorldGenerator().getDimension(); - TerraAllayPlugin.INSTANCE.getPluginLogger().info( - "Replaced pack in chunk generator for world {}", - dimension.getWorld().getWorldData().getName() + ":" + dimension.getDimensionInfo().dimensionId() - ); + GENERATOR_WRAPPERS.forEach(wrapper -> { + getConfigRegistry().get(wrapper.getConfigPack().getRegistryKey()).ifPresent(pack -> { + wrapper.setConfigPack(pack); + var dimension = wrapper.getAllayWorldGenerator().getDimension(); + TerraAllayPlugin.INSTANCE.getPluginLogger().info( + "Replaced pack in chunk generator for world {}", + dimension.getWorld().getWorldData().getName() + ":" + dimension.getDimensionInfo().dimensionId() + ); + }); }); - }); - return succeed; + } catch(Exception e) { + TerraAllayPlugin.INSTANCE.getPluginLogger().error("Failed to reload Terra", e); + return false; + } + + + return true; } @Override From e665e187c1b8f0f63a0e3ed8cf9d36dbd5041b5e Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Tue, 29 Oct 2024 16:00:39 -0600 Subject: [PATCH 052/116] Fix up merge --- .../java/com/dfsek/terra/mod/util/MinecraftUtil.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index bf35f7247..a78877a7a 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -68,6 +68,13 @@ public final class MinecraftUtil { return null; } + public static void registerIntProviderTypes() { + IntProviderType CONSTANT = IntProviderType.register("terra:constant_range", + Codecs.TERRA_CONSTANT_RANGE_INT_PROVIDER_TYPE); + + TerraIntProvider.TERRA_RANGE_TYPE_TO_INT_PROVIDER_TYPE.put(ConstantRange.class, CONSTANT); + } + public static void registerFlora(Registry biomeRegistry) { logger.info("Injecting flora into Terra biomes..."); CommonPlatform.get().getConfigRegistry().forEach(pack -> { // Register all Terra biomes. @@ -81,13 +88,13 @@ public final class MinecraftUtil { }); } - public static void registerFlora(com.dfsek.terra.api.world.biome.Biome biome, ConfigPack pack, + private static void registerFlora(com.dfsek.terra.api.world.biome.Biome biome, ConfigPack pack, com.dfsek.terra.api.registry.key.RegistryKey id, Registry biomeRegistry) { RegistryKey vanillaKey = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(biomeRegistry); biomeRegistry.getOptionalValue(vanillaKey) .ifPresentOrElse(vanillaBiome -> { - Identifier terraBiomeIdentifier = Identifier.of("terra", MinecraftUtil.createBiomeID(pack, id)); + Identifier terraBiomeIdentifier = Identifier.of("terra", BiomeUtil.createBiomeID(pack, id)); biomeRegistry.getOptionalValue(terraBiomeIdentifier).ifPresentOrElse( terraBiome -> { List> flowerFeatures = List.copyOf( From b4ab88a02e474083aa92823b804b491045e6939f Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Tue, 29 Oct 2024 16:13:29 -0600 Subject: [PATCH 053/116] Fix allay reload --- .../com/dfsek/terra/allay/AllayPlatform.java | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/AllayPlatform.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/AllayPlatform.java index 335c7ddf4..1cd61ae6e 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/AllayPlatform.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/AllayPlatform.java @@ -38,27 +38,20 @@ public class AllayPlatform extends AbstractPlatform { @Override public boolean reload() { getTerraConfig().load(this); - getRawConfigRegistry().clear(); - try { - getRawConfigRegistry().loadAll(this); + boolean succeed = loadConfigPacks(); - GENERATOR_WRAPPERS.forEach(wrapper -> { - getConfigRegistry().get(wrapper.getConfigPack().getRegistryKey()).ifPresent(pack -> { - wrapper.setConfigPack(pack); - var dimension = wrapper.getAllayWorldGenerator().getDimension(); - TerraAllayPlugin.INSTANCE.getPluginLogger().info( - "Replaced pack in chunk generator for world {}", - dimension.getWorld().getWorldData().getName() + ":" + dimension.getDimensionInfo().dimensionId() - ); - }); + GENERATOR_WRAPPERS.forEach(wrapper -> { + getConfigRegistry().get(wrapper.getConfigPack().getRegistryKey()).ifPresent(pack -> { + wrapper.setConfigPack(pack); + var dimension = wrapper.getAllayWorldGenerator().getDimension(); + TerraAllayPlugin.INSTANCE.getPluginLogger().info( + "Replaced pack in chunk generator for world {}", + dimension.getWorld().getWorldData().getName() + ":" + dimension.getDimensionInfo().dimensionId() + ); }); - } catch(Exception e) { - TerraAllayPlugin.INSTANCE.getPluginLogger().error("Failed to reload Terra", e); - return false; - } + }); - - return true; + return succeed; } @Override From 8366a5288b069fe1939d5b3ae3187dc2771a2ab8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Sat, 1 Mar 2025 15:45:30 -0700 Subject: [PATCH 054/116] fix minestom build --- .../main/java/com/dfsek/terra/minestom/MinestomPlatform.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java index 7e6c6e0b5..78ac5ff18 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java @@ -45,8 +45,7 @@ public final class MinestomPlatform extends AbstractPlatform { @Override public boolean reload() { getTerraConfig().load(this); - getRawConfigRegistry().clear(); - boolean succeed = getRawConfigRegistry().loadAll(this); + boolean succeed = loadConfigPacks(); MinecraftServer.getInstanceManager().getInstances().forEach(world -> { if(world.generator() instanceof MinestomChunkGeneratorWrapper wrapper) { From 5892464a1dc7b1810906713f0aee963cb3a724f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Sat, 1 Mar 2025 21:32:39 -0700 Subject: [PATCH 055/116] WIP Seismic Integration --- buildSrc/src/main/kotlin/DependencyConfig.kt | 6 + buildSrc/src/main/kotlin/Versions.kt | 3 +- .../extrusions/SamplerExtrusionTemplate.java | 6 +- .../extrusions/ReplaceExtrusion.java | 8 +- .../extrusion/extrusions/SetExtrusion.java | 8 +- .../biome/pipeline/PipelineBiomeProvider.java | 10 +- .../config/BiomePipelineTemplate.java | 4 +- .../config/source/SamplerSourceTemplate.java | 4 +- .../pipeline/config/stage/StageTemplate.java | 4 +- .../biome/pipeline/source/SamplerSource.java | 6 +- .../stage/expander/FractalExpander.java | 8 +- .../stage/mutators/BorderListStage.java | 15 +- .../pipeline/stage/mutators/BorderStage.java | 12 +- .../stage/mutators/ReplaceListStage.java | 6 +- .../pipeline/stage/mutators/ReplaceStage.java | 6 +- .../pipeline/stage/mutators/SmoothStage.java | 8 +- .../noise/BiomeNoiseConfigTemplate.java | 8 +- .../config/noise/BiomeNoiseProperties.java | 8 +- .../config/noise/ThreadLocalNoiseHolder.java | 6 +- .../math/SlantCalculationMethod.java | 4 +- .../interpolation/ElevationInterpolator.java | 4 +- .../math/interpolation/Interpolator.java | 10 +- .../math/interpolation/Interpolator3.java | 6 +- .../LazilyEvaluatedInterpolator.java | 19 +- .../structure/StructureCommandAddon.java | 2 +- .../config/SamplerDistributorTemplate.java | 4 +- .../distributors/PaddedGridDistributor.java | 7 +- .../distributors/SamplerDistributor.java | 8 +- .../addons/feature/ConfiguredFeature.java | 6 +- .../terra/addons/feature/FeatureTemplate.java | 6 +- .../terra/addons/flora/FloraTemplate.java | 6 +- .../addons/flora/flora/gen/TerraFlora.java | 11 +- .../AdjacentPatternLocatorTemplate.java | 2 +- .../config/GaussianRandomLocatorTemplate.java | 2 +- .../config/PatternLocatorTemplate.java | 2 +- .../locator/config/RandomLocatorTemplate.java | 2 +- .../config/Sampler3DLocatorTemplate.java | 4 +- .../config/SamplerLocatorTemplate.java | 4 +- .../config/SurfaceLocatorTemplate.java | 2 +- .../locator/config/TopLocatorTemplate.java | 2 +- .../pattern/AirMatchPatternTemplate.java | 2 +- .../pattern/BlockSetMatchPatternTemplate.java | 2 +- .../SingleBlockMatchPatternTemplate.java | 2 +- .../pattern/SolidMatchPatternTemplate.java | 2 +- .../locators/AdjacentPatternLocator.java | 2 +- .../locators/GaussianRandomLocator.java | 2 +- .../locator/locators/PatternLocator.java | 2 +- .../locator/locators/RandomLocator.java | 2 +- .../locator/locators/Sampler3DLocator.java | 8 +- .../locator/locators/SamplerLocator.java | 8 +- .../locator/locators/SurfaceLocator.java | 2 +- .../feature/locator/locators/TopLocator.java | 2 +- .../locator/patterns/MatchPattern.java | 2 +- .../dfsek/terra/addons/noise/NoiseAddon.java | 58 +- .../addons/noise/NoiseConfigPackTemplate.java | 6 +- .../config/CubicSplinePointTemplate.java | 4 +- ...r.java => DimensionApplicableSampler.java} | 10 +- .../sampler}/CacheSampler.java | 18 +- .../templates/BinaryArithmeticTemplate.java | 12 +- .../templates/CacheSamplerTemplate.java | 10 +- .../DerivativeNoiseSamplerTemplate.java | 26 - .../templates/DerivativeSamplerTemplate.java | 26 + .../config/templates/DomainWarpTemplate.java | 10 +- .../templates/ImageSamplerTemplate.java | 47 -- .../config/templates/KernelTemplate.java | 8 +- .../LinearHeightmapSamplerTemplate.java | 8 +- .../config/templates/SamplerTemplate.java | 4 +- .../templates/TranslateSamplerTemplate.java | 8 +- .../noise/CellularNoiseTemplate.java | 14 +- .../noise/ConstantNoiseTemplate.java | 6 +- .../noise/DerivativeNoiseTemplate.java | 8 - .../noise/DistanceSamplerTemplate.java | 7 +- .../noise/ExpressionFunctionTemplate.java | 18 +- .../templates/noise/GaborNoiseTemplate.java | 27 +- .../config/templates/noise/NoiseTemplate.java | 2 +- .../noise/PseudoErosionTemplate.java | 8 +- .../templates/noise/SimpleNoiseTemplate.java | 6 +- .../noise/fractal/BrownianMotionTemplate.java | 7 +- .../noise/fractal/FractalTemplate.java | 6 +- .../noise/fractal/PingPongTemplate.java | 6 +- .../noise/fractal/RidgedFractalTemplate.java | 7 +- .../normalizer/ClampNormalizerTemplate.java | 6 +- .../CubicSplineNormalizerTemplate.java | 17 +- .../ExpressionNormalizerTemplate.java | 14 +- .../LinearMapNormalizerTemplate.java | 6 +- .../normalizer/LinearNormalizerTemplate.java | 6 +- .../normalizer/NormalNormalizerTemplate.java | 6 +- .../normalizer/NormalizerTemplate.java | 6 +- .../PosterizationNormalizerTemplate.java | 6 +- .../ProbabilityNormalizerTemplate.java | 6 +- .../normalizer/ScaleNormalizerTemplate.java | 6 +- .../terra/addons/noise/math/CubicSpline.java | 89 --- .../noise/normalizer/ClampNormalizer.java | 27 - .../normalizer/CubicSplineNoiseSampler.java | 20 - .../normalizer/ExpressionNormalizer.java | 47 -- .../noise/normalizer/LinearMapNormalizer.java | 28 - .../noise/normalizer/LinearNormalizer.java | 30 - .../noise/normalizer/NormalNormalizer.java | 52 -- .../addons/noise/normalizer/Normalizer.java | 31 - .../normalizer/PosterizationNormalizer.java | 25 - .../normalizer/ProbabilityNormalizer.java | 15 - .../noise/normalizer/ScaleNormalizer.java | 18 - .../addons/noise/paralithic/FunctionUtil.java | 16 +- .../{defined => }/UserDefinedFunction.java | 2 +- .../paralithic/noise/NoiseFunction2.java | 43 -- .../paralithic/noise/NoiseFunction3.java | 43 -- .../noise/SaltedNoiseFunction2.java | 37 - .../noise/SaltedNoiseFunction3.java | 37 - .../noise/paralithic/noise/SeedContext.java | 23 - .../noise/samplers/DomainWarpedSampler.java | 40 - .../addons/noise/samplers/ImageSampler.java | 73 -- .../addons/noise/samplers/KernelSampler.java | 63 -- .../samplers/LinearHeightmapSampler.java | 27 - .../noise/samplers/TranslateSampler.java | 27 - .../samplers/arithmetic/AdditionSampler.java | 25 - .../arithmetic/BinaryArithmeticSampler.java | 44 -- .../samplers/arithmetic/DivisionSampler.java | 26 - .../noise/samplers/arithmetic/MaxSampler.java | 22 - .../noise/samplers/arithmetic/MinSampler.java | 22 - .../arithmetic/MultiplicationSampler.java | 26 - .../arithmetic/SubtractionSampler.java | 25 - .../noise/samplers/noise/CellularSampler.java | 425 ----------- .../noise/samplers/noise/ConstantSampler.java | 29 - .../noise/DerivativeNoiseFunction.java | 25 - .../noise/samplers/noise/DistanceSampler.java | 66 -- .../samplers/noise/ExpressionFunction.java | 53 -- .../samplers/noise/GaborNoiseSampler.java | 114 --- .../noise/samplers/noise/NoiseFunction.java | 65 -- .../samplers/noise/PseudoErosionSampler.java | 173 ----- .../noise/fractal/BrownianMotionSampler.java | 112 --- .../noise/fractal/FractalNoiseFunction.java | 70 -- .../noise/fractal/PingPongSampler.java | 67 -- .../noise/fractal/RidgedFractalSampler.java | 56 -- .../noise/random/GaussianNoiseSampler.java | 46 -- .../random/PositiveWhiteNoiseSampler.java | 33 - .../noise/random/WhiteNoiseSampler.java | 61 -- .../noise/simplex/OpenSimplex2SSampler.java | 699 ------------------ .../noise/simplex/OpenSimplex2Sampler.java | 360 --------- .../samplers/noise/simplex/PerlinSampler.java | 77 -- .../noise/simplex/SimplexSampler.java | 249 ------- .../noise/simplex/SimplexStyleSampler.java | 131 ---- .../noise/value/ValueCubicSampler.java | 112 --- .../samplers/noise/value/ValueSampler.java | 62 -- .../samplers/noise/value/ValueStyleNoise.java | 30 - .../terra/addons/ore/ores/VanillaOre.java | 24 +- .../addons/ore/ores/VanillaScatteredOre.java | 5 +- .../terra/addons/palette/PaletteTemplate.java | 6 +- .../addons/palette/palette/PaletteImpl.java | 10 +- .../palette/palette/PaletteLayerHolder.java | 8 +- .../palette/palette/PaletteLayerLoader.java | 4 +- .../addons/structure/StructureTemplate.java | 2 +- .../addons/structure/TerraStructure.java | 2 +- .../feature/FeatureGenerationStage.java | 15 +- .../feature/config/FeatureStageTemplate.java | 8 +- .../terra/addons/image/ImageLibraryAddon.java | 14 +- .../mutate/RotateColorSampler.java | 7 +- .../ChannelSamplerTemplate.java} | 12 +- .../DistanceTransformSamplerTemplate.java} | 8 +- .../image/operator/DistanceTransform.java | 10 +- .../ChannelSampler.java} | 14 +- .../shortcut/block/SingletonStructure.java | 5 +- .../structure/mutator/MutatedStructure.java | 5 +- .../addons/sponge/SpongeSchematicAddon.java | 2 +- .../terra/addons/sponge/SpongeStructure.java | 9 +- .../statements/EqualsStatement.java | 2 +- .../statements/NotEqualsStatement.java | 2 +- .../terrascript/script/StructureScript.java | 15 +- .../script/TerraImplementationArguments.java | 7 +- .../script/functions/BiomeFunction.java | 15 +- .../script/functions/BlockFunction.java | 11 +- .../script/functions/CheckBlockFunction.java | 13 +- .../script/functions/EntityFunction.java | 11 +- .../script/functions/GetMarkFunction.java | 11 +- .../script/functions/LootFunction.java | 12 +- .../script/functions/PullFunction.java | 13 +- .../script/functions/SetMarkFunction.java | 11 +- .../script/functions/StateFunction.java | 11 +- .../script/functions/StructureFunction.java | 9 +- .../terrascript/check/CheckFunction.java | 17 +- .../sampler/ConstantSamplerFunction.java | 10 +- .../terrascript/sampler/SamplerFunction.java | 12 +- .../sampler/SamplerFunctionBuilder.java | 8 +- common/api/build.gradle.kts | 7 +- .../terra/api/block/entity/BlockEntity.java | 3 +- .../state/properties/enums/Direction.java | 3 +- .../com/dfsek/terra/api/entity/Entity.java | 2 +- .../world/generation/LootPopulateEvent.java | 2 +- .../api/inventory/BlockInventoryHolder.java | 3 +- .../api/noise/DerivativeNoiseSampler.java | 42 -- .../dfsek/terra/api/noise/NoiseSampler.java | 60 -- .../dfsek/terra/api/structure/Structure.java | 4 +- .../terra/api/structure/StructureSpawn.java | 2 +- .../configured/ConfiguredStructure.java | 2 +- .../api/structure/feature/BinaryColumn.java | 2 +- .../dfsek/terra/api/util/GeometryUtil.java | 34 - .../com/dfsek/terra/api/util/MathUtil.java | 267 ------- .../dfsek/terra/api/util/PopulationUtil.java | 39 - .../com/dfsek/terra/api/util/Rotation.java | 54 -- .../dfsek/terra/api/util/RotationUtil.java | 34 - .../collection/ProbabilityCollection.java | 28 +- .../api/util/{ => range}/ConstantRange.java | 2 +- .../terra/api/util/{ => range}/Range.java | 2 +- .../dfsek/terra/api/util/vector/Vector2.java | 256 ------- .../terra/api/util/vector/Vector2Int.java | 96 --- .../dfsek/terra/api/util/vector/Vector3.java | 441 ----------- .../terra/api/util/vector/Vector3Int.java | 99 --- .../dfsek/terra/api/world/BufferedWorld.java | 2 +- .../dfsek/terra/api/world/ReadableWorld.java | 8 +- .../dfsek/terra/api/world/ServerWorld.java | 4 +- .../dfsek/terra/api/world/WritableWorld.java | 8 +- .../world/biome/generation/BiomeProvider.java | 6 +- .../chunk/generation/ChunkGenerator.java | 6 +- .../dfsek/terra/config/GenericLoaders.java | 2 +- .../terra/config/loaders/RangeLoader.java | 4 +- .../terra/allay/delegate/AllayFakeEntity.java | 2 +- .../terra/allay/delegate/AllayProtoWorld.java | 2 +- .../allay/delegate/AllayServerWorld.java | 2 +- .../com/dfsek/terra/bukkit/BukkitEntity.java | 2 +- .../com/dfsek/terra/bukkit/BukkitPlayer.java | 2 +- .../terra/bukkit/world/BukkitAdapter.java | 2 +- .../world/block/state/BukkitBlockEntity.java | 2 +- .../java/com/dfsek/terra/cli/TerraCLI.java | 2 +- .../com/dfsek/terra/cli/world/CLIWorld.java | 4 +- .../mixin/lifecycle/NoiseConfigMixin.java | 8 +- .../dfsek/terra/minestom/MinestomAdapter.java | 2 +- .../entity/DeferredMinestomEntity.java | 2 +- .../terra/minestom/entity/MinestomEntity.java | 2 +- .../mod/config/MonsterSettingsConfig.java | 2 +- .../terra/mod/config/MusicSoundTemplate.java | 2 +- .../terra/mod/config/SpawnEntryTemplate.java | 2 +- .../mod/config/VanillaWorldProperties.java | 4 +- .../java/com/dfsek/terra/mod/data/Codecs.java | 2 +- .../mod/generation/GenerationSettings.java | 2 +- .../mod/generation/TerraBiomeSource.java | 5 +- .../mod/implmentation/TerraIntProvider.java | 2 +- .../terra/entity/EntityMixin.java | 2 +- .../terra/mod/util/MinecraftAdapter.java | 2 +- .../dfsek/terra/mod/util/MinecraftUtil.java | 12 +- .../com/dfsek/terra/mod/util/PresetUtil.java | 2 +- 239 files changed, 623 insertions(+), 6195 deletions(-) rename common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/{DimensionApplicableNoiseSampler.java => DimensionApplicableSampler.java} (70%) rename common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/{samplers => config/sampler}/CacheSampler.java (84%) delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DerivativeNoiseSamplerTemplate.java create mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DerivativeSamplerTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DerivativeNoiseTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/math/CubicSpline.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/CubicSplineNoiseSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ExpressionNormalizer.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/PosterizationNormalizer.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ProbabilityNormalizer.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ScaleNormalizer.java rename common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/{defined => }/UserDefinedFunction.java (97%) delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SaltedNoiseFunction2.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SaltedNoiseFunction3.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/LinearHeightmapSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/TranslateSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/AdditionSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/BinaryArithmeticSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/DivisionSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MaxSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MinSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MultiplicationSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/SubtractionSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/DerivativeNoiseFunction.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/DistanceSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/PseudoErosionSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/PositiveWhiteNoiseSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java rename common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/{noisesampler/ChannelNoiseSamplerTemplate.java => sampler/ChannelSamplerTemplate.java} (70%) rename common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/{noisesampler/DistanceTransformNoiseSamplerTemplate.java => sampler/DistanceTransformSamplerTemplate.java} (91%) rename common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/{noisesampler/ChannelNoiseSampler.java => sampler/ChannelSampler.java} (67%) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/noise/DerivativeNoiseSampler.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/GeometryUtil.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/Rotation.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/RotationUtil.java rename common/api/src/main/java/com/dfsek/terra/api/util/{ => range}/ConstantRange.java (98%) rename common/api/src/main/java/com/dfsek/terra/api/util/{ => range}/Range.java (97%) delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2Int.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java delete mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3Int.java diff --git a/buildSrc/src/main/kotlin/DependencyConfig.kt b/buildSrc/src/main/kotlin/DependencyConfig.kt index 193a9a49a..dc1c821b1 100644 --- a/buildSrc/src/main/kotlin/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/DependencyConfig.kt @@ -60,6 +60,12 @@ fun Project.configureDependencies() { maven("https://storehouse.okaeri.eu/repository/maven-public/") { name = "Okaeri" } + maven("https://maven.solo-studios.ca/releases") { + name = "Solo Studios" + } + maven("https://maven.solo-studios.ca/snapshots") { + name = "Solo Studios" + } } dependencies { diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 322516af6..724c2beda 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -5,8 +5,9 @@ object Versions { object Libraries { const val tectonic = "4.2.1" - const val paralithic = "0.8.1" + const val paralithic = "1.0.3-SNAPSHOT" const val strata = "1.3.2" + const val seismic = "0.3.2-SNAPSHOT" const val cloud = "2.0.0" diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/extrusions/SamplerExtrusionTemplate.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/extrusions/SamplerExtrusionTemplate.java index 4389ab28f..cb1a8ee14 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/extrusions/SamplerExtrusionTemplate.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/extrusions/SamplerExtrusionTemplate.java @@ -5,13 +5,13 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; 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.seismic.type.sampler.Sampler; +import com.dfsek.terra.api.util.range.Range; public abstract class SamplerExtrusionTemplate implements ObjectTemplate { @Value("sampler") - protected @Meta NoiseSampler sampler; + protected @Meta Sampler sampler; @Value("range") protected @Meta Range range; diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/ReplaceExtrusion.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/ReplaceExtrusion.java index 26b1ec4bb..b67e033c8 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/ReplaceExtrusion.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/ReplaceExtrusion.java @@ -7,8 +7,8 @@ import java.util.stream.Collectors; import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome; import com.dfsek.terra.addons.biome.query.api.BiomeQueries; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.Range; +import com.dfsek.seismic.type.sampler.Sampler; +import com.dfsek.terra.api.util.range.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.Biome; @@ -17,7 +17,7 @@ import com.dfsek.terra.api.world.biome.Biome; * Sets biomes at locations based on a sampler. */ public class ReplaceExtrusion implements Extrusion { - private final NoiseSampler sampler; + private final Sampler sampler; private final Range range; @@ -25,7 +25,7 @@ public class ReplaceExtrusion implements Extrusion { private final Predicate hasTag; - public ReplaceExtrusion(NoiseSampler sampler, Range range, ProbabilityCollection biomes, String tag) { + public ReplaceExtrusion(Sampler sampler, Range range, ProbabilityCollection biomes, String tag) { this.sampler = sampler; this.range = range; this.biomes = biomes; diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SetExtrusion.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SetExtrusion.java index b3f4edd62..ee0a63191 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SetExtrusion.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SetExtrusion.java @@ -6,8 +6,8 @@ import java.util.stream.Collectors; import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.Range; +import com.dfsek.seismic.type.sampler.Sampler; +import com.dfsek.terra.api.util.range.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.Biome; @@ -16,13 +16,13 @@ import com.dfsek.terra.api.world.biome.Biome; * Sets biomes at locations based on a sampler. */ public class SetExtrusion implements Extrusion { - private final NoiseSampler sampler; + private final Sampler sampler; private final Range range; private final ProbabilityCollection biomes; - public SetExtrusion(NoiseSampler sampler, Range range, ProbabilityCollection biomes) { + public SetExtrusion(Sampler sampler, Range range, ProbabilityCollection biomes) { this.sampler = sampler; this.range = range; this.biomes = biomes; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java index 3d9032326..c045c905a 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java @@ -22,7 +22,7 @@ import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; import com.dfsek.terra.addons.biome.pipeline.api.Pipeline; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.registry.key.StringIdentifiable; import com.dfsek.terra.api.util.Column; import com.dfsek.terra.api.world.biome.Biome; @@ -34,11 +34,11 @@ public class PipelineBiomeProvider implements BiomeProvider { private final LoadingCache biomeChunkCache; private final int chunkSize; private final int resolution; - private final NoiseSampler mutator; + private final Sampler mutator; private final double noiseAmp; private final Set biomes; - public PipelineBiomeProvider(Pipeline pipeline, int resolution, NoiseSampler mutator, double noiseAmp) { + public PipelineBiomeProvider(Pipeline pipeline, int resolution, Sampler mutator, double noiseAmp) { this.resolution = resolution; this.mutator = mutator; this.noiseAmp = noiseAmp; @@ -83,8 +83,8 @@ public class PipelineBiomeProvider implements BiomeProvider { public Biome getBiome(int x, int z, long seed) { - x += mutator.noise(seed + 1, x, z) * noiseAmp; - z += mutator.noise(seed + 2, x, z) * noiseAmp; + x += mutator.getSample(seed + 1, x, z) * noiseAmp; + z += mutator.getSample(seed + 2, x, z) * noiseAmp; x /= resolution; z /= resolution; 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 25628cbd8..575487d8c 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 @@ -19,7 +19,7 @@ import com.dfsek.terra.addons.biome.pipeline.api.Source; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.pipeline.PipelineImpl; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -36,7 +36,7 @@ public class BiomePipelineTemplate implements ObjectTemplate { @Value("blend.sampler") @Default @Description("A sampler to use for blending the edges of biomes via domain warping.") - protected @Meta NoiseSampler blendSampler = NoiseSampler.zero(); + protected @Meta Sampler blendSampler = Sampler.zero(); @Value("blend.amplitude") @Default @Description("The amplitude at which to perform blending.") diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java index 92d266baf..348e24d86 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java @@ -14,14 +14,14 @@ import com.dfsek.terra.addons.biome.pipeline.api.Source; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.source.SamplerSource; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; public class SamplerSourceTemplate extends SourceTemplate { @Value("sampler") @Description("The sampler used to distribute biomes.") - private @Meta NoiseSampler noise; + private @Meta Sampler noise; @Value("biomes") @Description("The biomes to be distributed.") 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 769fdd40b..973f9bb5f 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 @@ -13,11 +13,11 @@ import com.dfsek.tectonic.api.config.template.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; +import com.dfsek.seismic.type.sampler.Sampler; public abstract class StageTemplate implements ObjectTemplate { @Value("sampler") @Description("Sampler to use for stage distribution.") - protected @Meta NoiseSampler noise; + protected @Meta Sampler noise; } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java index 7b08a4af5..ca2982fd7 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java @@ -9,15 +9,15 @@ package com.dfsek.terra.addons.biome.pipeline.source; import com.dfsek.terra.addons.biome.pipeline.api.Source; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; public class SamplerSource implements Source { private final ProbabilityCollection biomes; - private final NoiseSampler sampler; + private final Sampler sampler; - public SamplerSource(ProbabilityCollection biomes, NoiseSampler sampler) { + public SamplerSource(ProbabilityCollection biomes, Sampler sampler) { this.biomes = biomes; this.sampler = sampler; } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java index af2600d33..a60f09f87 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java @@ -3,14 +3,14 @@ package com.dfsek.terra.addons.biome.pipeline.stage.expander; import com.dfsek.terra.addons.biome.pipeline.api.Expander; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; public class FractalExpander implements Expander { - private final NoiseSampler sampler; + private final Sampler sampler; - public FractalExpander(NoiseSampler sampler) { + public FractalExpander(Sampler sampler) { this.sampler = sampler; } @@ -20,7 +20,7 @@ public class FractalExpander implements Expander { int xMod2 = viewPoint.gridX() % 2; int zMod2 = viewPoint.gridZ() % 2; - double roll = sampler.noise(viewPoint.worldSeed(), viewPoint.worldX(), viewPoint.worldZ()); + double roll = sampler.getSample(viewPoint.worldSeed(), viewPoint.worldX(), viewPoint.worldZ()); if(xMod2 == 1 && zMod2 == 0) { // Pick one of 2 neighbors on X axis randomly return roll > 0 ? viewPoint.getRelativeBiome(-1, 0) : viewPoint.getRelativeBiome(1, 0); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java index 4e93b340a..9beaa7ec7 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java @@ -14,17 +14,18 @@ import java.util.Map; import java.util.Set; import java.util.function.Predicate; +import com.dfsek.seismic.type.vector.Vector2Int; + import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.vector.Vector2Int; public class BorderListStage implements Stage { private final String border; - private final NoiseSampler noiseSampler; + private final Sampler Sampler; private final ProbabilityCollection replaceDefault; private final String defaultReplace; private final Map> replace; @@ -32,9 +33,9 @@ public class BorderListStage implements Stage { private final Vector2Int[] borderPoints; public BorderListStage(Map> replace, String border, String defaultReplace, - NoiseSampler noiseSampler, ProbabilityCollection replaceDefault) { + Sampler Sampler, ProbabilityCollection replaceDefault) { this.border = border; - this.noiseSampler = noiseSampler; + this.Sampler = Sampler; this.replaceDefault = replaceDefault; this.defaultReplace = defaultReplace; this.replace = replace; @@ -67,11 +68,11 @@ public class BorderListStage implements Stage { PipelineBiome current = viewPoint.getRelativeBiome(point.getX(), point.getZ()); if(current != null && current.getTags().contains(border)) { if(replace.containsKey(center)) { - PipelineBiome replacement = replace.get(center).get(noiseSampler, viewPoint.worldX(), viewPoint.worldZ(), + PipelineBiome replacement = replace.get(center).get(Sampler, viewPoint.worldX(), viewPoint.worldZ(), viewPoint.worldSeed()); return replacement.isSelf() ? center : replacement; } - PipelineBiome replacement = replaceDefault.get(noiseSampler, viewPoint.worldX(), viewPoint.worldZ(), + PipelineBiome replacement = replaceDefault.get(Sampler, viewPoint.worldX(), viewPoint.worldZ(), viewPoint.worldSeed()); return replacement.isSelf() ? center : replacement; } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java index b13a8e9d6..f41918f3e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java @@ -16,21 +16,21 @@ import java.util.function.Predicate; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.vector.Vector2Int; +import com.dfsek.seismic.type.vector.Vector2Int; public class BorderStage implements Stage { private final String border; - private final NoiseSampler noiseSampler; + private final Sampler Sampler; private final ProbabilityCollection replace; private final String replaceTag; private final Vector2Int[] borderPoints; - public BorderStage(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollection replace) { + public BorderStage(String border, String replaceTag, Sampler Sampler, ProbabilityCollection replace) { this.border = border; - this.noiseSampler = noiseSampler; + this.Sampler = Sampler; this.replace = replace; this.replaceTag = replaceTag; List points = new ArrayList<>(); @@ -50,7 +50,7 @@ public class BorderStage implements Stage { for(Vector2Int point : borderPoints) { PipelineBiome current = viewPoint.getRelativeBiome(point.getX(), point.getZ()); if(current != null && current.getTags().contains(border)) { - PipelineBiome replacement = replace.get(noiseSampler, viewPoint.worldX(), viewPoint.worldZ(), viewPoint.worldSeed()); + PipelineBiome replacement = replace.get(Sampler, viewPoint.worldX(), viewPoint.worldZ(), viewPoint.worldSeed()); return replacement.isSelf() ? center : replacement; } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java index d59f59264..1c634c950 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java @@ -15,18 +15,18 @@ import java.util.stream.Stream; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; public class ReplaceListStage implements Stage { private final Map> replace; - private final NoiseSampler sampler; + private final Sampler sampler; private final ProbabilityCollection replaceDefault; private final String defaultTag; public ReplaceListStage(Map> replace, String defaultTag, - ProbabilityCollection replaceDefault, NoiseSampler sampler) { + ProbabilityCollection replaceDefault, Sampler sampler) { this.replace = replace; this.sampler = sampler; this.defaultTag = defaultTag; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java index 5a1598c38..1f4e4222a 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java @@ -14,16 +14,16 @@ import java.util.stream.Stream; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; public class ReplaceStage implements Stage { private final String replaceableTag; private final ProbabilityCollection replace; - private final NoiseSampler sampler; + private final Sampler sampler; - public ReplaceStage(String replaceable, ProbabilityCollection replace, NoiseSampler sampler) { + public ReplaceStage(String replaceable, ProbabilityCollection replace, Sampler sampler) { this.replaceableTag = replaceable; this.replace = replace; this.sampler = sampler; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java index f80d8a78d..6c111ecdb 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java @@ -12,14 +12,14 @@ import java.util.Objects; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; public class SmoothStage implements Stage { - private final NoiseSampler sampler; + private final Sampler sampler; - public SmoothStage(NoiseSampler sampler) { + public SmoothStage(Sampler sampler) { this.sampler = sampler; } @@ -30,7 +30,7 @@ public class SmoothStage implements Stage { PipelineBiome left = viewPoint.getRelativeBiome(0, 1); PipelineBiome right = viewPoint.getRelativeBiome(0, -1); - double roll = sampler.noise(viewPoint.worldSeed(), viewPoint.worldX(), viewPoint.worldZ()); + double roll = sampler.getSample(viewPoint.worldSeed(), viewPoint.worldX(), viewPoint.worldZ()); boolean vert = Objects.equals(top, bottom); boolean horiz = Objects.equals(left, right); diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseConfigTemplate.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseConfigTemplate.java index a0231bce8..ce55469b0 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseConfigTemplate.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseConfigTemplate.java @@ -5,20 +5,20 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; public class BiomeNoiseConfigTemplate implements ObjectTemplate { @Value("terrain.sampler") - private @Meta NoiseSampler baseSampler; + private @Meta Sampler baseSampler; @Value("terrain.sampler-2d") @Default - private @Meta NoiseSampler elevationSampler = NoiseSampler.zero(); + private @Meta Sampler elevationSampler = Sampler.zero(); @Value("carving.sampler") @Default - private @Meta NoiseSampler carvingSampler = NoiseSampler.zero(); + private @Meta Sampler carvingSampler = Sampler.zero(); @Value("terrain.blend.distance") @Default diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseProperties.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseProperties.java index 7f4b20a88..e58978be0 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseProperties.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseProperties.java @@ -1,12 +1,12 @@ package com.dfsek.terra.addons.chunkgenerator.config.noise; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.properties.Properties; -public record BiomeNoiseProperties(NoiseSampler base, - NoiseSampler elevation, - NoiseSampler carving, +public record BiomeNoiseProperties(Sampler base, + Sampler elevation, + Sampler carving, int blendDistance, int blendStep, double blendWeight, diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/ThreadLocalNoiseHolder.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/ThreadLocalNoiseHolder.java index 22cb181ca..781f82e59 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/ThreadLocalNoiseHolder.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/ThreadLocalNoiseHolder.java @@ -1,19 +1,19 @@ package com.dfsek.terra.addons.chunkgenerator.config.noise; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; public class ThreadLocalNoiseHolder { private final ThreadLocal holder = ThreadLocal.withInitial(Holder::new); - public double getNoise(NoiseSampler sampler, int x, int y, int z, long seed) { + public double getNoise(Sampler sampler, int x, int y, int z, long seed) { Holder holder = this.holder.get(); if(holder.init && holder.y == y && holder.z == z && holder.x == x && holder.seed == seed) { return holder.noise; } - double noise = sampler.noise(seed, x, y, z); + double noise = sampler.getSample(seed, x, y, z); holder.noise = noise; holder.x = x; holder.y = y; diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SlantCalculationMethod.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SlantCalculationMethod.java index 1c03a038a..d7cf84133 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SlantCalculationMethod.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SlantCalculationMethod.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; public enum SlantCalculationMethod { @@ -22,7 +22,7 @@ public enum SlantCalculationMethod { Vector3.Mutable normalApproximation = Vector3.Mutable.of(0, 0, 0); for(Vector3 point : DOT_PRODUCT_SAMPLE_POINTS) { var scalar = -sampler.sample(x + point.getX(), y + point.getY(), z + point.getZ()); - normalApproximation.add(point.mutable().multiply(scalar)); + normalApproximation.add(point.mutable().mulScalar(scalar)); } return DOT_PRODUCT_DIRECTION.dot(normalApproximation.normalize()); } 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 e7f698742..8d9a6cc84 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 @@ -55,12 +55,12 @@ public class ElevationInterpolator { } if(same) { - values[x + 1][z + 1] = center.elevation().noise(seed, xOrigin + x, zOrigin + z); // no weighting needed! + values[x + 1][z + 1] = center.elevation().getSample(seed, xOrigin + x, zOrigin + z); // no weighting needed! } else { for(int xi = -smooth; xi <= smooth; xi++) { for(int zi = -smooth; zi <= smooth; zi++) { BiomeNoiseProperties gen = gens[x + 1 + smooth + xi][z + 1 + smooth + zi]; - noise += gen.elevation().noise(seed, xOrigin + x, zOrigin + z) * gen.elevationWeight(); + noise += gen.elevation().getSample(seed, xOrigin + x, zOrigin + z) * gen.elevationWeight(); div += gen.elevationWeight(); } } 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 0e90a1cc3..13f421389 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 @@ -7,7 +7,8 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; -import com.dfsek.terra.api.util.MathUtil; + +import com.dfsek.seismic.math.numericanalysis.interpolation.InterpolationFunctions; /** @@ -31,6 +32,7 @@ public class Interpolator { this.v3 = v3; } + //TODO this system is not very good, replace it wholesale /** * 2D Bilinear interpolation between 4 points on a unit square. * @@ -40,8 +42,8 @@ public class Interpolator { * @return double - The interpolated value. */ public double bilerp(double s, double t) { - double v01 = MathUtil.lerp(s, v0, v1); - double v23 = MathUtil.lerp(s, v2, v3); - return MathUtil.lerp(t, v01, v23); + double v01 = InterpolationFunctions.lerp(v0, v1, s); + double v23 = InterpolationFunctions.lerp(v2, v3, s); + return InterpolationFunctions.lerp(v01, v23, t); } } \ No newline at end of file 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 2b3c82b36..5c07e767e 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 @@ -7,7 +7,8 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; -import com.dfsek.terra.api.util.MathUtil; + +import com.dfsek.seismic.math.numericanalysis.interpolation.InterpolationFunctions; /** @@ -36,7 +37,8 @@ public class Interpolator3 { this.bottom = new Interpolator(_100, _110, _101, _111); } + //TODO this system is not very good, replace it wholesale public double trilerp(double x, double y, double z) { - return MathUtil.lerp(x, top.bilerp(y, z), bottom.bilerp(y, z)); + return InterpolationFunctions.lerp(top.bilerp(y, z), bottom.bilerp(y, z), x); } } \ No newline at end of file diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java index b215ba809..dcab4df14 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java @@ -1,8 +1,9 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; +import com.dfsek.seismic.math.numericanalysis.interpolation.InterpolationFunctions; + import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties; import com.dfsek.terra.api.properties.PropertyKey; -import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -56,7 +57,7 @@ public class LazilyEvaluatedInterpolator { .getContext() .get(noisePropertiesKey) .carving() - .noise(seed, xi, y, zi); + .getSample(seed, xi, y, zi); samples[index] = sample; } return sample; @@ -81,10 +82,10 @@ public class LazilyEvaluatedInterpolator { double xFrac = (double) (x % horizontalRes) / horizontalRes; double zFrac = (double) (z % horizontalRes) / horizontalRes; - double lerp_bottom_0 = MathUtil.lerp(zFrac, sample_0_0_0, sample_0_0_1); - double lerp_bottom_1 = MathUtil.lerp(zFrac, sample_1_0_0, sample_1_0_1); + double lerp_bottom_0 = InterpolationFunctions.lerp(sample_0_0_0, sample_0_0_1, zFrac); + double lerp_bottom_1 = InterpolationFunctions.lerp(sample_1_0_0, sample_1_0_1, zFrac); - double lerp_bottom = MathUtil.lerp(xFrac, lerp_bottom_0, lerp_bottom_1); + double lerp_bottom = InterpolationFunctions.lerp(lerp_bottom_0, lerp_bottom_1, xFrac); if(yRange) { // we can do bilerp return lerp_bottom; @@ -100,11 +101,11 @@ public class LazilyEvaluatedInterpolator { double sample_1_1_0 = sample(xIndex + 1, yIndex + 1, zIndex, x + horizontalRes, y + verticalRes, z); double sample_1_1_1 = sample(xIndex + 1, yIndex + 1, zIndex + 1, x + horizontalRes, y + verticalRes, z + horizontalRes); - double lerp_top_0 = MathUtil.lerp(zFrac, sample_0_1_0, sample_0_1_1); - double lerp_top_1 = MathUtil.lerp(zFrac, sample_1_1_0, sample_1_1_1); + double lerp_top_0 = InterpolationFunctions.lerp(sample_0_1_0, sample_0_1_1, zFrac); + double lerp_top_1 = InterpolationFunctions.lerp(sample_1_1_0, sample_1_1_1, zFrac); - double lerp_top = MathUtil.lerp(xFrac, lerp_top_0, lerp_top_1); + double lerp_top = InterpolationFunctions.lerp(lerp_top_0, lerp_top_1, xFrac); - return MathUtil.lerp(yFrac, lerp_bottom, lerp_top); + return InterpolationFunctions.lerp(lerp_bottom, lerp_top, yFrac); } } diff --git a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java index 28447f0a1..0ec8f3891 100644 --- a/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java +++ b/common/addons/command-structures/src/main/java/com/dfsek/terra/addons/commands/structure/StructureCommandAddon.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.commands.structure; +import com.dfsek.seismic.type.Rotation; import org.incendo.cloud.CommandManager; import org.incendo.cloud.component.DefaultValue; import org.incendo.cloud.context.CommandContext; @@ -22,7 +23,6 @@ import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.annotations.Inject; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.reflection.TypeKey; diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/SamplerDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/SamplerDistributorTemplate.java index 8925b92df..be6fa7c6f 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/SamplerDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/SamplerDistributorTemplate.java @@ -13,7 +13,7 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.feature.distributor.distributors.SamplerDistributor; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.feature.Distributor; @@ -23,7 +23,7 @@ public class SamplerDistributorTemplate implements ObjectTemplate { @Default private @Meta double threshold = 0; @Value("sampler") - private @Meta NoiseSampler noise; + private @Meta Sampler noise; @Override public Distributor get() { diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java index a77b2c0bc..d7b0b6fb0 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java @@ -3,8 +3,11 @@ package com.dfsek.terra.addons.feature.distributor.distributors; import java.util.random.RandomGenerator; import java.util.random.RandomGeneratorFactory; +import com.dfsek.seismic.algorithms.hashing.HashingFunctions; + +import com.dfsek.seismic.math.integer.IntegerFunctions; + import com.dfsek.terra.api.structure.feature.Distributor; -import com.dfsek.terra.api.util.MathUtil; public class PaddedGridDistributor implements Distributor { @@ -26,7 +29,7 @@ public class PaddedGridDistributor implements Distributor { int cellZ = Math.floorDiv(z, cellWidth); RandomGenerator random = RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create( - (MathUtil.murmur64(MathUtil.squash(cellX, cellZ)) ^ seed) + salt); + (HashingFunctions.murmur64(IntegerFunctions.squash(cellX, cellZ)) ^ seed) + salt); int pointX = random.nextInt(width) + cellX * cellWidth; int pointZ = random.nextInt(width) + cellZ * cellWidth; diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/SamplerDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/SamplerDistributor.java index 8b4d8e9d7..51bea61b3 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/SamplerDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/SamplerDistributor.java @@ -7,22 +7,22 @@ package com.dfsek.terra.addons.feature.distributor.distributors; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.feature.Distributor; public class SamplerDistributor implements Distributor { - private final NoiseSampler sampler; + private final Sampler sampler; private final double threshold; - public SamplerDistributor(NoiseSampler sampler, double threshold) { + public SamplerDistributor(Sampler sampler, double threshold) { this.sampler = sampler; this.threshold = threshold; } @Override public boolean matches(int x, int z, long seed) { - return sampler.noise(seed, x, z) < threshold; + return sampler.getSample(seed, x, z) < threshold; } } 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 67d7323db..1cc985996 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 @@ -7,7 +7,7 @@ package com.dfsek.terra.addons.feature; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.feature.Distributor; import com.dfsek.terra.api.structure.feature.Feature; @@ -19,13 +19,13 @@ import com.dfsek.terra.api.world.WritableWorld; public class ConfiguredFeature implements Feature { private final ProbabilityCollection structures; - private final NoiseSampler structureSelector; + private final Sampler structureSelector; private final Distributor distributor; private final Locator locator; private final String id; - public ConfiguredFeature(ProbabilityCollection structures, NoiseSampler structureSelector, Distributor distributor, + public ConfiguredFeature(ProbabilityCollection structures, Sampler structureSelector, Distributor distributor, Locator locator, String id) { this.structures = structures; this.structureSelector = structureSelector; 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 9798af4e1..791c0fc46 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 @@ -12,7 +12,7 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; 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.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.feature.Distributor; import com.dfsek.terra.api.structure.feature.Locator; @@ -31,7 +31,7 @@ public class FeatureTemplate implements AbstractableTemplate { private @Meta Locator locator; @Value("structures.distribution") - private @Meta NoiseSampler structureNoise; + private @Meta Sampler structureNoise; @Value("structures.structures") private @Meta ProbabilityCollection structures; @@ -49,7 +49,7 @@ public class FeatureTemplate implements AbstractableTemplate { return locator; } - public NoiseSampler getStructureNoise() { + public Sampler getStructureNoise() { return structureNoise; } 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 708a8a7f5..a5dbfa78a 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 @@ -16,7 +16,7 @@ import java.util.List; import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; 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.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.MaterialSet; @@ -41,13 +41,13 @@ public class FloraTemplate implements AbstractableTemplate { private @Meta List<@Meta BlockLayer> layers; @Value("layer-distribution") - private @Meta NoiseSampler noiseDistribution; + private @Meta Sampler noiseDistribution; public boolean doPhysics() { return doPhysics; } - public NoiseSampler getNoiseDistribution() { + public Sampler getNoiseDistribution() { return noiseDistribution; } 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 90771ecad..7e8e5ee3c 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 @@ -13,14 +13,15 @@ import java.util.List; import java.util.random.RandomGenerator; import java.util.random.RandomGeneratorFactory; +import com.dfsek.seismic.type.Rotation; + import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.properties.enums.Direction; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; @@ -31,13 +32,13 @@ public class TerraFlora implements Structure { private final MaterialSet testRotation; - private final NoiseSampler distribution; + private final Sampler distribution; private final String id; public TerraFlora(List layers, boolean physics, boolean ceiling, MaterialSet testRotation, - NoiseSampler distribution, String id) { + Sampler distribution, String id) { this.physics = physics; this.testRotation = testRotation; this.ceiling = ceiling; diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AdjacentPatternLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AdjacentPatternLocatorTemplate.java index a15e4be6e..ead732fb7 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AdjacentPatternLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AdjacentPatternLocatorTemplate.java @@ -15,7 +15,7 @@ import com.dfsek.terra.addons.feature.locator.locators.AdjacentPatternLocator; 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; +import com.dfsek.terra.api.util.range.Range; @SuppressWarnings({ "FieldCanBeLocal", "FieldMayBeFinal" }) diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/GaussianRandomLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/GaussianRandomLocatorTemplate.java index 55ebe84ed..fbfe620ff 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/GaussianRandomLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/GaussianRandomLocatorTemplate.java @@ -14,7 +14,7 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.locators.GaussianRandomLocator; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.range.Range; @SuppressWarnings("FieldMayBeFinal") 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 bcb5dfbae..030381c8e 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 @@ -14,7 +14,7 @@ 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; +import com.dfsek.terra.api.util.range.Range; public class PatternLocatorTemplate implements ObjectTemplate { 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 5f51482d4..5c4ef2475 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 @@ -14,7 +14,7 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.locators.RandomLocator; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.range.Range; @SuppressWarnings("FieldMayBeFinal") diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Sampler3DLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Sampler3DLocatorTemplate.java index c248627a4..0382985a9 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Sampler3DLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Sampler3DLocatorTemplate.java @@ -12,13 +12,13 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.locators.Sampler3DLocator; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.feature.Locator; public class Sampler3DLocatorTemplate implements ObjectTemplate { @Value("sampler") - private @Meta NoiseSampler sampler; + private @Meta Sampler sampler; @Override public Locator get() { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SamplerLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SamplerLocatorTemplate.java index df2fac430..f2915f234 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SamplerLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SamplerLocatorTemplate.java @@ -14,13 +14,13 @@ import java.util.List; import com.dfsek.terra.addons.feature.locator.locators.SamplerLocator; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.feature.Locator; public class SamplerLocatorTemplate implements ObjectTemplate { @Value("samplers") - private @Meta List<@Meta NoiseSampler> samplers; + private @Meta List<@Meta Sampler> samplers; @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 a77829587..a433abd21 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 @@ -13,7 +13,7 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; 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; +import com.dfsek.terra.api.util.range.Range; public class SurfaceLocatorTemplate implements ObjectTemplate { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/TopLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/TopLocatorTemplate.java index 67fd28464..437e3e04b 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/TopLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/TopLocatorTemplate.java @@ -13,7 +13,7 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.locators.TopLocator; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.range.Range; public class TopLocatorTemplate implements ObjectTemplate { 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 c977a8d81..673d28ce1 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 @@ -14,7 +14,7 @@ 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; +import com.dfsek.terra.api.util.range.Range; public class AirMatchPatternTemplate implements ObjectTemplate { 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 08a1a7c17..1bca74dc8 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 @@ -13,7 +13,7 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; 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.range.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 607abfd72..645002790 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 @@ -14,7 +14,7 @@ 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; +import com.dfsek.terra.api.util.range.Range; public class SingleBlockMatchPatternTemplate implements ObjectTemplate { 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 6fc7b535d..ba5cb76b1 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 @@ -12,7 +12,7 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; 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; +import com.dfsek.terra.api.util.range.Range; public class SolidMatchPatternTemplate implements ObjectTemplate { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/AdjacentPatternLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/AdjacentPatternLocator.java index 7be0d29aa..f8ff3bb72 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/AdjacentPatternLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/AdjacentPatternLocator.java @@ -10,7 +10,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.util.range.Range; import com.dfsek.terra.api.world.WritableWorld; import com.dfsek.terra.api.world.chunk.generation.util.Column; diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/GaussianRandomLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/GaussianRandomLocator.java index 73ca24fef..426adadd9 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/GaussianRandomLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/GaussianRandomLocator.java @@ -12,7 +12,7 @@ import java.util.random.RandomGeneratorFactory; 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.util.range.Range; import com.dfsek.terra.api.world.chunk.generation.util.Column; import com.dfsek.terra.api.world.chunk.generation.util.Column.BinaryColumnBuilder; 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 4a5c9720b..4098bc992 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 @@ -10,7 +10,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.util.range.Range; import com.dfsek.terra.api.world.chunk.generation.util.Column; 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 a6811989b..34d5124b7 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 @@ -12,7 +12,7 @@ import java.util.random.RandomGeneratorFactory; 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.util.range.Range; import com.dfsek.terra.api.world.chunk.generation.util.Column; import com.dfsek.terra.api.world.chunk.generation.util.Column.BinaryColumnBuilder; diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Sampler3DLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Sampler3DLocator.java index c41f65b1a..b419853d4 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Sampler3DLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Sampler3DLocator.java @@ -7,16 +7,16 @@ package com.dfsek.terra.addons.feature.locator.locators; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.world.chunk.generation.util.Column; public class Sampler3DLocator implements Locator { - private final NoiseSampler sampler; + private final Sampler sampler; - public Sampler3DLocator(NoiseSampler sampler) { + public Sampler3DLocator(Sampler sampler) { this.sampler = sampler; } @@ -25,6 +25,6 @@ public class Sampler3DLocator implements Locator { long seed = column.getWorld().getSeed(); int x = column.getX(); int z = column.getZ(); - return column.newBinaryColumn(y -> sampler.noise(seed, x, y, z) > 0); + return column.newBinaryColumn(y -> sampler.getSample(seed, x, y, z) > 0); } } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SamplerLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SamplerLocator.java index 8eea6d75b..5423e25f4 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SamplerLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SamplerLocator.java @@ -9,7 +9,7 @@ package com.dfsek.terra.addons.feature.locator.locators; import java.util.List; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.world.chunk.generation.util.Column; @@ -17,9 +17,9 @@ import com.dfsek.terra.api.world.chunk.generation.util.Column.BinaryColumnBuilde public class SamplerLocator implements Locator { - private final List samplers; + private final List samplers; - public SamplerLocator(List samplers) { + public SamplerLocator(List samplers) { this.samplers = samplers; } @@ -42,7 +42,7 @@ public class SamplerLocator implements Locator { long seed = column.getWorld().getSeed(); samplers.forEach(sampler -> { - int y = floorToInt(sampler.noise(seed, column.getX(), column.getZ())); + int y = floorToInt(sampler.getSample(seed, column.getX(), column.getZ())); if(y >= column.getMaxY() || y < column.getMinY()) return; results.set(y); }); 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 3f2f9e654..4eafba82c 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 @@ -9,7 +9,7 @@ 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.util.range.Range; import com.dfsek.terra.api.world.chunk.generation.util.Column; import com.dfsek.terra.api.world.chunk.generation.util.Column.BinaryColumnBuilder; diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/TopLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/TopLocator.java index bdf9ea4d2..ec8890fda 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/TopLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/TopLocator.java @@ -9,7 +9,7 @@ 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.util.range.Range; import com.dfsek.terra.api.world.chunk.generation.util.Column; 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 6774b5b63..f64733b36 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 @@ -10,7 +10,7 @@ package com.dfsek.terra.addons.feature.locator.patterns; 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.util.range.Range; import com.dfsek.terra.api.world.WritableWorld; import com.dfsek.terra.api.world.chunk.generation.util.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 2be951055..19da4e2af 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 @@ -8,6 +8,9 @@ package com.dfsek.terra.addons.noise; import com.dfsek.paralithic.eval.parser.Parser.ParseOptions; +import com.dfsek.seismic.algorithms.sampler.noise.CellularSampler; +import com.dfsek.seismic.type.CubicSpline; +import com.dfsek.seismic.type.DistanceFunction; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.LinkedHashMap; @@ -16,13 +19,12 @@ import java.util.function.Supplier; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.addons.noise.config.CubicSplinePointTemplate; -import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; +import com.dfsek.terra.addons.noise.config.DimensionApplicableSampler; import com.dfsek.terra.addons.noise.config.templates.BinaryArithmeticTemplate; import com.dfsek.terra.addons.noise.config.templates.CacheSamplerTemplate; -import com.dfsek.terra.addons.noise.config.templates.DerivativeNoiseSamplerTemplate; +import com.dfsek.terra.addons.noise.config.templates.DerivativeSamplerTemplate; import com.dfsek.terra.addons.noise.config.templates.DomainWarpTemplate; import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; -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.LinearHeightmapSamplerTemplate; import com.dfsek.terra.addons.noise.config.templates.TranslateSamplerTemplate; @@ -45,37 +47,25 @@ import com.dfsek.terra.addons.noise.config.templates.normalizer.NormalNormalizer import com.dfsek.terra.addons.noise.config.templates.normalizer.PosterizationNormalizerTemplate; import com.dfsek.terra.addons.noise.config.templates.normalizer.ProbabilityNormalizerTemplate; import com.dfsek.terra.addons.noise.config.templates.normalizer.ScaleNormalizerTemplate; -import com.dfsek.terra.addons.noise.math.CubicSpline; -import com.dfsek.terra.addons.noise.samplers.arithmetic.AdditionSampler; -import com.dfsek.terra.addons.noise.samplers.arithmetic.DivisionSampler; -import com.dfsek.terra.addons.noise.samplers.arithmetic.MaxSampler; -import com.dfsek.terra.addons.noise.samplers.arithmetic.MinSampler; -import com.dfsek.terra.addons.noise.samplers.arithmetic.MultiplicationSampler; -import com.dfsek.terra.addons.noise.samplers.arithmetic.SubtractionSampler; -import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; -import com.dfsek.terra.addons.noise.samplers.noise.DistanceSampler; -import com.dfsek.terra.addons.noise.samplers.noise.random.GaussianNoiseSampler; -import com.dfsek.terra.addons.noise.samplers.noise.random.PositiveWhiteNoiseSampler; -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.Platform; import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.noise.DerivativeNoiseSampler; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.DerivativeSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; - +import com.dfsek.seismic.algorithms.sampler.noise.*; +import com.dfsek.seismic.algorithms.sampler.noise.simplex.*; +import com.dfsek.seismic.algorithms.sampler.noise.fractal.*; +import com.dfsek.seismic.algorithms.sampler.noise.random.*; +import com.dfsek.seismic.algorithms.sampler.noise.value.*; +import com.dfsek.seismic.algorithms.sampler.normalizer.*; +import com.dfsek.seismic.algorithms.sampler.arithmetic.*; public class NoiseAddon implements AddonInitializer { - public static final TypeKey>> NOISE_SAMPLER_TOKEN = new TypeKey<>() { + public static final TypeKey>> NOISE_SAMPLER_TOKEN = new TypeKey<>() { }; @Inject private Platform plugin; @@ -91,19 +81,19 @@ public class NoiseAddon implements AddonInitializer { .then(event -> { ParseOptions expressionParseOptions = event.getPack().getExpressionParseOptions(); - CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry( + CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry( NOISE_SAMPLER_TOKEN); event.getPack() - .applyLoader(CellularSampler.DistanceFunction.class, - (type, o, loader, depthTracker) -> CellularSampler.DistanceFunction.valueOf((String) o)) + .applyLoader(DistanceFunction.class, + (type, o, loader, depthTracker) -> DistanceFunction.valueOf((String) o)) .applyLoader(CellularSampler.ReturnType.class, (type, o, loader, depthTracker) -> CellularSampler.ReturnType.valueOf((String) o)) - .applyLoader(DistanceSampler.DistanceFunction.class, - (type, o, loader, depthTracker) -> DistanceSampler.DistanceFunction.valueOf((String) o)) - .applyLoader(DimensionApplicableNoiseSampler.class, DimensionApplicableNoiseSampler::new) + .applyLoader(DistanceFunction.class, + (type, o, loader, depthTracker) -> DistanceFunction.valueOf((String) o)) + .applyLoader(DimensionApplicableSampler.class, DimensionApplicableSampler::new) .applyLoader(FunctionTemplate.class, () -> new FunctionTemplate(expressionParseOptions)) .applyLoader(CubicSpline.Point.class, CubicSplinePointTemplate::new) - .applyLoader(DerivativeNoiseSampler.class, DerivativeNoiseSamplerTemplate::new); + .applyLoader(DerivativeSampler.class, DerivativeSamplerTemplate::new); noiseRegistry.register(addon.key("LINEAR"), LinearNormalizerTemplate::new); noiseRegistry.register(addon.key("LINEAR_MAP"), LinearMapNormalizerTemplate::new); @@ -114,8 +104,6 @@ public class NoiseAddon implements AddonInitializer { noiseRegistry.register(addon.key("POSTERIZATION"), PosterizationNormalizerTemplate::new); noiseRegistry.register(addon.key("CUBIC_SPLINE"), CubicSplineNormalizerTemplate::new); - noiseRegistry.register(addon.key("IMAGE"), ImageSamplerTemplate::new); - noiseRegistry.register(addon.key("DOMAIN_WARP"), DomainWarpTemplate::new); noiseRegistry.register(addon.key("FBM"), BrownianMotionTemplate::new); @@ -157,7 +145,7 @@ public class NoiseAddon implements AddonInitializer { noiseRegistry.register(addon.key("CACHE"), CacheSamplerTemplate::new); - Map packSamplers = new LinkedHashMap<>(); + Map packSamplers = new LinkedHashMap<>(); Map packFunctions = new LinkedHashMap<>(); noiseRegistry.register(addon.key("EXPRESSION"), () -> new ExpressionFunctionTemplate(packSamplers, packFunctions, expressionParseOptions)); noiseRegistry.register(addon.key("EXPRESSION_NORMALIZER"), 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 5e464f2d6..15c23fd0d 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 @@ -14,7 +14,7 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.LinkedHashMap; import java.util.Map; -import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; +import com.dfsek.terra.addons.noise.config.DimensionApplicableSampler; import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.properties.Properties; @@ -24,13 +24,13 @@ import com.dfsek.terra.api.properties.Properties; public class NoiseConfigPackTemplate implements ConfigTemplate, Properties { @Value("samplers") @Default - private @Meta Map noiseBuilderMap = new LinkedHashMap<>(); + private @Meta Map noiseBuilderMap = new LinkedHashMap<>(); @Value("functions") @Default private @Meta LinkedHashMap expressions = new LinkedHashMap<>(); - public Map getSamplers() { + public Map getSamplers() { return noiseBuilderMap; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/CubicSplinePointTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/CubicSplinePointTemplate.java index 1a0c7c35a..0b609ff96 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/CubicSplinePointTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/CubicSplinePointTemplate.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.noise.config; +import com.dfsek.seismic.type.CubicSpline.Point; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.noise.math.CubicSpline.Point; -import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.config.meta.Meta; public class CubicSplinePointTemplate implements ObjectTemplate { 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/DimensionApplicableSampler.java similarity index 70% rename from common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java rename to common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableSampler.java index 1179c622e..38b474b3f 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/DimensionApplicableSampler.java @@ -11,18 +11,18 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; -public class DimensionApplicableNoiseSampler implements ObjectTemplate { +public class DimensionApplicableSampler implements ObjectTemplate { @Value("dimensions") private @Meta int dimensions; @Value(".") - private @Meta NoiseSampler sampler; + private @Meta Sampler sampler; @Override - public DimensionApplicableNoiseSampler get() { + public DimensionApplicableSampler get() { return this; } @@ -30,7 +30,7 @@ public class DimensionApplicableNoiseSampler implements ObjectTemplate>> cache2D; private final ThreadLocal>> cache3D; - public CacheSampler(NoiseSampler sampler, int dimensions) { + public CacheSampler(Sampler sampler, int dimensions) { this.sampler = sampler; if (dimensions == 2) { this.cache2D = ThreadLocal.withInitial(() -> { @@ -54,16 +54,16 @@ public class CacheSampler implements NoiseSampler { private Double sampleNoise(DoubleSeededVector2Key vec) { this.cache2D.get().setLeft(new DoubleSeededVector2Key(0, 0, 0)); - return this.sampler.noise(vec.seed, vec.x, vec.z); + return this.sampler.getSample(vec.seed, vec.x, vec.z); } private Double sampleNoise(DoubleSeededVector3Key vec) { this.cache3D.get().setLeft(new DoubleSeededVector3Key(0, 0, 0, 0)); - return this.sampler.noise(vec.seed, vec.x, vec.y, vec.z); + return this.sampler.getSample(vec.seed, vec.x, vec.y, vec.z); } @Override - public double noise(long seed, double x, double y) { + public double getSample(long seed, double x, double y) { Mutable> cachePair = cache2D.get(); DoubleSeededVector2Key mutableKey = cachePair.getLeft(); mutableKey.set(x, y, seed); @@ -71,7 +71,7 @@ public class CacheSampler implements NoiseSampler { } @Override - public double noise(long seed, double x, double y, double z) { + public double getSample(long seed, double x, double y, double z) { Mutable> cachePair = cache3D.get(); DoubleSeededVector3Key mutableKey = cachePair.getLeft(); mutableKey.set(x, y, z, seed); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/BinaryArithmeticTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/BinaryArithmeticTemplate.java index 67427c189..a1ff9438d 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/BinaryArithmeticTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/BinaryArithmeticTemplate.java @@ -1,22 +1,22 @@ package com.dfsek.terra.addons.noise.config.templates; +import com.dfsek.seismic.algorithms.sampler.arithmetic.BinaryArithmeticSampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.function.BiFunction; -import com.dfsek.terra.addons.noise.samplers.arithmetic.BinaryArithmeticSampler; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; public class BinaryArithmeticTemplate extends SamplerTemplate { - private final BiFunction function; + private final BiFunction function; @Value("left") - private @Meta NoiseSampler left; + private @Meta Sampler left; @Value("right") - private @Meta NoiseSampler right; + private @Meta Sampler right; - public BinaryArithmeticTemplate(BiFunction function) { + public BinaryArithmeticTemplate(BiFunction function) { this.function = function; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/CacheSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/CacheSamplerTemplate.java index ba6f73bce..9af1a6462 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/CacheSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/CacheSamplerTemplate.java @@ -3,9 +3,9 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.noise.samplers.CacheSampler; -import com.dfsek.terra.addons.noise.samplers.LinearHeightmapSampler; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; + +import com.dfsek.terra.addons.noise.config.sampler.CacheSampler; import org.jetbrains.annotations.ApiStatus.Experimental; @@ -14,14 +14,14 @@ import org.jetbrains.annotations.ApiStatus.Experimental; public class CacheSamplerTemplate extends SamplerTemplate { @Value("sampler") @Default - private NoiseSampler sampler; + private Sampler sampler; public CacheSamplerTemplate() { } @Override - public NoiseSampler get() { + public Sampler get() { return new CacheSampler(sampler, getDimensions()); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DerivativeNoiseSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DerivativeNoiseSamplerTemplate.java deleted file mode 100644 index 9e66b23ea..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DerivativeNoiseSamplerTemplate.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates; - -import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.tectonic.api.exception.ValidationException; - -import com.dfsek.terra.api.noise.DerivativeNoiseSampler; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class DerivativeNoiseSamplerTemplate extends SamplerTemplate { - - @Value(".") - private NoiseSampler sampler; - - @Override - public boolean validate() throws ValidationException { - if(!DerivativeNoiseSampler.isDifferentiable(sampler)) throw new ValidationException( - "Provided sampler does not support calculating a derivative"); - return super.validate(); - } - - @Override - public DerivativeNoiseSampler get() { - return (DerivativeNoiseSampler) sampler; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DerivativeSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DerivativeSamplerTemplate.java new file mode 100644 index 000000000..e322d59a3 --- /dev/null +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DerivativeSamplerTemplate.java @@ -0,0 +1,26 @@ +package com.dfsek.terra.addons.noise.config.templates; + +import com.dfsek.seismic.type.sampler.DerivativeSampler; +import com.dfsek.tectonic.api.config.template.annotations.Value; +import com.dfsek.tectonic.api.exception.ValidationException; + +import com.dfsek.seismic.type.sampler.Sampler; + + +public class DerivativeSamplerTemplate extends SamplerTemplate { + + @Value(".") + private Sampler sampler; + + @Override + public boolean validate() throws ValidationException { + if(!DerivativeSampler.isDifferentiable(sampler)) throw new ValidationException( + "Provided sampler does not support calculating a derivative"); + return super.validate(); + } + + @Override + public DerivativeSampler get() { + return (DerivativeSampler) 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 4330a7814..f1d1ed93c 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 @@ -7,28 +7,28 @@ package com.dfsek.terra.addons.noise.config.templates; +import com.dfsek.seismic.algorithms.sampler.DomainWarpedSampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.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; +import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) public class DomainWarpTemplate extends SamplerTemplate { @Value("warp") - private @Meta NoiseSampler warp; + private @Meta Sampler warp; @Value("sampler") - private @Meta NoiseSampler function; + private @Meta Sampler function; @Value("amplitude") @Default private @Meta double amplitude = 1; @Override - public NoiseSampler get() { + public Sampler 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 deleted file mode 100644 index 953aaffd7..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.config.templates; - -import com.dfsek.tectonic.api.config.template.annotations.Value; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -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; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public class ImageSamplerTemplate extends SamplerTemplate { - - private static final Logger logger = LoggerFactory.getLogger(ImageSamplerTemplate.class); - - private static boolean used = false; - - @Value("image") - private @Meta BufferedImage image; - - @Value("frequency") - private @Meta double frequency; - - @Value("channel") - private ImageSampler.@Meta Channel channel; - - @Override - public NoiseSampler get() { - if(!used) { - logger.warn("The IMAGE NoiseSampler implemented by the config-noise-function addon is deprecated. " + - "It is recommended to use the IMAGE NoiseSampler implemented by the config-noise-image " + - "addon instead."); - used = true; - } - 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 2c2f9e336..407313b66 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 @@ -7,15 +7,15 @@ package com.dfsek.terra.addons.noise.config.templates; +import com.dfsek.seismic.algorithms.sampler.KernelSampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.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 com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) @@ -29,14 +29,14 @@ public class KernelTemplate extends SamplerTemplate { private @Meta double factor = 1; @Value("sampler") - private @Meta NoiseSampler function; + private @Meta Sampler function; @Value("frequency") @Default private @Meta double frequency = 1; @Override - public NoiseSampler get() { + public Sampler 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/LinearHeightmapSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/LinearHeightmapSamplerTemplate.java index 0ee38f28d..744c3cb46 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/LinearHeightmapSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/LinearHeightmapSamplerTemplate.java @@ -1,18 +1,18 @@ package com.dfsek.terra.addons.noise.config.templates; +import com.dfsek.seismic.algorithms.sampler.LinearHeightmapSampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.noise.samplers.LinearHeightmapSampler; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings("FieldMayBeFinal") public class LinearHeightmapSamplerTemplate extends SamplerTemplate { @Value("sampler") @Default - private @Meta NoiseSampler sampler = NoiseSampler.zero(); + private @Meta Sampler sampler = Sampler.zero(); @Value("base") private @Meta double base; @@ -22,7 +22,7 @@ public class LinearHeightmapSamplerTemplate extends SamplerTemplate implements ValidatedConfigTemplate, ObjectTemplate { +public abstract class SamplerTemplate implements ValidatedConfigTemplate, ObjectTemplate { @Value("dimensions") @Default private @Meta int dimensions = 2; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/TranslateSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/TranslateSamplerTemplate.java index a37d125d0..1a73a21b2 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/TranslateSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/TranslateSamplerTemplate.java @@ -1,17 +1,17 @@ package com.dfsek.terra.addons.noise.config.templates; +import com.dfsek.seismic.algorithms.sampler.TranslateSampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.noise.samplers.TranslateSampler; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; public class TranslateSamplerTemplate extends SamplerTemplate { @Value("sampler") - private NoiseSampler sampler; + private Sampler sampler; @Value("x") @Default @@ -26,7 +26,7 @@ public class TranslateSamplerTemplate extends SamplerTemplate private @Meta double z = 0; @Override - public NoiseSampler get() { + public Sampler get() { return new TranslateSampler(sampler, x, y, z); } } 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 4d029034e..9c4aa142d 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 @@ -7,20 +7,22 @@ package com.dfsek.terra.addons.noise.config.templates.noise; +import com.dfsek.seismic.algorithms.sampler.noise.CellularSampler; +import com.dfsek.seismic.algorithms.sampler.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.seismic.type.DistanceFunction; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.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; +import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings("FieldMayBeFinal") public class CellularNoiseTemplate extends NoiseTemplate { @Value("distance") @Default - private CellularSampler.@Meta DistanceFunction cellularDistanceFunction = CellularSampler.DistanceFunction.EuclideanSq; + private @Meta DistanceFunction cellularDistanceFunction = DistanceFunction.EuclideanSq; @Value("return") @Default @@ -33,14 +35,14 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Value("lookup") @Default - private @Meta NoiseSampler lookup = new OpenSimplex2Sampler(); + private @Meta Sampler lookup = new OpenSimplex2Sampler(); @Value("salt-lookup") @Default private @Meta boolean saltLookup = true; @Override - public NoiseSampler get() { + public Sampler 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 9068ad4e9..49922b07d 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 @@ -7,13 +7,13 @@ package com.dfsek.terra.addons.noise.config.templates.noise; +import com.dfsek.seismic.algorithms.sampler.noise.ConstantSampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.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; +import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings("FieldMayBeFinal") @@ -23,7 +23,7 @@ public class ConstantNoiseTemplate extends SamplerTemplate { private @Meta double value = 0d; @Override - public NoiseSampler get() { + public Sampler get() { return new ConstantSampler(value); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DerivativeNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DerivativeNoiseTemplate.java deleted file mode 100644 index c9100e344..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DerivativeNoiseTemplate.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.noise; - -import com.dfsek.terra.addons.noise.samplers.noise.DerivativeNoiseFunction; - - -public abstract class DerivativeNoiseTemplate extends NoiseTemplate { - -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java index f39405cf4..997661313 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java @@ -1,11 +1,12 @@ package com.dfsek.terra.addons.noise.config.templates.noise; +import com.dfsek.seismic.algorithms.sampler.noise.DistanceSampler; +import com.dfsek.seismic.type.DistanceFunction; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; -import com.dfsek.terra.addons.noise.samplers.noise.DistanceSampler; -import com.dfsek.terra.addons.noise.samplers.noise.DistanceSampler.DistanceFunction; + import com.dfsek.terra.api.config.meta.Meta; @@ -13,7 +14,7 @@ public class DistanceSamplerTemplate extends SamplerTemplate { @Value("distance-function") @Default - private DistanceSampler.@Meta DistanceFunction distanceFunction = DistanceFunction.Euclidean; + private @Meta DistanceFunction distanceFunction = DistanceFunction.Euclidean; @Value("point.x") @Default 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 a6e0bf9a9..273511467 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 @@ -9,6 +9,7 @@ package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.paralithic.eval.parser.Parser.ParseOptions; import com.dfsek.paralithic.eval.tokenizer.ParseException; +import com.dfsek.paralithic.sampler.noise.ExpressionNoiseFunction; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; @@ -16,19 +17,18 @@ 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.DimensionApplicableSampler; import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; -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 com.dfsek.seismic.type.sampler.Sampler; import static com.dfsek.terra.addons.noise.paralithic.FunctionUtil.convertFunctionsAndSamplers; @SuppressWarnings({ "FieldMayBeFinal", "unused" }) -public class ExpressionFunctionTemplate extends SamplerTemplate { - private final Map globalSamplers; +public class ExpressionFunctionTemplate extends SamplerTemplate { + private final Map globalSamplers; private final Map globalFunctions; private final ParseOptions parseOptions; @Value("variables") @@ -38,12 +38,12 @@ public class ExpressionFunctionTemplate extends SamplerTemplate samplers = new LinkedHashMap<>(); + private @Meta LinkedHashMap samplers = new LinkedHashMap<>(); @Value("functions") @Default private @Meta LinkedHashMap functions = new LinkedHashMap<>(); - public ExpressionFunctionTemplate(Map globalSamplers, + public ExpressionFunctionTemplate(Map globalSamplers, Map globalFunctions, ParseOptions parseOptions) { this.globalSamplers = globalSamplers; @@ -52,13 +52,13 @@ public class ExpressionFunctionTemplate extends SamplerTemplate(globalFunctions); mergedFunctions.putAll(functions); var mergedSamplers = new HashMap<>(globalSamplers); mergedSamplers.putAll(samplers); try { - return new ExpressionFunction(convertFunctionsAndSamplers(mergedFunctions, mergedSamplers), expression, vars, parseOptions); + return new ExpressionNoiseFunction(convertFunctionsAndSamplers(mergedFunctions, mergedSamplers), expression, vars, parseOptions); } catch(ParseException e) { throw new RuntimeException("Failed to parse expression.", e); } 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 597cdd668..2347f76b7 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 @@ -7,16 +7,17 @@ package com.dfsek.terra.addons.noise.config.templates.noise; +import com.dfsek.seismic.algorithms.sampler.noise.GaborSampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.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; +import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings("FieldMayBeFinal") -public class GaborNoiseTemplate extends NoiseTemplate { +public class GaborNoiseTemplate extends NoiseTemplate { @Value("rotation") @Default private @Meta double rotation = 0.25; @@ -38,15 +39,15 @@ public class GaborNoiseTemplate extends NoiseTemplate { private @Meta double f0 = 0.625; @Override - public NoiseSampler get() { - GaborNoiseSampler gaborNoiseSampler = new GaborNoiseSampler(); - gaborNoiseSampler.setFrequency(frequency); - gaborNoiseSampler.setRotation(rotation); - gaborNoiseSampler.setIsotropic(isotropic); - gaborNoiseSampler.setDeviation(deviation); - gaborNoiseSampler.setImpulsesPerKernel(impulses); - gaborNoiseSampler.setFrequency0(f0); - gaborNoiseSampler.setSalt(salt); - return gaborNoiseSampler; + public Sampler get() { + GaborSampler gaborSampler = new GaborSampler(); + gaborSampler.setFrequency(frequency); + gaborSampler.setRotation(rotation); + gaborSampler.setIsotropic(isotropic); + gaborSampler.setDeviation(deviation); + gaborSampler.setImpulsesPerKernel(impulses); + gaborSampler.setFrequency0(f0); + gaborSampler.setSalt(salt); + return gaborSampler; } } 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 6129ae591..b7f91da27 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 @@ -7,11 +7,11 @@ package com.dfsek.terra.addons.noise.config.templates.noise; +import com.dfsek.seismic.algorithms.sampler.noise.NoiseFunction; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.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; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/PseudoErosionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/PseudoErosionTemplate.java index cda91ec32..6cbc4a6b6 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/PseudoErosionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/PseudoErosionTemplate.java @@ -1,12 +1,12 @@ package com.dfsek.terra.addons.noise.config.templates.noise; +import com.dfsek.seismic.algorithms.sampler.noise.PseudoErosionSampler; +import com.dfsek.seismic.algorithms.sampler.noise.simplex.OpenSimplex2Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.noise.samplers.noise.PseudoErosionSampler; -import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.DerivativeNoiseSampler; +import com.dfsek.seismic.type.sampler.DerivativeSampler; public class PseudoErosionTemplate extends NoiseTemplate { @@ -45,7 +45,7 @@ public class PseudoErosionTemplate extends NoiseTemplate { @Value("sampler") @Default - private DerivativeNoiseSampler heightSampler = new OpenSimplex2Sampler(); + private DerivativeSampler heightSampler = new OpenSimplex2Sampler(); @Value("slope-mask.enable") @Default 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 f22ae3d36..d93569aa8 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 @@ -9,8 +9,8 @@ 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 com.dfsek.seismic.algorithms.sampler.noise.NoiseFunction; +import com.dfsek.seismic.type.sampler.Sampler; public class SimpleNoiseTemplate extends NoiseTemplate { @@ -21,7 +21,7 @@ public class SimpleNoiseTemplate extends NoiseTemplate { } @Override - public NoiseSampler get() { + public Sampler get() { NoiseFunction sampler = samplerSupplier.get(); sampler.setFrequency(frequency); sampler.setSalt(salt); 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 ebcf76c43..2ca2fd047 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 @@ -7,13 +7,14 @@ 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.seismic.algorithms.sampler.noise.fractal.BrownianMotionSampler; +import com.dfsek.seismic.type.sampler.Sampler; public class BrownianMotionTemplate extends FractalTemplate { @Override - public NoiseSampler get() { + public Sampler get() { BrownianMotionSampler sampler = new BrownianMotionSampler(function); sampler.setGain(fractalGain); sampler.setLacunarity(fractalLacunarity); 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 a9b8e9ac2..02587ebe4 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 @@ -7,13 +7,13 @@ package com.dfsek.terra.addons.noise.config.templates.noise.fractal; +import com.dfsek.seismic.algorithms.sampler.noise.fractal.FractalNoiseFunction; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.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; +import com.dfsek.seismic.type.sampler.Sampler; public abstract class FractalTemplate extends SamplerTemplate { @@ -34,5 +34,5 @@ public abstract class FractalTemplate extends Sa protected @Meta double weightedStrength = 0.0D; @Value("sampler") - protected @Meta NoiseSampler function; + protected @Meta Sampler 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 f5386fe60..3913d0930 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 @@ -7,12 +7,12 @@ package com.dfsek.terra.addons.noise.config.templates.noise.fractal; +import com.dfsek.seismic.algorithms.sampler.noise.fractal.PingPongSampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.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; +import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) @@ -22,7 +22,7 @@ public class PingPongTemplate extends FractalTemplate { private @Meta double pingPong = 2.0D; @Override - public NoiseSampler get() { + public Sampler get() { PingPongSampler sampler = new PingPongSampler(function); sampler.setGain(fractalGain); sampler.setLacunarity(fractalLacunarity); 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 8570f3391..fa447ca9b 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 @@ -7,13 +7,14 @@ 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.seismic.algorithms.sampler.noise.fractal.RidgedFractalSampler; +import com.dfsek.seismic.type.sampler.Sampler; public class RidgedFractalTemplate extends FractalTemplate { @Override - public NoiseSampler get() { + public Sampler get() { RidgedFractalSampler sampler = new RidgedFractalSampler(function); sampler.setGain(fractalGain); sampler.setLacunarity(fractalLacunarity); 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 5b99c6643..91d764909 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 @@ -7,11 +7,11 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; +import com.dfsek.seismic.algorithms.sampler.normalizer.ClampNormalizer; import com.dfsek.tectonic.api.config.template.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; +import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) @@ -23,7 +23,7 @@ public class ClampNormalizerTemplate extends NormalizerTemplate private @Meta double min; @Override - public NoiseSampler get() { + public Sampler 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/CubicSplineNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/CubicSplineNormalizerTemplate.java index 672d1db90..3ff448bc2 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/CubicSplineNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/CubicSplineNormalizerTemplate.java @@ -1,23 +1,24 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; + +import com.dfsek.seismic.algorithms.sampler.normalizer.CubicSplineNormalizer; +import com.dfsek.seismic.type.CubicSpline; +import com.dfsek.seismic.type.CubicSpline.Point; import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.List; -import com.dfsek.terra.addons.noise.math.CubicSpline; -import com.dfsek.terra.addons.noise.math.CubicSpline.Point; -import com.dfsek.terra.addons.noise.normalizer.CubicSplineNoiseSampler; +import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; - -public class CubicSplineNormalizerTemplate extends NormalizerTemplate { +public class CubicSplineNormalizerTemplate extends NormalizerTemplate { @Value("points") private @Meta List<@Meta Point> points; @Override - public NoiseSampler get() { - return new CubicSplineNoiseSampler(function, new CubicSpline(points)); + public Sampler get() { + return new CubicSplineNormalizer(function, new CubicSpline(points)); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ExpressionNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ExpressionNormalizerTemplate.java index 6852c52b2..a5f06fad8 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ExpressionNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ExpressionNormalizerTemplate.java @@ -16,11 +16,11 @@ 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.DimensionApplicableSampler; import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; -import com.dfsek.terra.addons.noise.normalizer.ExpressionNormalizer; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; +import com.dfsek.paralithic.sampler.normalizer.ExpressionNormalizer; import static com.dfsek.terra.addons.noise.paralithic.FunctionUtil.convertFunctionsAndSamplers; @@ -28,7 +28,7 @@ import static com.dfsek.terra.addons.noise.paralithic.FunctionUtil.convertFuncti @SuppressWarnings({ "unused", "FieldMayBeFinal" }) public class ExpressionNormalizerTemplate extends NormalizerTemplate { - private final Map globalSamplers; + private final Map globalSamplers; private final Map globalFunctions; private final ParseOptions parseOptions; @@ -41,13 +41,13 @@ public class ExpressionNormalizerTemplate extends NormalizerTemplate samplers = new LinkedHashMap<>(); + private @Meta LinkedHashMap samplers = new LinkedHashMap<>(); @Value("functions") @Default private @Meta LinkedHashMap functions = new LinkedHashMap<>(); - public ExpressionNormalizerTemplate(Map globalSamplers, + public ExpressionNormalizerTemplate(Map globalSamplers, Map globalFunctions, ParseOptions parseOptions) { this.globalSamplers = globalSamplers; @@ -56,7 +56,7 @@ public class ExpressionNormalizerTemplate extends NormalizerTemplate(globalFunctions); mergedFunctions.putAll(functions); var mergedSamplers = new HashMap<>(globalSamplers); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java index a03411628..c335c914b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; +import com.dfsek.seismic.algorithms.sampler.normalizer.LinearMapNormalizer; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.noise.normalizer.LinearMapNormalizer; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; public class LinearMapNormalizerTemplate extends NormalizerTemplate { @@ -25,7 +25,7 @@ public class LinearMapNormalizerTemplate extends NormalizerTemplate extends SamplerTemplate { @Value("sampler") - protected @Meta NoiseSampler function; + protected @Meta Sampler function; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/PosterizationNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/PosterizationNormalizerTemplate.java index c0ec213d7..1be8b7c01 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/PosterizationNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/PosterizationNormalizerTemplate.java @@ -7,11 +7,11 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; +import com.dfsek.seismic.algorithms.sampler.normalizer.PosterizationNormalizer; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.noise.normalizer.PosterizationNormalizer; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) @@ -20,7 +20,7 @@ public class PosterizationNormalizerTemplate extends NormalizerTemplate { @Override - public NoiseSampler get() { + public Sampler get() { return new ProbabilityNormalizer(function); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ScaleNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ScaleNormalizerTemplate.java index c21966cd2..506190201 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ScaleNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ScaleNormalizerTemplate.java @@ -1,10 +1,10 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; +import com.dfsek.seismic.algorithms.sampler.normalizer.ScaleNormalizer; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.noise.normalizer.ScaleNormalizer; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; public class ScaleNormalizerTemplate extends NormalizerTemplate { @@ -12,7 +12,7 @@ public class ScaleNormalizerTemplate extends NormalizerTemplate private @Meta double amplitude; @Override - public NoiseSampler get() { + public Sampler get() { return new ScaleNormalizer(function, amplitude); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/math/CubicSpline.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/math/CubicSpline.java deleted file mode 100644 index a9b0764b6..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/math/CubicSpline.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.dfsek.terra.addons.noise.math; - -import org.jetbrains.annotations.NotNull; - -import java.util.Collections; -import java.util.List; - -import static com.dfsek.terra.api.util.MathUtil.lerp; - - -public class CubicSpline { - - private final double[] fromValues; - private final double[] toValues; - private final double[] gradients; - - public CubicSpline(List points) { - Collections.sort(points); - - this.fromValues = new double[points.size()]; - this.toValues = new double[points.size()]; - this.gradients = new double[points.size()]; - - for(int i = 0; i < points.size(); i++) { - fromValues[i] = points.get(i).from; - toValues[i] = points.get(i).to; - gradients[i] = points.get(i).gradient; - } - } - - public static double calculate(double in, double[] fromValues, double[] toValues, double[] gradients) { - int pointIdx = floorBinarySearch(in, fromValues) - 1; - - int pointIdxLast = fromValues.length - 1; - - if(pointIdx < 0) { // If to left of first point return linear function intersecting said point using point's gradient - return gradients[0] * (in - fromValues[0]) + toValues[0]; - } else if(pointIdx == pointIdxLast) { // Do same if to right of last point - return gradients[pointIdxLast] * (in - fromValues[pointIdxLast]) + toValues[pointIdxLast]; - } else { - double fromLeft = fromValues[pointIdx]; - double fromRight = fromValues[pointIdx + 1]; - - double toLeft = toValues[pointIdx]; - double toRight = toValues[pointIdx + 1]; - - double gradientLeft = gradients[pointIdx]; - double gradientRight = gradients[pointIdx + 1]; - - double fromDelta = fromRight - fromLeft; - double toDelta = toRight - toLeft; - - double t = (in - fromLeft) / fromDelta; - - return lerp(t, toLeft, toRight) + t * (1.0F - t) * lerp(t, gradientLeft * fromDelta - toDelta, - -gradientRight * fromDelta + toDelta); - } - } - - private static int floorBinarySearch(double targetValue, double[] values) { - int left = 0; - int right = values.length; - int idx = right - left; - while(idx > 0) { - int halfDelta = idx / 2; - int mid = left + halfDelta; - if(targetValue < values[mid]) { - idx = halfDelta; - } else { - left = mid + 1; - idx -= halfDelta + 1; - } - } - return left; - } - - public double apply(double in) { - return calculate(in, fromValues, toValues, gradients); - } - - - public record Point(double from, double to, double gradient) implements Comparable { - - @Override - public int compareTo(@NotNull CubicSpline.Point o) { - return Double.compare(from, o.from); - } - } -} 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 deleted file mode 100644 index 3d709fcc5..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.normalizer; - -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 Math.max(Math.min(in, max), min); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/CubicSplineNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/CubicSplineNoiseSampler.java deleted file mode 100644 index 4786d69c6..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/CubicSplineNoiseSampler.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.addons.noise.normalizer; - -import com.dfsek.terra.addons.noise.math.CubicSpline; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class CubicSplineNoiseSampler extends Normalizer { - - private final CubicSpline spline; - - public CubicSplineNoiseSampler(NoiseSampler sampler, CubicSpline spline) { - super(sampler); - this.spline = spline; - } - - @Override - public double normalize(double in) { - return spline.apply(in); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ExpressionNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ExpressionNormalizer.java deleted file mode 100644 index e6d25f2d5..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ExpressionNormalizer.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.dfsek.terra.addons.noise.normalizer; - -import com.dfsek.paralithic.Expression; -import com.dfsek.paralithic.eval.parser.Parser; -import com.dfsek.paralithic.eval.parser.Parser.ParseOptions; -import com.dfsek.paralithic.eval.parser.Scope; -import com.dfsek.paralithic.eval.tokenizer.ParseException; -import com.dfsek.paralithic.functions.Function; - -import java.util.Arrays; -import java.util.Map; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class ExpressionNormalizer extends Normalizer { - - private final Expression expression; - - public ExpressionNormalizer(NoiseSampler sampler, Map functions, String eq, Map vars, ParseOptions parseOptions) - throws ParseException { - super(sampler); - - Parser p = new Parser(parseOptions); - Scope scope = new Scope(); - - // 'in' was used as the invocation variable but conflicts with - // the new 'in' keyword in Paralithic used to denote the end of a let - // expression. To maintain backwards compatibility but also enable the use - // of let expressions, if they're enabled then use the longer 'input' - // invocation variable instead. - if (parseOptions.useLetExpressions()) { - scope.addInvocationVariable("input"); - } else { - scope.addInvocationVariable("in"); - } - - vars.forEach(scope::create); - functions.forEach(p::registerFunction); - expression = p.parse(eq, scope); - } - - @Override - public double normalize(double in) { - return expression.evaluate(in); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java deleted file mode 100644 index 2338a6493..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.addons.noise.normalizer; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class LinearMapNormalizer extends Normalizer { - - private final double aFrom; - - private final double aTo; - - private final double bFrom; - - private final double bTo; - - public LinearMapNormalizer(NoiseSampler sampler, double aFrom, double aTo, double bFrom, double bTo) { - super(sampler); - this.aFrom = aFrom; - this.aTo = aTo; - this.bFrom = bFrom; - this.bTo = bTo; - } - - @Override - public double normalize(double in) { - return (in - aFrom) * (aTo - bTo) / (aFrom - bFrom) + aTo; - } -} 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 deleted file mode 100644 index 5e1053bdf..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -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 deleted file mode 100644 index 7538f9187..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.normalizer; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; - - -/** - * 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; - int end = lookup.length - 1; - while(start + 1 < end) { - int mid = start + (end - start) / 2; - if(lookup[mid] <= in) { - start = mid; - } else { - end = mid; - } - } - double left = Math.abs(lookup[start] - in); - double right = Math.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 deleted file mode 100644 index 539e2e394..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -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 noise(long seed, double x, double y) { - return normalize(sampler.noise(seed, x, y)); - } - - @Override - public double noise(long seed, double x, double y, double z) { - return normalize(sampler.noise(seed, x, y, z)); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/PosterizationNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/PosterizationNormalizer.java deleted file mode 100644 index eb5fe8085..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/PosterizationNormalizer.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2022 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.normalizer; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class PosterizationNormalizer extends Normalizer { - private final double stepSize; - - public PosterizationNormalizer(NoiseSampler sampler, int steps) { - super(sampler); - this.stepSize = 2.0 / (steps - 1); - } - - @Override - public double normalize(double in) { - return (int) Math.round((in + 1) / stepSize) * stepSize - 1; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ProbabilityNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ProbabilityNormalizer.java deleted file mode 100644 index e254b2d9c..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ProbabilityNormalizer.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.addons.noise.normalizer; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class ProbabilityNormalizer extends Normalizer { - public ProbabilityNormalizer(NoiseSampler sampler) { - super(sampler); - } - - @Override - public double normalize(double in) { - return (in + 1) / 2; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ScaleNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ScaleNormalizer.java deleted file mode 100644 index 2f0baf86d..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ScaleNormalizer.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.addons.noise.normalizer; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class ScaleNormalizer extends Normalizer { - private final double scale; - - public ScaleNormalizer(NoiseSampler sampler, double scale) { - super(sampler); - this.scale = scale; - } - - @Override - public double normalize(double in) { - return in * scale; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/FunctionUtil.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/FunctionUtil.java index d47693cde..4e6451193 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/FunctionUtil.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/FunctionUtil.java @@ -6,20 +6,22 @@ import com.dfsek.paralithic.functions.Function; import java.util.HashMap; import java.util.Map; -import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; +import com.dfsek.paralithic.functions.dynamic.noise.NoiseFunction2; + +import com.dfsek.paralithic.functions.dynamic.noise.NoiseFunction3; +import com.dfsek.paralithic.functions.dynamic.noise.SaltedNoiseFunction2; + +import com.dfsek.paralithic.functions.dynamic.noise.SaltedNoiseFunction3; + +import com.dfsek.terra.addons.noise.config.DimensionApplicableSampler; 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.SaltedNoiseFunction2; -import com.dfsek.terra.addons.noise.paralithic.noise.SaltedNoiseFunction3; public class FunctionUtil { private FunctionUtil() { } public static Map convertFunctionsAndSamplers(Map functions, - Map samplers) + Map samplers) throws ParseException { Map functionMap = new HashMap<>(); for(Map.Entry entry : functions.entrySet()) { 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/UserDefinedFunction.java similarity index 97% rename from common/addons/config-noise-function/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/UserDefinedFunction.java index 3d2703bed..0e192d13c 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/UserDefinedFunction.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.noise.paralithic.defined; +package com.dfsek.terra.addons.noise.paralithic; import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.eval.parser.Parser; 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 deleted file mode 100644 index 3cf48bfaf..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -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.paralithic.node.Statefulness; - -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 double eval(double... args) { - throw new UnsupportedOperationException("Cannot evaluate seeded function without seed context."); - } - - @Override - public double eval(Context context, double... args) { - return gen.noise(((SeedContext) context).getSeed(), args[0], args[1]); - } - - @Override - public int getArgNumber() { - return 2; - } - - @Override - public Statefulness statefulness() { - return Statefulness.CONTEXTUAL; - } -} 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 deleted file mode 100644 index 5c52b414a..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -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.paralithic.node.Statefulness; - -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 double eval(double... args) { - throw new UnsupportedOperationException("Cannot evaluate seeded function without seed context."); - } - - @Override - public double eval(Context context, double... args) { - return gen.noise(((SeedContext) context).getSeed(), args[0], args[1], args[2]); - } - - @Override - public int getArgNumber() { - return 3; - } - - @Override - public Statefulness statefulness() { - return Statefulness.CONTEXTUAL; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SaltedNoiseFunction2.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SaltedNoiseFunction2.java deleted file mode 100644 index 41ddd1247..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SaltedNoiseFunction2.java +++ /dev/null @@ -1,37 +0,0 @@ -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.paralithic.node.Statefulness; -import org.jetbrains.annotations.NotNull; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class SaltedNoiseFunction2 implements DynamicFunction { - private final NoiseSampler gen; - - public SaltedNoiseFunction2(NoiseSampler gen) { - this.gen = gen; - } - - @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.noise(((SeedContext) context).getSeed() + (long) args[2], args[0], args[1]); - } - - @Override - public int getArgNumber() { - return 3; - } - - @Override - public @NotNull Statefulness statefulness() { - return Statefulness.CONTEXTUAL; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SaltedNoiseFunction3.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SaltedNoiseFunction3.java deleted file mode 100644 index d4549127c..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SaltedNoiseFunction3.java +++ /dev/null @@ -1,37 +0,0 @@ -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.paralithic.node.Statefulness; -import org.jetbrains.annotations.NotNull; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class SaltedNoiseFunction3 implements DynamicFunction { - private final NoiseSampler gen; - - public SaltedNoiseFunction3(NoiseSampler gen) { - this.gen = gen; - } - - @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.noise(((SeedContext) context).getSeed() + (long) args[3], args[0], args[1], args[2]); - } - - @Override - public int getArgNumber() { - return 4; - } - - @Override - public @NotNull Statefulness statefulness() { - return Statefulness.CONTEXTUAL; - } -} 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 deleted file mode 100644 index e104561b3..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -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 deleted file mode 100644 index d452ce5f9..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -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 noise(long seed, double x, double y) { - return function.noise(seed++, - x + warp.noise(seed++, x, y) * amplitude, - y + warp.noise(seed, x, y) * amplitude - ); - } - - @Override - public double noise(long seed, double x, double y, double z) { - return function.noise(seed++, - x + warp.noise(seed++, x, y, z) * amplitude, - y + warp.noise(seed++, x, y, z) * amplitude, - z + warp.noise(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 deleted file mode 100644 index c42532651..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers; - -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 noise(long seed, double x, double y) { - return ((channel.getChannel(image.getRGB(Math.floorMod((int) Math.floor(x * frequency), image.getWidth()), - Math.floorMod((int) Math.floor(y * frequency), image.getHeight()))) / 255D) - 0.5) * - 2; - } - - @Override - public double noise(long seed, double x, double y, double z) { - return noise(seed, x, y); - } - - public enum Channel { - RED { - @Override - public int getChannel(int mashed) { - return (mashed >> 16) & 0xff; - } - }, - GREEN { - @Override - public int getChannel(int mashed) { - return (mashed >> 8) & 0xff; - } - }, - BLUE { - @Override - public int getChannel(int mashed) { - return mashed & 0xff; - } - }, - GRAYSCALE { - @Override - public int getChannel(int mashed) { - return (RED.getChannel(mashed) + GREEN.getChannel(mashed) + BLUE.getChannel(mashed)) / 3; - } - }, - 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 deleted file mode 100644 index 8de30482a..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -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 noise(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++) { - double k = kernel[kx][ky]; - if(k != 0) { - accumulator += in.noise(seed, x + kx, y + ky) * k; - } - } - } - - return accumulator; - } - - @Override - public double noise(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++) { - double k = kernel[kx][ky]; - if(k != 0) { - accumulator += in.noise(seed, x + kx, y, z + ky) * k; - } - } - } - - return accumulator; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/LinearHeightmapSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/LinearHeightmapSampler.java deleted file mode 100644 index 500b44e4f..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/LinearHeightmapSampler.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class LinearHeightmapSampler implements NoiseSampler { - private final NoiseSampler sampler; - private final double scale; - private final double base; - - public LinearHeightmapSampler(NoiseSampler sampler, double scale, double base) { - this.sampler = sampler; - this.scale = scale; - this.base = base; - } - - - @Override - public double noise(long seed, double x, double y) { - return noise(seed, x, 0, y); - } - - @Override - public double noise(long seed, double x, double y, double z) { - return -y + base + sampler.noise(seed, x, y, z) * scale; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/TranslateSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/TranslateSampler.java deleted file mode 100644 index cb886c948..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/TranslateSampler.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class TranslateSampler implements NoiseSampler { - - private final NoiseSampler sampler; - private final double dx, dy, dz; - - public TranslateSampler(NoiseSampler sampler, double dx, double dy, double dz) { - this.sampler = sampler; - this.dx = dx; - this.dy = dy; - this.dz = dz; - } - - @Override - public double noise(long seed, double x, double y) { - return sampler.noise(seed, x - dx, y - dz); - } - - @Override - public double noise(long seed, double x, double y, double z) { - return sampler.noise(seed, x - dx, y - dy, z - dz); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/AdditionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/AdditionSampler.java deleted file mode 100644 index 4006e126c..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/AdditionSampler.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.arithmetic; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class AdditionSampler extends BinaryArithmeticSampler { - public AdditionSampler(NoiseSampler left, NoiseSampler right) { - super(left, right); - } - - @Override - public double operate(double left, double right) { - return left + right; - } - - @Override - public double[] operateDerivative(double[] left, double[] right) { - int dimensions = left.length; - double[] out = new double[dimensions]; - for(int i = 0; i < dimensions; i++) { - out[i] = left[i] + right[i]; - } - return out; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/BinaryArithmeticSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/BinaryArithmeticSampler.java deleted file mode 100644 index 66abb393c..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/BinaryArithmeticSampler.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.arithmetic; - -import com.dfsek.terra.api.noise.DerivativeNoiseSampler; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public abstract class BinaryArithmeticSampler implements DerivativeNoiseSampler { - private final NoiseSampler left; - private final NoiseSampler right; - - protected BinaryArithmeticSampler(NoiseSampler left, NoiseSampler right) { - this.left = left; - this.right = right; - } - - @Override - public boolean isDifferentiable() { - return DerivativeNoiseSampler.isDifferentiable(left) && DerivativeNoiseSampler.isDifferentiable(right); - } - - @Override - public double noise(long seed, double x, double y) { - return operate(left.noise(seed, x, y), right.noise(seed, x, y)); - } - - @Override - public double noise(long seed, double x, double y, double z) { - return operate(left.noise(seed, x, y, z), right.noise(seed, x, y, z)); - } - - @Override - public double[] noised(long seed, double x, double y) { - return operateDerivative(((DerivativeNoiseSampler)left).noised(seed, x, y), ((DerivativeNoiseSampler)right).noised(seed, x, y)); - } - - @Override - public double[] noised(long seed, double x, double y, double z) { - return operateDerivative(((DerivativeNoiseSampler)left).noised(seed, x, y, z), ((DerivativeNoiseSampler)right).noised(seed, x, y, z)); - } - - public abstract double operate(double left, double right); - - public abstract double[] operateDerivative(double[] left, double[] right); -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/DivisionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/DivisionSampler.java deleted file mode 100644 index fe6c1a79d..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/DivisionSampler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.arithmetic; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class DivisionSampler extends BinaryArithmeticSampler { - public DivisionSampler(NoiseSampler left, NoiseSampler right) { - super(left, right); - } - - @Override - public double operate(double left, double right) { - return left / right; - } - - @Override - public double[] operateDerivative(double[] left, double[] right) { - int dimensions = left.length; - double[] out = new double[dimensions]; - out[0] = left[0] / right[0]; - for(int i = 1; i < dimensions; i++) { - out[i] = (left[i] * right[0] - left[0] * right[i]) / (right[0] * right[0]); - } - return out; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MaxSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MaxSampler.java deleted file mode 100644 index 4012de57f..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MaxSampler.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.arithmetic; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class MaxSampler extends BinaryArithmeticSampler { - public MaxSampler(NoiseSampler left, NoiseSampler right) { - super(left, right); - } - - @Override - public double operate(double left, double right) { - return Math.max(left, right); - } - - @Override - public double[] operateDerivative(double[] left, double[] right) { - double leftValue = left[0]; - double rightValue = right[0]; - return leftValue > rightValue ? left : right; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MinSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MinSampler.java deleted file mode 100644 index a29064794..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MinSampler.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.arithmetic; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class MinSampler extends BinaryArithmeticSampler { - public MinSampler(NoiseSampler left, NoiseSampler right) { - super(left, right); - } - - @Override - public double operate(double left, double right) { - return Math.min(left, right); - } - - @Override - public double[] operateDerivative(double[] left, double[] right) { - double leftValue = left[0]; - double rightValue = right[0]; - return leftValue < rightValue ? left : right; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MultiplicationSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MultiplicationSampler.java deleted file mode 100644 index 1033b980e..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MultiplicationSampler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.arithmetic; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class MultiplicationSampler extends BinaryArithmeticSampler { - public MultiplicationSampler(NoiseSampler left, NoiseSampler right) { - super(left, right); - } - - @Override - public double operate(double left, double right) { - return left * right; - } - - @Override - public double[] operateDerivative(double[] left, double[] right) { - int dimensions = left.length; - double[] out = new double[dimensions]; - out[0] = left[0] * right[0]; - for(int i = 1; i < dimensions; i++) { - out[i] = left[i] * right[0] + left[0] * right[i]; - } - return out; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/SubtractionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/SubtractionSampler.java deleted file mode 100644 index c7e69d49e..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/SubtractionSampler.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.arithmetic; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class SubtractionSampler extends BinaryArithmeticSampler { - public SubtractionSampler(NoiseSampler left, NoiseSampler right) { - super(left, right); - } - - @Override - public double operate(double left, double right) { - return left - right; - } - - @Override - public double[] operateDerivative(double[] left, double[] right) { - int dimensions = left.length; - double[] out = new double[dimensions]; - for(int i = 0; i < dimensions; i++) { - out[i] = left[i] - right[i]; - } - return out; - } -} 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 deleted file mode 100644 index 323a9d303..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java +++ /dev/null @@ -1,425 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -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; - - -/** - * NoiseSampler implementation for Cellular (Voronoi/Worley) Noise. - */ -public class CellularSampler extends NoiseFunction { - private static final double[] RAND_VECS_3D = { - -0.7292736885d, -0.6618439697d, 0.1735581948d, 0, 0.790292081d, -0.5480887466d, -0.2739291014d, 0, 0.7217578935d, 0.6226212466d, - -0.3023380997d, 0, 0.565683137d, -0.8208298145d, -0.0790000257d, 0, 0.760049034d, -0.5555979497d, -0.3370999617d, 0, - 0.3713945616d, 0.5011264475d, 0.7816254623d, 0, -0.1277062463d, -0.4254438999d, -0.8959289049d, 0, -0.2881560924d, - -0.5815838982d, 0.7607405838d, 0, 0.5849561111d, -0.662820239d, -0.4674352136d, 0, 0.3307171178d, 0.0391653737d, 0.94291689d, 0, - 0.8712121778d, -0.4113374369d, -0.2679381538d, 0, 0.580981015d, 0.7021915846d, 0.4115677815d, 0, 0.503756873d, 0.6330056931d, - -0.5878203852d, 0, 0.4493712205d, 0.601390195d, 0.6606022552d, 0, -0.6878403724d, 0.09018890807d, -0.7202371714d, 0, - -0.5958956522d, -0.6469350577d, 0.475797649d, 0, -0.5127052122d, 0.1946921978d, -0.8361987284d, 0, -0.9911507142d, - -0.05410276466d, -0.1212153153d, 0, -0.2149721042d, 0.9720882117d, -0.09397607749d, 0, -0.7518650936d, -0.5428057603d, - 0.3742469607d, 0, 0.5237068895d, 0.8516377189d, -0.02107817834d, 0, 0.6333504779d, 0.1926167129d, -0.7495104896d, 0, - -0.06788241606d, 0.3998305789d, 0.9140719259d, 0, -0.5538628599d, -0.4729896695d, -0.6852128902d, 0, -0.7261455366d, - -0.5911990757d, 0.3509933228d, 0, -0.9229274737d, -0.1782808786d, 0.3412049336d, 0, -0.6968815002d, 0.6511274338d, - 0.3006480328d, 0, 0.9608044783d, -0.2098363234d, -0.1811724921d, 0, 0.06817146062d, -0.9743405129d, 0.2145069156d, 0, - -0.3577285196d, -0.6697087264d, -0.6507845481d, 0, -0.1868621131d, 0.7648617052d, -0.6164974636d, 0, -0.6541697588d, - 0.3967914832d, 0.6439087246d, 0, 0.6993340405d, -0.6164538506d, 0.3618239211d, 0, -0.1546665739d, 0.6291283928d, 0.7617583057d, - 0, -0.6841612949d, -0.2580482182d, -0.6821542638d, 0, 0.5383980957d, 0.4258654885d, 0.7271630328d, 0, -0.5026987823d, - -0.7939832935d, -0.3418836993d, 0, 0.3202971715d, 0.2834415347d, 0.9039195862d, 0, 0.8683227101d, -0.0003762656404d, - -0.4959995258d, 0, 0.791120031d, -0.08511045745d, 0.6057105799d, 0, -0.04011016052d, -0.4397248749d, 0.8972364289d, 0, - 0.9145119872d, 0.3579346169d, -0.1885487608d, 0, -0.9612039066d, -0.2756484276d, 0.01024666929d, 0, 0.6510361721d, - -0.2877799159d, -0.7023778346d, 0, -0.2041786351d, 0.7365237271d, 0.644859585d, 0, -0.7718263711d, 0.3790626912d, 0.5104855816d, - 0, -0.3060082741d, -0.7692987727d, 0.5608371729d, 0, 0.454007341d, -0.5024843065d, 0.7357899537d, 0, 0.4816795475d, - 0.6021208291d, -0.6367380315d, 0, 0.6961980369d, -0.3222197429d, 0.641469197d, 0, -0.6532160499d, -0.6781148932d, 0.3368515753d, - 0, 0.5089301236d, -0.6154662304d, -0.6018234363d, 0, -0.1635919754d, -0.9133604627d, -0.372840892d, 0, 0.52408019d, - -0.8437664109d, 0.1157505864d, 0, 0.5902587356d, 0.4983817807d, -0.6349883666d, 0, 0.5863227872d, 0.494764745d, 0.6414307729d, - 0, 0.6779335087d, 0.2341345225d, 0.6968408593d, 0, 0.7177054546d, -0.6858979348d, 0.120178631d, 0, -0.5328819713d, - -0.5205125012d, 0.6671608058d, 0, -0.8654874251d, -0.0700727088d, -0.4960053754d, 0, -0.2861810166d, 0.7952089234d, - 0.5345495242d, 0, -0.04849529634d, 0.9810836427d, -0.1874115585d, 0, -0.6358521667d, 0.6058348682d, 0.4781800233d, 0, - 0.6254794696d, -0.2861619734d, 0.7258696564d, 0, -0.2585259868d, 0.5061949264d, -0.8227581726d, 0, 0.02136306781d, - 0.5064016808d, -0.8620330371d, 0, 0.200111773d, 0.8599263484d, 0.4695550591d, 0, 0.4743561372d, 0.6014985084d, -0.6427953014d, - 0, 0.6622993731d, -0.5202474575d, -0.5391679918d, 0, 0.08084972818d, -0.6532720452d, 0.7527940996d, 0, -0.6893687501d, - 0.0592860349d, 0.7219805347d, 0, -0.1121887082d, -0.9673185067d, 0.2273952515d, 0, 0.7344116094d, 0.5979668656d, -0.3210532909d, - 0, 0.5789393465d, -0.2488849713d, 0.7764570201d, 0, 0.6988182827d, 0.3557169806d, -0.6205791146d, 0, -0.8636845529d, - -0.2748771249d, -0.4224826141d, 0, -0.4247027957d, -0.4640880967d, 0.777335046d, 0, 0.5257722489d, -0.8427017621d, - 0.1158329937d, 0, 0.9343830603d, 0.316302472d, -0.1639543925d, 0, -0.1016836419d, -0.8057303073d, -0.5834887393d, 0, - -0.6529238969d, 0.50602126d, -0.5635892736d, 0, -0.2465286165d, -0.9668205684d, -0.06694497494d, 0, -0.9776897119d, - -0.2099250524d, -0.007368825344d, 0, 0.7736893337d, 0.5734244712d, 0.2694238123d, 0, -0.6095087895d, 0.4995678998d, - 0.6155736747d, 0, 0.5794535482d, 0.7434546771d, 0.3339292269d, 0, -0.8226211154d, 0.08142581855d, 0.5627293636d, 0, - -0.510385483d, 0.4703667658d, 0.7199039967d, 0, -0.5764971849d, -0.07231656274d, -0.8138926898d, 0, 0.7250628871d, - 0.3949971505d, -0.5641463116d, 0, -0.1525424005d, 0.4860840828d, -0.8604958341d, 0, -0.5550976208d, -0.4957820792d, - 0.667882296d, 0, -0.1883614327d, 0.9145869398d, 0.357841725d, 0, 0.7625556724d, -0.5414408243d, -0.3540489801d, 0, - -0.5870231946d, -0.3226498013d, -0.7424963803d, 0, 0.3051124198d, 0.2262544068d, -0.9250488391d, 0, 0.6379576059d, 0.577242424d, - -0.5097070502d, 0, -0.5966775796d, 0.1454852398d, -0.7891830656d, 0, -0.658330573d, 0.6555487542d, -0.3699414651d, 0, - 0.7434892426d, 0.2351084581d, 0.6260573129d, 0, 0.5562114096d, 0.8264360377d, -0.0873632843d, 0, -0.3028940016d, -0.8251527185d, - 0.4768419182d, 0, 0.1129343818d, -0.985888439d, -0.1235710781d, 0, 0.5937652891d, -0.5896813806d, 0.5474656618d, 0, - 0.6757964092d, -0.5835758614d, -0.4502648413d, 0, 0.7242302609d, -0.1152719764d, 0.6798550586d, 0, -0.9511914166d, - 0.0753623979d, -0.2992580792d, 0, 0.2539470961d, -0.1886339355d, 0.9486454084d, 0, 0.571433621d, -0.1679450851d, -0.8032795685d, - 0, -0.06778234979d, 0.3978269256d, 0.9149531629d, 0, 0.6074972649d, 0.733060024d, -0.3058922593d, 0, -0.5435478392d, - 0.1675822484d, 0.8224791405d, 0, -0.5876678086d, -0.3380045064d, -0.7351186982d, 0, -0.7967562402d, 0.04097822706d, - -0.6029098428d, 0, -0.1996350917d, 0.8706294745d, 0.4496111079d, 0, -0.02787660336d, -0.9106232682d, -0.4122962022d, 0, - -0.7797625996d, -0.6257634692d, 0.01975775581d, 0, -0.5211232846d, 0.7401644346d, -0.4249554471d, 0, 0.8575424857d, - 0.4053272873d, -0.3167501783d, 0, 0.1045223322d, 0.8390195772d, -0.5339674439d, 0, 0.3501822831d, 0.9242524096d, -0.1520850155d, - 0, 0.1987849858d, 0.07647613266d, 0.9770547224d, 0, 0.7845996363d, 0.6066256811d, -0.1280964233d, 0, 0.09006737436d, - -0.9750989929d, -0.2026569073d, 0, -0.8274343547d, -0.542299559d, 0.1458203587d, 0, -0.3485797732d, -0.415802277d, 0.840000362d, - 0, -0.2471778936d, -0.7304819962d, -0.6366310879d, 0, -0.3700154943d, 0.8577948156d, 0.3567584454d, 0, 0.5913394901d, - -0.548311967d, -0.5913303597d, 0, 0.1204873514d, -0.7626472379d, -0.6354935001d, 0, 0.616959265d, 0.03079647928d, 0.7863922953d, - 0, 0.1258156836d, -0.6640829889d, -0.7369967419d, 0, -0.6477565124d, -0.1740147258d, -0.7417077429d, 0, 0.6217889313d, - -0.7804430448d, -0.06547655076d, 0, 0.6589943422d, -0.6096987708d, 0.4404473475d, 0, -0.2689837504d, -0.6732403169d, - -0.6887635427d, 0, -0.3849775103d, 0.5676542638d, 0.7277093879d, 0, 0.5754444408d, 0.8110471154d, -0.1051963504d, 0, - 0.9141593684d, 0.3832947817d, 0.131900567d, 0, -0.107925319d, 0.9245493968d, 0.3654593525d, 0, 0.377977089d, 0.3043148782d, - 0.8743716458d, 0, -0.2142885215d, -0.8259286236d, 0.5214617324d, 0, 0.5802544474d, 0.4148098596d, -0.7008834116d, 0, - -0.1982660881d, 0.8567161266d, -0.4761596756d, 0, -0.03381553704d, 0.3773180787d, -0.9254661404d, 0, -0.6867922841d, - -0.6656597827d, 0.2919133642d, 0, 0.7731742607d, -0.2875793547d, -0.5652430251d, 0, -0.09655941928d, 0.9193708367d, - -0.3813575004d, 0, 0.2715702457d, -0.9577909544d, -0.09426605581d, 0, 0.2451015704d, -0.6917998565d, -0.6792188003d, 0, - 0.977700782d, -0.1753855374d, 0.1155036542d, 0, -0.5224739938d, 0.8521606816d, 0.02903615945d, 0, -0.7734880599d, - -0.5261292347d, 0.3534179531d, 0, -0.7134492443d, -0.269547243d, 0.6467878011d, 0, 0.1644037271d, 0.5105846203d, -0.8439637196d, - 0, 0.6494635788d, 0.05585611296d, 0.7583384168d, 0, -0.4711970882d, 0.5017280509d, -0.7254255765d, 0, -0.6335764307d, - -0.2381686273d, -0.7361091029d, 0, -0.9021533097d, -0.270947803d, -0.3357181763d, 0, -0.3793711033d, 0.872258117d, - 0.3086152025d, 0, -0.6855598966d, -0.3250143309d, 0.6514394162d, 0, 0.2900942212d, -0.7799057743d, -0.5546100667d, 0, - -0.2098319339d, 0.85037073d, 0.4825351604d, 0, -0.4592603758d, 0.6598504336d, -0.5947077538d, 0, 0.8715945488d, 0.09616365406d, - -0.4807031248d, 0, -0.6776666319d, 0.7118504878d, -0.1844907016d, 0, 0.7044377633d, 0.312427597d, 0.637304036d, 0, - -0.7052318886d, -0.2401093292d, -0.6670798253d, 0, 0.081921007d, -0.7207336136d, -0.6883545647d, 0, -0.6993680906d, - -0.5875763221d, -0.4069869034d, 0, -0.1281454481d, 0.6419895885d, 0.7559286424d, 0, -0.6337388239d, -0.6785471501d, - -0.3714146849d, 0, 0.5565051903d, -0.2168887573d, -0.8020356851d, 0, -0.5791554484d, 0.7244372011d, -0.3738578718d, 0, - 0.1175779076d, -0.7096451073d, 0.6946792478d, 0, -0.6134619607d, 0.1323631078d, 0.7785527795d, 0, 0.6984635305d, - -0.02980516237d, -0.715024719d, 0, 0.8318082963d, -0.3930171956d, 0.3919597455d, 0, 0.1469576422d, 0.05541651717d, - -0.9875892167d, 0, 0.708868575d, -0.2690503865d, 0.6520101478d, 0, 0.2726053183d, 0.67369766d, -0.68688995d, 0, -0.6591295371d, - 0.3035458599d, -0.6880466294d, 0, 0.4815131379d, -0.7528270071d, 0.4487723203d, 0, 0.9430009463d, 0.1675647412d, -0.2875261255d, - 0, 0.434802957d, 0.7695304522d, -0.4677277752d, 0, 0.3931996188d, 0.594473625d, 0.7014236729d, 0, 0.7254336655d, -0.603925654d, - 0.3301814672d, 0, 0.7590235227d, -0.6506083235d, 0.02433313207d, 0, -0.8552768592d, -0.3430042733d, 0.3883935666d, 0, - -0.6139746835d, 0.6981725247d, 0.3682257648d, 0, -0.7465905486d, -0.5752009504d, 0.3342849376d, 0, 0.5730065677d, 0.810555537d, - -0.1210916791d, 0, -0.9225877367d, -0.3475211012d, -0.167514036d, 0, -0.7105816789d, -0.4719692027d, -0.5218416899d, 0, - -0.08564609717d, 0.3583001386d, 0.929669703d, 0, -0.8279697606d, -0.2043157126d, 0.5222271202d, 0, 0.427944023d, 0.278165994d, - 0.8599346446d, 0, 0.5399079671d, -0.7857120652d, -0.3019204161d, 0, 0.5678404253d, -0.5495413974d, -0.6128307303d, 0, - -0.9896071041d, 0.1365639107d, -0.04503418428d, 0, -0.6154342638d, -0.6440875597d, 0.4543037336d, 0, 0.1074204368d, - -0.7946340692d, 0.5975094525d, 0, -0.3595449969d, -0.8885529948d, 0.28495784d, 0, -0.2180405296d, 0.1529888965d, 0.9638738118d, - 0, -0.7277432317d, -0.6164050508d, -0.3007234646d, 0, 0.7249729114d, -0.00669719484d, 0.6887448187d, 0, -0.5553659455d, - -0.5336586252d, 0.6377908264d, 0, 0.5137558015d, 0.7976208196d, -0.3160000073d, 0, -0.3794024848d, 0.9245608561d, - -0.03522751494d, 0, 0.8229248658d, 0.2745365933d, -0.4974176556d, 0, -0.5404114394d, 0.6091141441d, 0.5804613989d, 0, - 0.8036581901d, -0.2703029469d, 0.5301601931d, 0, 0.6044318879d, 0.6832968393d, 0.4095943388d, 0, 0.06389988817d, 0.9658208605d, - -0.2512108074d, 0, 0.1087113286d, 0.7402471173d, -0.6634877936d, 0, -0.713427712d, -0.6926784018d, 0.1059128479d, 0, - 0.6458897819d, -0.5724548511d, -0.5050958653d, 0, -0.6553931414d, 0.7381471625d, 0.159995615d, 0, 0.3910961323d, 0.9188871375d, - -0.05186755998d, 0, -0.4879022471d, -0.5904376907d, 0.6429111375d, 0, 0.6014790094d, 0.7707441366d, -0.2101820095d, 0, - -0.5677173047d, 0.7511360995d, 0.3368851762d, 0, 0.7858573506d, 0.226674665d, 0.5753666838d, 0, -0.4520345543d, -0.604222686d, - -0.6561857263d, 0, 0.002272116345d, 0.4132844051d, -0.9105991643d, 0, -0.5815751419d, -0.5162925989d, 0.6286591339d, 0, - -0.03703704785d, 0.8273785755d, 0.5604221175d, 0, -0.5119692504d, 0.7953543429d, -0.3244980058d, 0, -0.2682417366d, - -0.9572290247d, -0.1084387619d, 0, -0.2322482736d, -0.9679131102d, -0.09594243324d, 0, 0.3554328906d, -0.8881505545d, - 0.2913006227d, 0, 0.7346520519d, -0.4371373164d, 0.5188422971d, 0, 0.9985120116d, 0.04659011161d, -0.02833944577d, 0, - -0.3727687496d, -0.9082481361d, 0.1900757285d, 0, 0.91737377d, -0.3483642108d, 0.1925298489d, 0, 0.2714911074d, 0.4147529736d, - -0.8684886582d, 0, 0.5131763485d, -0.7116334161d, 0.4798207128d, 0, -0.8737353606d, 0.18886992d, -0.4482350644d, 0, - 0.8460043821d, -0.3725217914d, 0.3814499973d, 0, 0.8978727456d, -0.1780209141d, -0.4026575304d, 0, 0.2178065647d, - -0.9698322841d, -0.1094789531d, 0, -0.1518031304d, -0.7788918132d, -0.6085091231d, 0, -0.2600384876d, -0.4755398075d, - -0.8403819825d, 0, 0.572313509d, -0.7474340931d, -0.3373418503d, 0, -0.7174141009d, 0.1699017182d, -0.6756111411d, 0, - -0.684180784d, 0.02145707593d, -0.7289967412d, 0, -0.2007447902d, 0.06555605789d, -0.9774476623d, 0, -0.1148803697d, - -0.8044887315d, 0.5827524187d, 0, -0.7870349638d, 0.03447489231d, 0.6159443543d, 0, -0.2015596421d, 0.6859872284d, - 0.6991389226d, 0, -0.08581082512d, -0.10920836d, -0.9903080513d, 0, 0.5532693395d, 0.7325250401d, -0.396610771d, 0, - -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, - -0.8497875957d, -0.5271252623d, -0.879042592d, 0.4767432447d, -0.892300288d, -0.4514423508d, -0.379844434d, -0.9250503802d, - -0.9951650832d, 0.0982163789d, 0.7724397808d, -0.6350880136d, 0.7573283322d, -0.6530343002d, -0.9928004525d, -0.119780055d, - -0.0532665713d, 0.9985803285d, 0.9754253726d, -0.2203300762d, -0.7665018163d, 0.6422421394d, 0.991636706d, 0.1290606184d, - -0.994696838d, 0.1028503788d, -0.5379205513d, -0.84299554d, 0.5022815471d, -0.8647041387d, 0.4559821461d, -0.8899889226d, - -0.8659131224d, -0.5001944266d, 0.0879458407d, -0.9961252577d, -0.5051684983d, 0.8630207346d, 0.7753185226d, -0.6315704146d, - -0.6921944612d, 0.7217110418d, -0.5191659449d, -0.8546734591d, 0.8978622882d, -0.4402764035d, -0.1706774107d, 0.9853269617d, - -0.9353430106d, -0.3537420705d, -0.9992404798d, 0.03896746794d, -0.2882064021d, -0.9575683108d, -0.9663811329d, 0.2571137995d, - -0.8759714238d, -0.4823630009d, -0.8303123018d, -0.5572983775d, 0.05110133755d, -0.9986934731d, -0.8558373281d, -0.5172450752d, - 0.09887025282d, 0.9951003332d, 0.9189016087d, 0.3944867976d, -0.2439375892d, -0.9697909324d, -0.8121409387d, -0.5834613061d, - -0.9910431363d, 0.1335421355d, 0.8492423985d, -0.5280031709d, -0.9717838994d, -0.2358729591d, 0.9949457207d, 0.1004142068d, - 0.6241065508d, -0.7813392434d, 0.662910307d, 0.7486988212d, -0.7197418176d, 0.6942418282d, -0.8143370775d, -0.5803922158d, - 0.104521054d, -0.9945226741d, -0.1065926113d, -0.9943027784d, 0.445799684d, -0.8951327509d, 0.105547406d, 0.9944142724d, - -0.992790267d, 0.1198644477d, -0.8334366408d, 0.552615025d, 0.9115561563d, -0.4111755999d, 0.8285544909d, -0.5599084351d, - 0.7217097654d, -0.6921957921d, 0.4940492677d, -0.8694339084d, -0.3652321272d, -0.9309164803d, -0.9696606758d, 0.2444548501d, - 0.08925509731d, -0.996008799d, 0.5354071276d, -0.8445941083d, -0.1053576186d, 0.9944343981d, -0.9890284586d, 0.1477251101d, - 0.004856104961d, 0.9999882091d, 0.9885598478d, 0.1508291331d, 0.9286129562d, -0.3710498316d, -0.5832393863d, -0.8123003252d, - 0.3015207509d, 0.9534596146d, -0.9575110528d, 0.2883965738d, 0.9715802154d, -0.2367105511d, 0.229981792d, 0.9731949318d, - 0.955763816d, -0.2941352207d, 0.740956116d, 0.6715534485d, -0.9971513787d, -0.07542630764d, 0.6905710663d, -0.7232645452d, - -0.290713703d, -0.9568100872d, 0.5912777791d, -0.8064679708d, -0.9454592212d, -0.325740481d, 0.6664455681d, 0.74555369d, - 0.6236134912d, 0.7817328275d, 0.9126993851d, -0.4086316587d, -0.8191762011d, 0.5735419353d, -0.8812745759d, -0.4726046147d, - 0.9953313627d, 0.09651672651d, 0.9855650846d, -0.1692969699d, -0.8495980887d, 0.5274306472d, 0.6174853946d, -0.7865823463d, - 0.8508156371d, 0.52546432d, 0.9985032451d, -0.05469249926d, 0.1971371563d, -0.9803759185d, 0.6607855748d, -0.7505747292d, - -0.03097494063d, 0.9995201614d, -0.6731660801d, 0.739491331d, -0.7195018362d, -0.6944905383d, 0.9727511689d, 0.2318515979d, - 0.9997059088d, -0.0242506907d, 0.4421787429d, -0.8969269532d, 0.9981350961d, -0.061043673d, -0.9173660799d, -0.3980445648d, - -0.8150056635d, -0.5794529907d, -0.8789331304d, 0.4769450202d, 0.0158605829d, 0.999874213d, -0.8095464474d, 0.5870558317d, - -0.9165898907d, -0.3998286786d, -0.8023542565d, 0.5968480938d, -0.5176737917d, 0.8555780767d, -0.8154407307d, -0.5788405779d, - 0.4022010347d, -0.9155513791d, -0.9052556868d, -0.4248672045d, 0.7317445619d, 0.6815789728d, -0.5647632201d, -0.8252529947d, - -0.8403276335d, -0.5420788397d, -0.9314281527d, 0.363925262d, 0.5238198472d, 0.8518290719d, 0.7432803869d, -0.6689800195d, - -0.985371561d, -0.1704197369d, 0.4601468731d, 0.88784281d, 0.825855404d, 0.5638819483d, 0.6182366099d, 0.7859920446d, - 0.8331502863d, -0.553046653d, 0.1500307506d, 0.9886813308d, -0.662330369d, -0.7492119075d, -0.668598664d, 0.743623444d, - 0.7025606278d, 0.7116238924d, -0.5419389763d, -0.8404178401d, -0.3388616456d, 0.9408362159d, 0.8331530315d, 0.5530425174d, - -0.2989720662d, -0.9542618632d, 0.2638522993d, 0.9645630949d, 0.124108739d, -0.9922686234d, -0.7282649308d, -0.6852956957d, - 0.6962500149d, 0.7177993569d, -0.9183535368d, 0.3957610156d, -0.6326102274d, -0.7744703352d, -0.9331891859d, -0.359385508d, - -0.1153779357d, -0.9933216659d, 0.9514974788d, -0.3076565421d, -0.08987977445d, -0.9959526224d, 0.6678496916d, 0.7442961705d, - 0.7952400393d, -0.6062947138d, -0.6462007402d, -0.7631674805d, -0.2733598753d, 0.9619118351d, 0.9669590226d, -0.254931851d, - -0.9792894595d, 0.2024651934d, -0.5369502995d, -0.8436138784d, -0.270036471d, -0.9628500944d, -0.6400277131d, 0.7683518247d, - -0.7854537493d, -0.6189203566d, 0.06005905383d, -0.9981948257d, -0.02455770378d, 0.9996984141d, -0.65983623d, 0.751409442d, - -0.6253894466d, -0.7803127835d, -0.6210408851d, -0.7837781695d, 0.8348888491d, 0.5504185768d, -0.1592275245d, 0.9872419133d, - 0.8367622488d, 0.5475663786d, -0.8675753916d, -0.4973056806d, -0.2022662628d, -0.9793305667d, 0.9399189937d, 0.3413975472d, - 0.9877404807d, -0.1561049093d, -0.9034455656d, 0.4287028224d, 0.1269804218d, -0.9919052235d, -0.3819600854d, 0.924178821d, - 0.9754625894d, 0.2201652486d, -0.3204015856d, -0.9472818081d, -0.9874760884d, 0.1577687387d, 0.02535348474d, -0.9996785487d, - 0.4835130794d, -0.8753371362d, -0.2850799925d, -0.9585037287d, -0.06805516006d, -0.99768156d, -0.7885244045d, -0.6150034663d, - 0.3185392127d, -0.9479096845d, 0.8880043089d, 0.4598351306d, 0.6476921488d, -0.7619021462d, 0.9820241299d, 0.1887554194d, - 0.9357275128d, -0.3527237187d, -0.8894895414d, 0.4569555293d, 0.7922791302d, 0.6101588153d, 0.7483818261d, 0.6632681526d, - -0.7288929755d, -0.6846276581d, 0.8729032783d, -0.4878932944d, 0.8288345784d, 0.5594937369d, 0.08074567077d, 0.9967347374d, - 0.9799148216d, -0.1994165048d, -0.580730673d, -0.8140957471d, -0.4700049791d, -0.8826637636d, 0.2409492979d, 0.9705377045d, - 0.9437816757d, -0.3305694308d, -0.8927998638d, -0.4504535528d, -0.8069622304d, 0.5906030467d, 0.06258973166d, 0.9980393407d, - -0.9312597469d, 0.3643559849d, 0.5777449785d, 0.8162173362d, -0.3360095855d, -0.941858566d, 0.697932075d, -0.7161639607d, - -0.002008157227d, -0.9999979837d, -0.1827294312d, -0.9831632392d, -0.6523911722d, 0.7578824173d, -0.4302626911d, -0.9027037258d, - -0.9985126289d, -0.05452091251d, -0.01028102172d, -0.9999471489d, -0.4946071129d, 0.8691166802d, -0.2999350194d, 0.9539596344d, - 0.8165471961d, 0.5772786819d, 0.2697460475d, 0.962931498d, -0.7306287391d, -0.6827749597d, -0.7590952064d, -0.6509796216d, - -0.907053853d, 0.4210146171d, -0.5104861064d, -0.8598860013d, 0.8613350597d, 0.5080373165d, 0.5007881595d, -0.8655698812d, - -0.654158152d, 0.7563577938d, -0.8382755311d, -0.545246856d, 0.6940070834d, 0.7199681717d, 0.06950936031d, 0.9975812994d, - 0.1702942185d, -0.9853932612d, 0.2695973274d, 0.9629731466d, 0.5519612192d, -0.8338697815d, 0.225657487d, -0.9742067022d, - 0.4215262855d, -0.9068161835d, 0.4881873305d, -0.8727388672d, -0.3683854996d, -0.9296731273d, -0.9825390578d, 0.1860564427d, - 0.81256471d, 0.5828709909d, 0.3196460933d, -0.9475370046d, 0.9570913859d, 0.2897862643d, -0.6876655497d, -0.7260276109d, - -0.9988770922d, -0.047376731d, -0.1250179027d, 0.992154486d, -0.8280133617d, 0.560708367d, 0.9324863769d, -0.3612051451d, - 0.6394653183d, 0.7688199442d, -0.01623847064d, -0.9998681473d, -0.9955014666d, -0.09474613458d, -0.81453315d, 0.580117012d, - 0.4037327978d, -0.9148769469d, 0.9944263371d, 0.1054336766d, -0.1624711654d, 0.9867132919d, -0.9949487814d, -0.100383875d, - -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; - - private boolean saltLookup; - - 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; - } - - public void setSaltLookup(boolean saltLookup) { - this.saltLookup = saltLookup; - } - - @Override - public double getNoiseRaw(long sl, double x, double y) { - int seed = (int) sl; - int xr = (int) Math.round(x); - int yr = (int) Math.round(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; - - double centerX = x; - double centerY = y; - - 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 = switch(distanceFunction) { - case Manhattan -> Math.abs(vecX) + Math.abs(vecY); - case Hybrid -> (Math.abs(vecX) + Math.abs(vecY)) + (vecX * vecX + vecY * vecY); - default -> vecX * vecX + vecY * vecY; - }; - - distance1 = Math.max(Math.min(distance1, newDistance), distance0); - if(newDistance < distance0) { - distance0 = newDistance; - closestHash = hash; - centerX = ((xi + RAND_VECS_2D[idx] * cellularJitter) / frequency); - centerY = ((yi + RAND_VECS_2D[idx | 1] * cellularJitter) / frequency); - } else if(newDistance < distance1) { - distance2 = distance1; - distance1 = newDistance; - } else if(newDistance < distance2) { - distance2 = newDistance; - } - yPrimed += PRIME_Y; - } - xPrimed += PRIME_X; - } - - if(distanceFunction == DistanceFunction.Euclidean && returnType != ReturnType.CellValue) { - distance0 = Math.sqrt(distance0); - - if (returnType != ReturnType.Distance) { - distance1 = Math.sqrt(distance1); - } - } - - return switch(returnType) { - case CellValue -> closestHash * (1 / 2147483648.0); - case Distance -> distance0 - 1; - case Distance2 -> distance1 - 1; - case Distance2Add -> (distance1 + distance0) * 0.5 - 1; - case Distance2Sub -> distance1 - distance0 - 1; - case Distance2Mul -> distance1 * distance0 * 0.5 - 1; - case Distance2Div -> distance0 / distance1 - 1; - case NoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), centerX, centerY); - case LocalNoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), x / frequency - centerX, y / frequency - centerY); - case Distance3 -> distance2 - 1; - case Distance3Add -> (distance2 + distance0) * 0.5 - 1; - case Distance3Sub -> distance2 - distance0 - 1; - case Distance3Mul -> distance2 * distance0 - 1; - case Distance3Div -> distance0 / distance2 - 1; - case Angle -> Math.atan2(y / frequency - centerY, x / frequency - centerX); - }; - } - - @Override - public double getNoiseRaw(long sl, double x, double y, double z) { - int seed = (int) sl; - int xr = (int) Math.round(x); - int yr = (int) Math.round(y); - int zr = (int) Math.round(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; - - double centerX = x; - double centerY = y; - double centerZ = z; - - 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 = 0; - switch(distanceFunction) { - case Euclidean, EuclideanSq -> newDistance = vecX * vecX + vecY * vecY + vecZ * vecZ; - case Manhattan -> newDistance = Math.abs(vecX) + Math.abs(vecY) + Math.abs(vecZ); - case Hybrid -> { - newDistance = (Math.abs(vecX) + Math.abs(vecY) + Math.abs(vecZ)) + (vecX * vecX + vecY * vecY + vecZ * vecZ); - distance1 = Math.max(Math.min(distance1, newDistance), distance0); - } - } - - if(newDistance < distance0) { - distance0 = newDistance; - closestHash = hash; - centerX = ((xi + RAND_VECS_3D[idx] * cellularJitter) / frequency); - centerY = ((yi + RAND_VECS_3D[idx | 1] * cellularJitter) / frequency); - centerZ = ((zi + RAND_VECS_3D[idx | 2] * cellularJitter) / frequency); - } else if(newDistance < distance1) { - distance2 = distance1; - distance1 = newDistance; - } else if(newDistance < distance2) { - distance2 = newDistance; - } - zPrimed += PRIME_Z; - } - yPrimed += PRIME_Y; - } - xPrimed += PRIME_X; - } - - if(distanceFunction == DistanceFunction.Euclidean && returnType != ReturnType.CellValue) { - distance0 = Math.sqrt(distance0); - - if (returnType != ReturnType.Distance) { - distance1 = Math.sqrt(distance1); - } - } - - return switch(returnType) { - case CellValue -> closestHash * (1 / 2147483648.0); - case Distance -> distance0 - 1; - case Distance2 -> distance1 - 1; - case Distance2Add -> (distance1 + distance0) * 0.5 - 1; - case Distance2Sub -> distance1 - distance0 - 1; - case Distance2Mul -> distance1 * distance0 * 0.5 - 1; - case Distance2Div -> distance0 / distance1 - 1; - case NoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), centerX, centerY, centerZ); - case LocalNoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), x / frequency - centerX, y / frequency - centerY, - z / frequency - centerZ); - case Distance3 -> distance2 - 1; - case Distance3Add -> (distance2 + distance0) * 0.5 - 1; - case Distance3Sub -> distance2 - distance0 - 1; - case Distance3Mul -> distance2 * distance0 - 1; - case Distance3Div -> distance0 / distance2 - 1; - case Angle -> Math.atan2(y / frequency - centerY, x / frequency - centerX); - }; - } - - public enum DistanceFunction { - Euclidean, - EuclideanSq, - Manhattan, - Hybrid - } - - - public enum ReturnType { - CellValue, - Distance, - Distance2, - Distance2Add, - Distance2Sub, - Distance2Mul, - Distance2Div, - NoiseLookup, - LocalNoiseLookup, - Distance3, - Distance3Add, - Distance3Sub, - Distance3Mul, - Distance3Div, - Angle - } -} 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 deleted file mode 100644 index 19430d232..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise; - -/** - * Sampler3D implementation that returns a constant. - */ -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/DerivativeNoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/DerivativeNoiseFunction.java deleted file mode 100644 index 0d654eb64..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/DerivativeNoiseFunction.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise; - -import com.dfsek.terra.api.noise.DerivativeNoiseSampler; - - -public abstract class DerivativeNoiseFunction extends NoiseFunction implements DerivativeNoiseSampler { - @Override - public boolean isDifferentiable() { - return true; - } - - @Override - public double[] noised(long seed, double x, double y) { - return getNoiseDerivativeRaw(seed + salt, x * frequency, y * frequency); - } - - @Override - public double[] noised(long seed, double x, double y, double z) { - return getNoiseDerivativeRaw(seed + salt, x * frequency, y * frequency, z * frequency); - } - - public abstract double[] getNoiseDerivativeRaw(long seed, double x, double y); - - public abstract double[] getNoiseDerivativeRaw(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/DistanceSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/DistanceSampler.java deleted file mode 100644 index 0cc9087b4..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/DistanceSampler.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise; - - -public class DistanceSampler extends NoiseFunction { - - private final DistanceFunction distanceFunction; - private final double ox, oy, oz; - private final boolean normalize; - private final double radius; - - private final double distanceAtRadius; - - public DistanceSampler(DistanceFunction distanceFunction, double ox, double oy, double oz, boolean normalize, double radius) { - frequency = 1; - this.distanceFunction = distanceFunction; - this.ox = ox; - this.oy = oy; - this.oz = oz; - this.normalize = normalize; - this.radius = radius; - this.distanceAtRadius = distance2d(distanceFunction, radius, 0); // distance2d and distance3d should return the same value - } - - private static double distance2d(DistanceFunction distanceFunction, double x, double z) { - return switch(distanceFunction) { - case Euclidean -> Math.sqrt(x * x + z * z); - case EuclideanSq -> x * x + z * z; - case Manhattan -> Math.abs(x) + Math.abs(z); - }; - } - - private static double distance3d(DistanceFunction distanceFunction, double x, double y, double z) { - return switch(distanceFunction) { - case Euclidean -> Math.sqrt(x * x + y * y + z * z); - case EuclideanSq -> x * x + y * y + z * z; - case Manhattan -> Math.abs(x) + Math.abs(y) + Math.abs(z); - }; - } - - @Override - public double getNoiseRaw(long seed, double x, double y) { - double dx = x - ox; - double dy = y - oz; - if(normalize && (Math.abs(dx) > radius || Math.abs(dy) > radius)) return 1; - double dist = distance2d(distanceFunction, dx, dy); - if(normalize) return Math.min(((2 * dist) / distanceAtRadius) - 1, 1); - return dist; - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - double dx = x - ox; - double dy = y - oy; - double dz = z - oz; - if(normalize && (Math.abs(dx) > radius || Math.abs(dy) > radius || Math.abs(dz) > radius)) return 1; - double dist = distance3d(distanceFunction, dx, dy, dz); - if(normalize) return Math.min(((2 * dist) / distanceAtRadius) - 1, 1); - return dist; - } - - public enum DistanceFunction { - Euclidean, - EuclideanSq, - Manhattan - } -} 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 deleted file mode 100644 index 08212025d..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise; - -import com.dfsek.paralithic.Expression; -import com.dfsek.paralithic.eval.parser.Parser; -import com.dfsek.paralithic.eval.parser.Parser.ParseOptions; -import com.dfsek.paralithic.eval.parser.Scope; -import com.dfsek.paralithic.eval.tokenizer.ParseException; -import com.dfsek.paralithic.functions.Function; - -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, ParseOptions parseOptions) throws ParseException { - Parser p = new Parser(parseOptions); - 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 deleted file mode 100644 index c285203b1..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise; - -import com.dfsek.terra.addons.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.api.util.MathUtil; - - -public class GaborNoiseSampler extends NoiseFunction { - private final WhiteNoiseSampler rand; - private double k = 1.0; - private double a = 0.1; - private double f0 = 0.625; - private double kernelRadius = (Math.sqrt(-Math.log(0.05) / Math.PI) / a); - private double impulsesPerKernel = 64d; - private double impulseDensity = (impulsesPerKernel / (Math.PI * kernelRadius * kernelRadius)); - private double impulsesPerCell = impulseDensity * kernelRadius * kernelRadius; - private double g = Math.exp(-impulsesPerCell); - private double omega0 = Math.PI * 0.25; - private boolean isotropic = true; - - - public GaborNoiseSampler() { - rand = new WhiteNoiseSampler(); - } - - private void recalculateRadiusAndDensity() { - kernelRadius = (Math.sqrt(-Math.log(0.05) / Math.PI) / this.a); - impulseDensity = (impulsesPerKernel / (Math.PI * kernelRadius * kernelRadius)); - impulsesPerCell = impulseDensity * kernelRadius * kernelRadius; - g = Math.exp(-impulsesPerCell); - } - - private double gaborNoise(long seed, double x, double y) { - x /= kernelRadius; - y /= kernelRadius; - int xi = (int) Math.floor(x); - int yi = (int) Math.floor(y); - double xf = x - xi; - double yf = y - yi; - double noise = 0; - for(int dx = -1; dx <= 1; dx++) { - for(int dz = -1; dz <= 1; dz++) { - noise += calculateCell(seed, xi + dx, yi + dz, xf - dx, yf - dz); - } - } - return noise; - } - - private double calculateCell(long seed, int xi, int yi, double x, double y) { - long mashedSeed = MathUtil.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); - } - return noise; - } - - private double gabor(double omega_0, double x, double y) { - return k * (Math.exp(-Math.PI * (a * a) * (x * x + y * y)) * MathUtil.cos(2 * Math.PI * f0 * (x * MathUtil.cos(omega_0) + - y * MathUtil.sin( - 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 deleted file mode 100644 index 49635ef52..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public abstract class NoiseFunction implements NoiseSampler { - // Hashing - protected static final int PRIME_X = 501125321; - protected static final int PRIME_Y = 1136930381; - protected static final int PRIME_Z = 1720413743; - - protected double frequency = 0.02d; - protected long salt; - - public NoiseFunction() { - this.salt = 0; - } - - 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; - } - - public void setSalt(long salt) { - this.salt = salt; - } - - public double getFrequency() { - return frequency; - } - - public void setFrequency(double frequency) { - this.frequency = frequency; - } - - @Override - public double noise(long seed, double x, double y) { - return getNoiseRaw(seed + salt, x * frequency, y * frequency); - } - - @Override - public double noise(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/PseudoErosionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/PseudoErosionSampler.java deleted file mode 100644 index ecb566ca7..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/PseudoErosionSampler.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise; - - -import com.dfsek.terra.api.noise.DerivativeNoiseSampler; -import com.dfsek.terra.api.util.MathUtil; - - -public class PseudoErosionSampler extends NoiseFunction { - public static final double TAU = 2.0 * Math.PI; - private static final double HASH_X = 0.3183099f; - private static final double HASH_Y = 0.3678794f; - public final double gain; - public final double lacunarity; - public final double slopeStrength; - public final double branchStrength; - public final double erosionStrength; - private final int octaves; - private final double erosionFrequency; - private final DerivativeNoiseSampler sampler; - private final boolean slopeMask; - private final double slopeMaskFullSq; - private final double slopeMaskNoneSq; - private final double jitter; - private final double maxCellDistSq; - private final double maxCellDistSqRecip; - private final boolean averageErosionImpulses; - - public PseudoErosionSampler(int octaves, double gain, double lacunarity, double slopeStrength, double branchStrength, - double erosionStrength, double erosionFrequency, DerivativeNoiseSampler sampler, - boolean slopeMask, double slopeMaskFull, double slopeMaskNone, double jitterModifier, - boolean averageErosionImpulses) { - this.octaves = octaves; - this.gain = gain; - this.lacunarity = lacunarity; - this.slopeStrength = slopeStrength; - this.branchStrength = branchStrength; - this.erosionStrength = erosionStrength; - this.erosionFrequency = erosionFrequency; - this.sampler = sampler; - this.slopeMask = slopeMask; - // Square these values and maintain sign since they're compared to a - // squared value, otherwise a sqrt would need to be used - this.slopeMaskFullSq = slopeMaskFull * slopeMaskFull * Math.signum(slopeMaskFull); - this.slopeMaskNoneSq = slopeMaskNone * slopeMaskNone * Math.signum((slopeMaskNone)); - this.jitter = 0.43701595 * jitterModifier; - this.averageErosionImpulses = averageErosionImpulses; - this.maxCellDistSq = 1 + jitter * jitter; - this.maxCellDistSqRecip = 1 / maxCellDistSq; - } - - public static double hashX(double seed, double n) { - // Swapped the components here - double nx = HASH_X * n * seed; - return -1.0f + 2.0f * fract(nx); - } - - public static double hashY(double seed, double n) { - double ny = HASH_Y * n * seed; - return -1.0f + 2.0f * fract(ny); - } - - public static double fract(double x) { - return (x - Math.floor(x)); - } - - public static double smoothstep(double edge0, double edge1, double x) { - // Scale, bias and saturate x to 0..1 range - x = clamp((x - edge0) / (edge1 - edge0), 0.0f, 1.0f); - // Evaluate polynomial - return x * x * (3 - 2 * x); - } - - public static double clamp(double x, double minVal, double maxVal) { - return Math.max(minVal, Math.min(maxVal, x)); - } - - public static double dot(double x1, double y1, double x2, double y2) { - return x1 * x2 + y1 * y2; - } - - public double[] erosion(int seed, double x, double y, double dirX, double dirY) { - int gridX = (int) Math.round(x); - int gridY = (int) Math.round(y); - double noise = 0.0f; - double dirOutX = 0.0f; - double dirOutY = 0.0f; - double cumAmp = 0.0f; - - for(int cellX = gridX - 1; cellX <= gridX + 1; cellX++) { - for(int cellY = gridY - 1; cellY <= gridY + 1; cellY++) { - double cellHash = hash(seed, cellX, cellY); - double cellOffsetX = hashX(seed, cellHash) * jitter; - double cellOffsetY = hashY(seed, cellHash) * jitter; - double cellOriginDeltaX = (x - cellX) + cellOffsetX; - double cellOriginDeltaY = (y - cellY) + cellOffsetY; - double cellOriginDistSq = cellOriginDeltaX * cellOriginDeltaX + cellOriginDeltaY * cellOriginDeltaY; - if(cellOriginDistSq > maxCellDistSq) continue; // Skip calculating cells too far away - double ampTmp = (cellOriginDistSq * maxCellDistSqRecip) - 1; - double amp = ampTmp * ampTmp; // Decrease cell amplitude further away - cumAmp += amp; - double directionalStrength = dot(cellOriginDeltaX, cellOriginDeltaY, dirX, dirY) * TAU; - noise += MathUtil.cos(directionalStrength) * amp; - double sinAngle = MathUtil.sin(directionalStrength) * amp; - dirOutX -= sinAngle * (cellOriginDeltaX + dirX); - dirOutY -= sinAngle * (cellOriginDeltaY + dirY); - } - } - if(averageErosionImpulses && cumAmp != 0) { - noise /= cumAmp; - dirOutX /= cumAmp; - dirOutY /= cumAmp; - } - return new double[]{ noise, dirOutX, dirOutY }; - } - - public double heightMap(long seed, double x, double y) { - double[] sample = sampler.noised(seed, x, y); - double height = sample[0]; - double heightDirX = sample[1]; - double heightDirY = sample[2]; - - // Take the curl of the normal to get the gradient facing down the slope - double baseDirX = heightDirY * slopeStrength; - double baseDirY = -heightDirX * slopeStrength; - - double erosion = 0.0f; - double dirX = 0.0f; - double dirY = 0.0f; - double amp = 1.0f; - double cumAmp = 0.0f; - double freq = 1.0f; - - // Stack erosion octaves - for(int i = 0; i < octaves; i++) { - double[] erosionResult = erosion((int) seed, - x * freq * erosionFrequency, - y * freq * erosionFrequency, - baseDirX + dirY * branchStrength, - baseDirY - dirX * branchStrength); - erosion += erosionResult[0] * amp; - dirX += erosionResult[1] * amp * freq; - dirY += erosionResult[2] * amp * freq; - cumAmp += amp; - amp *= gain; - freq *= lacunarity; - } - - // Normalize erosion noise - erosion /= cumAmp; - // [-1, 1] -> [0, 1] - erosion = erosion * 0.5F + 0.5F; - - // Without masking, erosion noise in areas with small gradients tend to produce mounds, - // this reduces erosion amplitude towards smaller gradients to avoid this - if(slopeMask) { - double dirMagSq = dot(baseDirX, baseDirY, baseDirX, baseDirY); - double flatness = smoothstep((double) slopeMaskNoneSq, slopeMaskFullSq, dirMagSq); - erosion *= flatness; - } - - return height + erosion * erosionStrength; - } - - @Override - public double getNoiseRaw(long seed, double x, double y) { - return heightMap(seed, x, y); - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - return getNoiseRaw(seed, x, z); - } -} \ No newline at end of file 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 deleted file mode 100644 index 26884bcdd..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.fractal; - -import com.dfsek.terra.api.noise.DerivativeNoiseSampler; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; - - -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.noise(seed++, x, y); - sum += noise * amp; - amp *= MathUtil.lerp(weightedStrength, 1.0, Math.min(noise + 1, 2) * 0.5); - - 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.noise(seed++, x, y, z); - sum += noise * amp; - amp *= MathUtil.lerp(weightedStrength, 1.0, (noise + 1) * 0.5); - - x *= lacunarity; - y *= lacunarity; - z *= lacunarity; - amp *= gain; - } - - return sum; - } - - @Override - public boolean isDifferentiable() { - return DerivativeNoiseSampler.isDifferentiable(input); - } - - @Override - public double[] getNoiseDerivativeRaw(long seed, double x, double y) { - double[] sum = {0, 0, 0}; - double amp = fractalBounding; - - for(int i = 0; i < octaves; i++) { - // This should only be called after `input` is verified as a `DerivativeNoiseSampler` - // so this should be a safe cast - double[] noise = ((DerivativeNoiseSampler) input).noised(seed++, x, y); - sum[0] += noise[0] * amp; - - // Directional derivative of each octave can be subject to the same addition and product - // as per derivative sum and product rules in order to produce the correct final derivative - sum[1] += noise[1] * amp; - sum[2] += noise[2] * amp; - - amp *= MathUtil.lerp(weightedStrength, 1.0, Math.min(noise[0] + 1, 2) * 0.5); - - x *= lacunarity; - y *= lacunarity; - amp *= gain; - } - - return sum; - } - - @Override - public double[] getNoiseDerivativeRaw(long seed, double x, double y, double z) { - double[] sum = {0, 0, 0, 0}; - double amp = fractalBounding; - - for(int i = 0; i < octaves; i++) { - double[] noise = ((DerivativeNoiseSampler) input).noised(seed++, x, y, z); - sum[0] += noise[0] * amp; - - // See comment in 2D version - sum[1] += noise[1] * amp; - sum[2] += noise[2] * amp; - sum[3] += noise[3] * amp; - - amp *= MathUtil.lerp(weightedStrength, 1.0, (noise[0] + 1) * 0.5); - - 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 deleted file mode 100644 index 49e5365da..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.fractal; - -import com.dfsek.terra.addons.noise.samplers.noise.DerivativeNoiseFunction; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public abstract class FractalNoiseFunction extends DerivativeNoiseFunction { - protected final NoiseSampler input; - protected double fractalBounding = 1 / 1.75; - protected int octaves = 3; - protected double gain = 0.5; - protected double lacunarity = 2.0d; - protected double weightedStrength = 0.0d; - - public FractalNoiseFunction(NoiseSampler input) { - this.input = input; - frequency = 1; - } - - protected void calculateFractalBounding() { - double gain = Math.abs(this.gain); - double amp = gain; - double ampFractal = 1.0; - for(int i = 1; i < octaves; i++) { - ampFractal += amp; - amp *= gain; - } - fractalBounding = 1 / ampFractal; - } - - 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; - } - - @Override - public boolean isDifferentiable() { - return false; - } - - @Override - public double[] getNoiseDerivativeRaw(long seed, double x, double y) { - throw new UnsupportedOperationException("Implementation failed to check or set isDifferentiable correctly"); - } - - @Override - public double[] getNoiseDerivativeRaw(long seed, double x, double y, double z) { - throw new UnsupportedOperationException("Implementation failed to check or set isDifferentiable correctly"); - } -} 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 deleted file mode 100644 index 9c4206bb1..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.fractal; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; - - -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.noise(seed++, x, y) + 1) * pingPongStrength); - sum += (noise - 0.5) * 2 * amp; - amp *= MathUtil.lerp(weightedStrength, 1.0, noise); - - 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.noise(seed++, x, y, z) + 1) * pingPongStrength); - sum += (noise - 0.5) * 2 * amp; - amp *= MathUtil.lerp(weightedStrength, 1.0, noise); - - 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 deleted file mode 100644 index fb42b2edc..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.fractal; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; - - -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 = Math.abs(input.noise(seed++, x, y)); - sum += (noise * -2 + 1) * amp; - amp *= MathUtil.lerp(weightedStrength, 1.0, 1 - noise); - - 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 = Math.abs(input.noise(seed++, x, y, z)); - sum += (noise * -2 + 1) * amp; - amp *= MathUtil.lerp(weightedStrength, 1.0, 1 - noise); - - 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 deleted file mode 100644 index bdc7ce8b9..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -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; - do { - v1 = whiteNoiseSampler.noise(seed++, x, y); - v2 = whiteNoiseSampler.noise(seed++, x, y); - s = v1 * v1 + v2 * v2; - } while(s >= 1 || s == 0); - 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; - do { - v1 = whiteNoiseSampler.noise(seed++, x, y, z); - v2 = whiteNoiseSampler.noise(seed++, x, y, z); - s = v1 * v1 + v2 * v2; - } while(s >= 1 || s == 0); - double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s) / s); - return v1 * multiplier; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/PositiveWhiteNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/PositiveWhiteNoiseSampler.java deleted file mode 100644 index dc35b0031..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/PositiveWhiteNoiseSampler.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.random; - -import com.dfsek.terra.api.util.MathUtil; - - -/** - * NoiseSampler implementation to produce random, uniformly distributed (white) noise. - */ -public class PositiveWhiteNoiseSampler extends WhiteNoiseSampler { - 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 double getNoiseRaw(long seed) { - return (Double.longBitsToDouble((MathUtil.murmur64(seed) & 0x000fffffffffffffL) | POSITIVE_POW1) - 1.5) * 2; - } - - @Override - public double getNoiseRaw(long seed, double x, double y) { - return (getNoiseUnmapped(seed, x, y) - 1); - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - return (getNoiseUnmapped(seed, x, y, z) - 1); - } -} 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 deleted file mode 100644 index 06351c91a..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.random; - -import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; -import com.dfsek.terra.api.util.MathUtil; - - -/** - * 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. - - public WhiteNoiseSampler() { - } - - 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 MathUtil.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 MathUtil.murmur64(hash); - } - - public double getNoiseRaw(long seed) { - return (Double.longBitsToDouble((MathUtil.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 deleted file mode 100644 index 94ef01287..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java +++ /dev/null @@ -1,699 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.simplex; - -/** - * NoiseSampler implementation to provide OpenSimplex2 (Smooth Variant) noise. - */ -public class OpenSimplex2SSampler extends SimplexStyleSampler { - @Override - @SuppressWarnings("NumericOverflow") - 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 = (int) Math.floor(x); - int j = (int) Math.floor(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) { - if(xi + xmyi > 1) { - double x2 = x0 + (3 * G2 - 2); - double y2 = y0 + (3 * G2 - 1); - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i + (PRIME_X << 1), j + PRIME_Y, x2, y2); - } - } else { - double x2 = x0 + G2; - double y2 = y0 + (G2 - 1); - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - 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); - double a3 = (2.0 / 3.0) - x3 * x3 - y3 * y3; - if(a3 > 0) { - value += (a3 * a3) * (a3 * a3) * gradCoord(seed, i + PRIME_X, j + (PRIME_Y << 1), x3, y3); - } - } else { - double x3 = x0 + (G2 - 1); - double y3 = y0 + G2; - double a3 = (2.0 / 3.0) - x3 * x3 - y3 * y3; - if(a3 > 0) { - value += (a3 * a3) * (a3 * a3) * gradCoord(seed, i + PRIME_X, j, x3, y3); - } - } - } else { - if(xi + xmyi < 0) { - double x2 = x0 + (1 - G2); - double y2 = y0 - G2; - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i - PRIME_X, j, x2, y2); - } - } else { - double x2 = x0 + (G2 - 1); - double y2 = y0 + G2; - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - 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); - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i, j - PRIME_Y, x2, y2); - } - } else { - double x2 = x0 + G2; - double y2 = y0 + (G2 - 1); - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i, j + PRIME_Y, x2, y2); - } - } - } - - return value * 18.24196194486065; - } - - @Override - @SuppressWarnings("NumericOverflow") - 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 - x = r - x; - y = r - y; - z = r - z; - - - int i = (int) Math.floor(x); - int j = (int) Math.floor(y); - int k = (int) Math.floor(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 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); - } 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); - } - - double a4 = xAFlipMask1 + a1; - if(a4 > 0) { - double x4 = (xNMask | 1) + x1; - value += (a4 * a4) * (a4 * a4) * gradCoord(seed2, i + (xNMask & (PRIME_X << 1)), j + PRIME_Y, k + PRIME_Z, x4, y1, z1); - 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); - } 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); - } - - double a8 = yAFlipMask1 + a1; - if(a8 > 0) { - double y8 = (yNMask | 1) + y1; - value += (a8 * a8) * (a8 * a8) * gradCoord(seed2, i + PRIME_X, j + (yNMask & (PRIME_Y << 1)), k + PRIME_Z, x1, y8, z1); - 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); - } 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); - } - - double aC = zAFlipMask1 + a1; - if(aC > 0) { - double zC = (zNMask | 1) + z1; - value += (aC * aC) * (aC * aC) * gradCoord(seed2, i + PRIME_X, j + PRIME_Y, k + (zNMask & (PRIME_Z << 1)), x1, y1, zC); - 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); - } - } - - 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); - } - } - - 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); - } - } - - return value * 9.046026385208288; - } - - @Override - public boolean isDifferentiable() { - return true; - } - - @Override - public double[] getNoiseDerivativeRaw(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 = (int) Math.floor(x); - int j = (int) Math.floor(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[] out = { 0.0f, 0.0f, 0.0f }; - - double a0 = (2.0 / 3.0) - x0 * x0 - y0 * y0; - double aa0 = a0 * a0, aaa0 = aa0 * a0, aaaa0 = aa0 * aa0; - int gi0 = gradCoordIndex(seed, i, j); - double gx0 = GRADIENTS_2_D[gi0], gy0 = GRADIENTS_2_D[gi0 | 1]; - double rampValue0 = gx0 * x0 + gy0 * y0; - out[0] = aaaa0 * rampValue0; - out[1] = gx0 * aaaa0 - 8 * rampValue0 * aaa0 * x0; - out[2] = gy0 * aaaa0 - 8 * rampValue0 * aaa0 * 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); - double aa1 = a1 * a1, aaa1 = aa1 * a1, aaaa1 = aa1 * aa1; - int gi1 = gradCoordIndex(seed, i1, j1); - double gx1 = GRADIENTS_2_D[gi1], gy1 = GRADIENTS_2_D[gi1 | 1]; - double rampValue1 = gx1 * x1 + gy1 * y1; - out[0] += aaaa1 * rampValue1; - out[1] += gx1 * aaaa1 - 8 * rampValue1 * aaa1 * x1; - out[2] += gy1 * aaaa1 - 8 * rampValue1 * aaa1 * y1; - - // Nested conditionals were faster than compact bit logic/arithmetic. - double xmyi = xi - yi; - if(t > G2) { - if(xi + xmyi > 1) { - double x2 = x0 + (3 * G2 - 2); - double y2 = y0 + (3 * G2 - 1); - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - double aa2 = a2 * a2, aaa2 = aa2 * a2, aaaa2 = aa2 * aa2; - int gi2 = gradCoordIndex(seed, i + (PRIME_X << 1), j + PRIME_Y); - double gx2 = GRADIENTS_2_D[gi2 | 0], gy2 = GRADIENTS_2_D[gi2 | 1]; - double rampValue2 = gx2 * x2 + gy2 * y2; - out[0] += aaaa2 * rampValue2; - out[1] += gx2 * aaaa2 - 8 * rampValue2 * aaa2 * x2; - out[2] += gy2 * aaaa2 - 8 * rampValue2 * aaa2 * y2; - } - } else { - double x2 = x0 + G2; - double y2 = y0 + (G2 - 1); - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - double aa2 = a2 * a2, aaa2 = aa2 * a2, aaaa2 = aa2 * aa2; - int gi2 = gradCoordIndex(seed, i, j + PRIME_Y); - double gx2 = GRADIENTS_2_D[gi2], gy2 = GRADIENTS_2_D[gi2 | 1]; - double rampValue2 = gx2 * x2 + gy2 * y2; - out[0] += aaaa2 * rampValue2; - out[1] += gx2 * aaaa2 - 8 * rampValue2 * aaa2 * x2; - out[2] += gy2 * aaaa2 - 8 * rampValue2 * aaa2 * y2; - } - } - - if(yi - xmyi > 1) { - double x3 = x0 + (3 * G2 - 1); - double y3 = y0 + (3 * G2 - 2); - double a3 = (2.0 / 3.0) - x3 * x3 - y3 * y3; - if(a3 > 0) { - double aa3 = a3 * a3, aaa3 = aa3 * a3, aaaa3 = aa3 * aa3; - int gi3 = gradCoordIndex(seed, i + PRIME_X, j + (PRIME_Y << 1)); - double gx3 = GRADIENTS_2_D[gi3], gy3 = GRADIENTS_2_D[gi3 | 1]; - double rampValue3 = gx3 * x3 + gy3 * y3; - out[0] += aaaa3 * rampValue3; - out[1] += gx3 * aaaa3 - 8 * rampValue3 * aaa3 * x3; - out[2] += gy3 * aaaa3 - 8 * rampValue3 * aaa3 * y3; - } - } else { - double x3 = x0 + (G2 - 1); - double y3 = y0 + G2; - double a3 = (2.0 / 3.0) - x3 * x3 - y3 * y3; - if(a3 > 0) { - double aa3 = a3 * a3, aaa3 = aa3 * a3, aaaa3 = aa3 * aa3; - int gi3 = gradCoordIndex(seed, i + PRIME_X, j); - double gx3 = GRADIENTS_2_D[gi3], gy3 = GRADIENTS_2_D[gi3 | 1]; - double rampValue3 = gx3 * x3 + gy3 * y3; - out[0] += aaaa3 * rampValue3; - out[1] += gx3 * aaaa3 - 8 * rampValue3 * aaa3 * x3; - out[2] += gy3 * aaaa3 - 8 * rampValue3 * aaa3 * y3; - } - } - } else { - if(xi + xmyi < 0) { - double x2 = x0 + (1 - G2); - double y2 = y0 - G2; - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - double aa2 = a2 * a2, aaa2 = aa2 * a2, aaaa2 = aa2 * aa2; - int gi2 = gradCoordIndex(seed, i - PRIME_X, j); - double gx2 = GRADIENTS_2_D[gi2], gy2 = GRADIENTS_2_D[gi2 | 1]; - double rampValue2 = gx2 * x2 + gy2 * y2; - out[0] += aaaa2 * rampValue2; - out[1] += gx2 * aaaa2 - 8 * rampValue2 * aaa2 * x2; - out[2] += gy2 * aaaa2 - 8 * rampValue2 * aaa2 * y2; - } - } else { - double x2 = x0 + (G2 - 1); - double y2 = y0 + G2; - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - double aa2 = a2 * a2, aaa2 = aa2 * a2, aaaa2 = aa2 * aa2; - int gi2 = gradCoordIndex(seed, i + PRIME_X, j); - double gx2 = GRADIENTS_2_D[gi2], gy2 = GRADIENTS_2_D[gi2 | 1]; - double rampValue2 = gx2 * x2 + gy2 * y2; - out[0] += aaaa2 * rampValue2; - out[1] += gx2 * aaaa2 - 8 * rampValue2 * aaa2 * x2; - out[2] += gy2 * aaaa2 - 8 * rampValue2 * aaa2 * y2; - } - } - - if(yi < xmyi) { - double x2 = x0 - G2; - double y2 = y0 - (G2 - 1); - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - double aa2 = a2 * a2, aaa2 = aa2 * a2, aaaa2 = aa2 * aa2; - int gi2 = gradCoordIndex(seed, i, j - PRIME_Y); - double gx2 = GRADIENTS_2_D[gi2], gy2 = GRADIENTS_2_D[gi2 | 1]; - double rampValue2 = gx2 * x2 + gy2 * y2; - out[0] += aaaa2 * rampValue2; - out[1] += gx2 * aaaa2 - 8 * rampValue2 * aaa2 * x2; - out[2] += gy2 * aaaa2 - 8 * rampValue2 * aaa2 * y2; - } - } else { - double x2 = x0 + G2; - double y2 = y0 + (G2 - 1); - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - double aa2 = a2 * a2, aaa2 = aa2 * a2, aaaa2 = aa2 * aa2; - int gi2 = gradCoordIndex(seed, i, j + PRIME_Y); - double gx2 = GRADIENTS_2_D[gi2], gy2 = GRADIENTS_2_D[gi2 | 1]; - double rampValue2 = gx2 * x2 + gy2 * y2; - out[0] += aaaa2 * rampValue2; - out[1] += gx2 * aaaa2 - 8 * rampValue2 * aaa2 * x2; - out[2] += gy2 * aaaa2 - 8 * rampValue2 * aaa2 * y2; - } - } - } - out[0] *= 18.24196194486065; - out[1] *= 18.24196194486065; - out[2] *= 18.24196194486065; - return out; - } - - @Override - public double[] getNoiseDerivativeRaw(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 - x = r - x; - y = r - y; - z = r - z; - - - int i = (int) Math.floor(x); - int j = (int) Math.floor(y); - int k = (int) Math.floor(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[] out = { 0.0f, 0.0f, 0.0f, 0.0f }; - - double x0 = xi + xNMask; - double y0 = yi + yNMask; - double z0 = zi + zNMask; - double a0 = 0.75 - x0 * x0 - y0 * y0 - z0 * z0; - double aa0 = a0 * a0, aaa0 = aa0 * a0, aaaa0 = aa0 * aa0; - int gi0 = gradCoordIndex(seed, i + (xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (zNMask & PRIME_Z)); - double gx0 = GRADIENTS_3D[gi0], gy0 = GRADIENTS_3D[gi0 | 1], gz0 = GRADIENTS_3D[gi0 | 2]; - double rampValue0 = gx0 * x0 + gy0 * y0 + gz0 * z0; - out[0] = aaaa0 * rampValue0; - out[1] = gx0 * aaaa0 - 8 * rampValue0 * aaa0 * x0; - out[2] = gy0 * aaaa0 - 8 * rampValue0 * aaa0 * y0; - out[3] = gz0 * aaaa0 - 8 * rampValue0 * aaa0 * 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; - double aa1 = a1 * a1, aaa1 = aa1 * a1, aaaa1 = aa1 * aa1; - int gi1 = gradCoordIndex(seed2, i + PRIME_X, j + PRIME_Y, k + PRIME_Z); - double gx1 = GRADIENTS_3D[gi1], gy1 = GRADIENTS_3D[gi1 | 1], gz1 = GRADIENTS_3D[gi1 | 2]; - double rampValue1 = gx1 * x1 + gy1 * y1 + gz1 * z1; - out[0] += aaaa1 * rampValue1; - out[1] += gx1 * aaaa1 - 8 * rampValue1 * aaa1 * x1; - out[2] += gy1 * aaaa1 - 8 * rampValue1 * aaa1 * y1; - out[3] += gz1 * aaaa1 - 8 * rampValue1 * aaa1 * 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); - double aa2 = a2 * a2, aaa2 = aa2 * a2, aaaa2 = aa2 * aa2; - int gi2 = gradCoordIndex(seed, i + (~xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (zNMask & PRIME_Z)); - double gx2 = GRADIENTS_3D[gi2], gy2 = GRADIENTS_3D[gi2 | 1], gz2 = GRADIENTS_3D[gi2 | 2]; - double rampValue2 = gx2 * x2 + gy2 * y0 + gz2 * z0; - out[0] += aaaa2 * rampValue2; - out[1] += gx2 * aaaa2 - 8 * rampValue2 * aaa2 * x2; - out[2] += gy2 * aaaa2 - 8 * rampValue2 * aaa2 * y0; - out[3] += gz2 * aaaa2 - 8 * rampValue2 * aaa2 * z0; - } else { - double a3 = yAFlipMask0 + zAFlipMask0 + a0; - if(a3 > 0) { - double y3 = y0 - (yNMask | 1); - double z3 = z0 - (zNMask | 1); - double aa3 = a3 * a3, aaa3 = aa3 * a3, aaaa3 = aa3 * aa3; - int gi3 = gradCoordIndex(seed, i + (xNMask & PRIME_X), j + (~yNMask & PRIME_Y), k + (~zNMask & PRIME_Z)); - double gx3 = GRADIENTS_3D[gi3], gy3 = GRADIENTS_3D[gi3 | 1], gz3 = GRADIENTS_3D[gi3 | 2]; - double rampValue3 = gx3 * x0 + gy3 * y3 + gz3 * z3; - out[0] += aaaa3 * rampValue3; - out[1] += gx3 * aaaa3 - 8 * rampValue3 * aaa3 * x0; - out[2] += gy3 * aaaa3 - 8 * rampValue3 * aaa3 * y3; - out[3] += gz3 * aaaa3 - 8 * rampValue3 * aaa3 * z3; - } - - double a4 = xAFlipMask1 + a1; - if(a4 > 0) { - double x4 = (xNMask | 1) + x1; - double aa4 = a4 * a4, aaa4 = aa4 * a4, aaaa4 = aa4 * aa4; - int gi4 = gradCoordIndex(seed2, i + (xNMask & (PRIME_X << 1)), j + PRIME_Y, k + PRIME_Z); - double gx4 = GRADIENTS_3D[gi4], gy4 = GRADIENTS_3D[gi4 | 1], gz4 = GRADIENTS_3D[gi4 | 2]; - double rampValue4 = gx4 * x4 + gy4 * y1 + gz4 * z1; - out[0] += aaaa4 * rampValue4; - out[1] += gx4 * aaaa4 - 8 * rampValue4 * aaa4 * x4; - out[2] += gy4 * aaaa4 - 8 * rampValue4 * aaa4 * y1; - out[3] += gz4 * aaaa4 - 8 * rampValue4 * aaa4 * z1; - skip5 = true; - } - } - - boolean skip9 = false; - double a6 = yAFlipMask0 + a0; - if(a6 > 0) { - double y6 = y0 - (yNMask | 1); - double aa6 = a6 * a6, aaa6 = aa6 * a6, aaaa6 = aa6 * aa6; - int gi6 = gradCoordIndex(seed, i + (xNMask & PRIME_X), j + (~yNMask & PRIME_Y), k + (zNMask & PRIME_Z)); - double gx6 = GRADIENTS_3D[gi6], gy6 = GRADIENTS_3D[gi6 | 1], gz6 = GRADIENTS_3D[gi6 | 2]; - double rampValue6 = gx6 * x0 + gy6 * y6 + gz6 * z0; - out[0] += aaaa6 * rampValue6; - out[1] += gx6 * aaaa6 - 8 * rampValue6 * aaa6 * x0; - out[2] += gy6 * aaaa6 - 8 * rampValue6 * aaa6 * y6; - out[3] += gz6 * aaaa6 - 8 * rampValue6 * aaa6 * z0; - } else { - double a7 = xAFlipMask0 + zAFlipMask0 + a0; - if(a7 > 0) { - double x7 = x0 - (xNMask | 1); - double z7 = z0 - (zNMask | 1); - double aa7 = a7 * a7, aaa7 = aa7 * a7, aaaa7 = aa7 * aa7; - int gi7 = gradCoordIndex(seed, i + (~xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (~zNMask & PRIME_Z)); - double gx7 = GRADIENTS_3D[gi7], gy7 = GRADIENTS_3D[gi7 | 1], gz7 = GRADIENTS_3D[gi7 | 2]; - double rampValue7 = gx7 * x7 + gy7 * y0 + gz7 * z7; - out[0] += aaaa7 * rampValue7; - out[1] += gx7 * aaaa7 - 8 * rampValue7 * aaa7 * x7; - out[2] += gy7 * aaaa7 - 8 * rampValue7 * aaa7 * y0; - out[3] += gz7 * aaaa7 - 8 * rampValue7 * aaa7 * z7; - } - - double a8 = yAFlipMask1 + a1; - if(a8 > 0) { - double y8 = (yNMask | 1) + y1; - double aa8 = a8 * a8, aaa8 = aa8 * a8, aaaa8 = aa8 * aa8; - int gi8 = gradCoordIndex(seed2, i + PRIME_X, j + (yNMask & (PRIME_Y << 1)), k + PRIME_Z); - double gx8 = GRADIENTS_3D[gi8], gy8 = GRADIENTS_3D[gi8 | 1], gz8 = GRADIENTS_3D[gi8 | 2]; - double rampValue8 = gx8 * x1 + gy8 * y8 + gz8 * z1; - out[0] += aaaa8 * rampValue8; - out[1] += gx8 * aaaa8 - 8 * rampValue8 * aaa8 * x1; - out[2] += gy8 * aaaa8 - 8 * rampValue8 * aaa8 * y8; - out[3] += gz8 * aaaa8 - 8 * rampValue8 * aaa8 * z1; - skip9 = true; - } - } - - boolean skipD = false; - double aA = zAFlipMask0 + a0; - if(aA > 0) { - double zA = z0 - (zNMask | 1); - double aaA = aA * aA, aaaA = aaA * aA, aaaaA = aaA * aaA; - int giA = gradCoordIndex(seed, i + (xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (~zNMask & PRIME_Z)); - double gxA = GRADIENTS_3D[giA], gyA = GRADIENTS_3D[giA | 1], gzA = GRADIENTS_3D[giA | 2]; - double rampValueA = gxA * x0 + gyA * y0 + gzA * zA; - out[0] += aaaaA * rampValueA; - out[1] += gxA * aaaaA - 8 * rampValueA * aaaA * x0; - out[2] += gyA * aaaaA - 8 * rampValueA * aaaA * y0; - out[3] += gzA * aaaaA - 8 * rampValueA * aaaA * zA; - } else { - double aB = xAFlipMask0 + yAFlipMask0 + a0; - if(aB > 0) { - double xB = x0 - (xNMask | 1); - double yB = y0 - (yNMask | 1); - double aaB = aB * aB, aaaB = aaB * aB, aaaaB = aaB * aaB; - int giB = gradCoordIndex(seed, i + (~xNMask & PRIME_X), j + (~yNMask & PRIME_Y), k + (zNMask & PRIME_Z)); - double gxB = GRADIENTS_3D[giB], gyB = GRADIENTS_3D[giB | 1], gzB = GRADIENTS_3D[giB | 2]; - double rampValueB = gxB * xB + gyB * yB + gzB * z0; - out[0] += aaaaB * rampValueB; - out[1] += gxB * aaaaB - 8 * rampValueB * aaaB * xB; - out[2] += gyB * aaaaB - 8 * rampValueB * aaaB * yB; - out[3] += gzB * aaaaB - 8 * rampValueB * aaaB * z0; - } - - double aC = zAFlipMask1 + a1; - if(aC > 0) { - double zC = (zNMask | 1) + z1; - double aaC = aC * aC, aaaC = aaC * aC, aaaaC = aaC * aaC; - int giC = gradCoordIndex(seed2, i + PRIME_X, j + PRIME_Y, k + (zNMask & (PRIME_Z << 1))); - double gxC = GRADIENTS_3D[giC], gyC = GRADIENTS_3D[giC | 1], gzC = GRADIENTS_3D[giC | 2]; - double rampValueC = gxC * x1 + gyC * y1 + gzC * zC; - out[0] += aaaaC * rampValueC; - out[1] += gxC * aaaaC - 8 * rampValueC * aaaC * x1; - out[2] += gyC * aaaaC - 8 * rampValueC * aaaC * y1; - out[3] += gzC * aaaaC - 8 * rampValueC * aaaC * zC; - skipD = true; - } - } - - if(!skip5) { - double a5 = yAFlipMask1 + zAFlipMask1 + a1; - if(a5 > 0) { - double y5 = (yNMask | 1) + y1; - double z5 = (zNMask | 1) + z1; - double aa5 = a5 * a5, aaa5 = aa5 * a5, aaaa5 = aa5 * aa5; - int gi5 = gradCoordIndex(seed2, i + PRIME_X, j + (yNMask & (PRIME_Y << 1)), k + (zNMask & (PRIME_Z << 1))); - double gx5 = GRADIENTS_3D[gi5], gy5 = GRADIENTS_3D[gi5 | 1], gz5 = GRADIENTS_3D[gi5 | 2]; - double rampValue5 = gx5 * x1 + gy5 * y5 + gz5 * z5; - out[0] += aaaa5 * rampValue5; - out[1] += gx5 * aaaa5 - 8 * rampValue5 * aaa5 * x1; - out[2] += gy5 * aaaa5 - 8 * rampValue5 * aaa5 * y5; - out[3] += gz5 * aaaa5 - 8 * rampValue5 * aaa5 * z5; - } - } - - if(!skip9) { - double a9 = xAFlipMask1 + zAFlipMask1 + a1; - if(a9 > 0) { - double x9 = (xNMask | 1) + x1; - double z9 = (zNMask | 1) + z1; - double aa9 = a9 * a9, aaa9 = aa9 * a9, aaaa9 = aa9 * aa9; - int gi9 = gradCoordIndex(seed2, i + (xNMask & (PRIME_X << 1)), j + PRIME_Y, k + (zNMask & (PRIME_Z << 1))); - double gx9 = GRADIENTS_3D[gi9], gy9 = GRADIENTS_3D[gi9 | 1], gz9 = GRADIENTS_3D[gi9 | 2]; - double rampValue9 = gx9 * x9 + gy9 * y1 + gz9 * z9; - out[0] += aaaa9 * rampValue9; - out[1] += gx9 * aaaa9 - 8 * rampValue9 * aaa9 * x9; - out[2] += gy9 * aaaa9 - 8 * rampValue9 * aaa9 * y1; - out[3] += gz9 * aaaa9 - 8 * rampValue9 * aaa9 * z9; - } - } - - if(!skipD) { - double aD = xAFlipMask1 + yAFlipMask1 + a1; - if(aD > 0) { - double xD = (xNMask | 1) + x1; - double yD = (yNMask | 1) + y1; - double aaD = aD * aD, aaaD = aaD * aD, aaaaD = aaD * aaD; - int giD = gradCoordIndex(seed2, i + (xNMask & (PRIME_X << 1)), j + (yNMask & (PRIME_Y << 1)), k + PRIME_Z); - double gxD = GRADIENTS_3D[giD], gyD = GRADIENTS_3D[giD | 1], gzD = GRADIENTS_3D[giD | 2]; - double rampValueD = gxD * xD + gyD * yD + gzD * z1; - out[0] += aaaaD * rampValueD; - out[1] += gxD * aaaaD - 8 * rampValueD * aaaD * xD; - out[2] += gyD * aaaaD - 8 * rampValueD * aaaD * yD; - out[3] += gzD * aaaaD - 8 * rampValueD * aaaD * z1; - } - } - - out[0] *= 9.046026385208288; - out[1] *= 9.046026385208288; - out[2] *= 9.046026385208288; - out[3] *= 9.046026385208288; - return out; - } -} 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 deleted file mode 100644 index 566c99867..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java +++ /dev/null @@ -1,360 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.simplex; - -/** - * NoiseSampler implementation to provide OpenSimplex2 noise. - */ -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 = (int) Math.floor(x); - int j = (int) Math.floor(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 value = 0; - - double a = 0.5 - x0 * x0 - y0 * y0; - if(a > 0) { - value = (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) { - double x2 = x0 + (2 * G2 - 1); - double y2 = y0 + (2 * G2 - 1); - value += (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); - double b = 0.5 - x1 * x1 - y1 * y1; - if(b > 0) { - value += (b * b) * (b * b) * gradCoord(seed, i, j + PRIME_Y, x1, y1); - } - } else { - double x1 = x0 + (G2 - 1); - double y1 = y0 + G2; - double b = 0.5 - x1 * x1 - y1 * y1; - if(b > 0) { - value += (b * b) * (b * b) * gradCoord(seed, i + PRIME_X, j, x1, y1); - } - } - - return value * 99.83685446303647f; - } - - @Override - 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 - x = r - x; - y = r - y; - z = r - z; - - - int i = (int) Math.round(x); - int j = (int) Math.round(y); - int k = (int) Math.round(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) { - b -= 1; - value += (b * b) * (b * b) * gradCoord(seed, i - xNSign * PRIME_X, j, k, x0 + xNSign, y0, z0); - } - } else if(ay0 > ax0 && ay0 >= az0) { - double b = a + ay0 + ay0; - if(b > 1) { - b -= 1; - value += (b * b) * (b * b) * gradCoord(seed, i, j - yNSign * PRIME_Y, k, x0, y0 + yNSign, z0); - } - } else { - double b = a + az0 + az0; - if(b > 1) { - b -= 1; - 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; - } - - @Override - public boolean isDifferentiable() { - return true; - } - - @Override - public double[] getNoiseDerivativeRaw(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 = (int) Math.floor(x); - int j = (int) Math.floor(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[] out = { 0.0f, 0.0f, 0.0f }; - - double a = 0.5 - x0 * x0 - y0 * y0; - if(a > 0) { - double aa = a * a, aaa = aa * a, aaaa = aa * aa; - int gi = gradCoordIndex(seed, i, j); - double gx = GRADIENTS_2_D[gi], gy = GRADIENTS_2_D[gi | 1]; - double rampValue = gx * x0 + gy * y0; - out[0] += aaaa * rampValue; - out[1] += gx * aaaa - 8 * rampValue * aaa * x0; - out[2] += gy * aaaa - 8 * rampValue * aaa * y0; - } - - double c = 2 * (1 - 2 * G2) * (1 / G2 - 2) * t + ((-2 * (1 - 2 * G2) * (1 - 2 * G2)) + a); - if(c > 0) { - double x2 = x0 + (2 * G2 - 1); - double y2 = y0 + (2 * G2 - 1); - double cc = c * c, ccc = cc * c, cccc = cc * cc; - int gi = gradCoordIndex(seed, i + PRIME_X, j + PRIME_Y); - double gx = GRADIENTS_2_D[gi], gy = GRADIENTS_2_D[gi | 1]; - double rampValue = gx * x2 + gy * y2; - out[0] += cccc * rampValue; - out[1] += gx * cccc - 8 * rampValue * ccc * x2; - out[2] += gy * cccc - 8 * rampValue * ccc * y2; - } - - if(y0 > x0) { - double x1 = x0 + G2; - double y1 = y0 + (G2 - 1); - double b = 0.5 - x1 * x1 - y1 * y1; - if(b > 0) { - double bb = b * b, bbb = bb * b, bbbb = bb * bb; - int gi = gradCoordIndex(seed, i, j + PRIME_Y); - double gx = GRADIENTS_2_D[gi], gy = GRADIENTS_2_D[gi | 1]; - double rampValue = gx * x1 + gy * y1; - out[0] += bbbb * rampValue; - out[1] += gx * bbbb - 8 * rampValue * bbb * x1; - out[2] += gy * bbbb - 8 * rampValue * bbb * y1; - } - } else { - double x1 = x0 + (G2 - 1); - double y1 = y0 + G2; - double b = 0.5 - x1 * x1 - y1 * y1; - if(b > 0) { - double bb = b * b, bbb = bb * b, bbbb = bb * bb; - int gi = gradCoordIndex(seed, i + PRIME_X, j); - double gx = GRADIENTS_2_D[gi], gy = GRADIENTS_2_D[gi | 1]; - double rampValue = gx * x1 + gy * y1; - out[0] += bbbb * rampValue; - out[1] += gx * bbbb - 8 * rampValue * bbb * x1; - out[2] += gy * bbbb - 8 * rampValue * bbb * y1; - } - } - - out[0] *= 99.83685446303647f; - out[1] *= 99.83685446303647f; - out[2] *= 99.83685446303647f; - return out; - } - - @Override - public double[] getNoiseDerivativeRaw(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 - x = r - x; - y = r - y; - z = r - z; - - - int i = (int) Math.round(x); - int j = (int) Math.round(y); - int k = (int) Math.round(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[] out = { 0.0f, 0.0f, 0.0f, 0.0f }; - double a = (0.6f - x0 * x0) - (y0 * y0 + z0 * z0); - - for(int l = 0; ; l++) { - if(a > 0) { - double aa = a * a, aaa = aa * a, aaaa = aa * aa; - int gi = gradCoordIndex(seed, i, j, k); - double gx = GRADIENTS_3D[gi], gy = GRADIENTS_3D[gi | 1], gz = GRADIENTS_3D[gi | 2]; - double rampValue = gx * x0 + gy * y0 + gz * z0; - out[0] += aaaa * rampValue; - out[1] += gx * aaaa - 8 * rampValue * aaa * x0; - out[1] += gy * aaaa - 8 * rampValue * aaa * y0; - out[2] += gz * aaaa - 8 * rampValue * aaa * z0; - } - - if(ax0 >= ay0 && ax0 >= az0) { - double b = a + ax0 + ax0; - if(b > 1) { - b -= 1; - double bb = b * b, bbb = bb * b, bbbb = bb * bb; - int gi = gradCoordIndex(seed, i - xNSign * PRIME_X, j, k); - double gx = GRADIENTS_3D[gi], gy = GRADIENTS_3D[gi | 1], gz = GRADIENTS_3D[gi | 2]; - double rampValue = gx * (x0 + xNSign) + gy * y0 + gz * z0; - out[0] += bbbb * rampValue; - out[1] += gx * bbbb - 8 * rampValue * bbb * (x0 + xNSign); - out[1] += gy * bbbb - 8 * rampValue * bbb * y0; - out[2] += gz * bbbb - 8 * rampValue * bbb * z0; - } - } else if(ay0 > ax0 && ay0 >= az0) { - double b = a + ay0 + ay0; - if(b > 1) { - b -= 1; - double bb = b * b, bbb = bb * b, bbbb = bb * bb; - int gi = gradCoordIndex(seed, i, j - yNSign * PRIME_Y, k); - double gx = GRADIENTS_3D[gi], gy = GRADIENTS_3D[gi | 1], gz = GRADIENTS_3D[gi | 2]; - double rampValue = gx * x0 + gy * (y0 + yNSign) + gz * z0; - out[0] += bbbb * rampValue; - out[1] += gx * bbbb - 8 * rampValue * bbb * x0; - out[1] += gy * bbbb - 8 * rampValue * bbb * (y0 + yNSign); - out[2] += gz * bbbb - 8 * rampValue * bbb * z0; - } - } else { - double b = a + az0 + az0; - if(b > 1) { - b -= 1; - double bb = b * b, bbb = bb * b, bbbb = bb * bb; - int gi = gradCoordIndex(seed, i, j, k - zNSign * PRIME_Z); - double gx = GRADIENTS_3D[gi], gy = GRADIENTS_3D[gi | 1], gz = GRADIENTS_3D[gi | 2]; - double rampValue = gx * x0 + gy * y0 + gz * (z0 + zNSign); - out[0] += bbbb * rampValue; - out[1] += gx * bbbb - 8 * rampValue * bbb * x0; - out[1] += gy * bbbb - 8 * rampValue * bbb * y0; - out[2] += gz * bbbb - 8 * rampValue * bbb * (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; - } - out[0] *= 32.69428253173828125; - out[1] *= 32.69428253173828125; - out[2] *= 32.69428253173828125; - out[3] *= 32.69428253173828125; - return out; - } -} 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 deleted file mode 100644 index c7b8573bb..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.simplex; - -import com.dfsek.terra.api.util.MathUtil; - - -/** - * NoiseSampler implementation to provide Perlin Noise. - */ -public class PerlinSampler extends SimplexStyleSampler { - @Override - public double getNoiseRaw(long sl, double x, double y) { - int seed = (int) sl; - int x0 = (int) Math.floor(x); - int y0 = (int) Math.floor(y); - - double xd0 = x - x0; - double yd0 = y - y0; - double xd1 = xd0 - 1; - double yd1 = yd0 - 1; - - double xs = MathUtil.interpQuintic(xd0); - double ys = MathUtil.interpQuintic(yd0); - - x0 *= PRIME_X; - y0 *= PRIME_Y; - int x1 = x0 + PRIME_X; - int y1 = y0 + PRIME_Y; - - double xf0 = MathUtil.lerp(xs, gradCoord(seed, x0, y0, xd0, yd0), gradCoord(seed, x1, y0, xd1, yd0)); - double xf1 = MathUtil.lerp(xs, gradCoord(seed, x0, y1, xd0, yd1), gradCoord(seed, x1, y1, xd1, yd1)); - - return MathUtil.lerp(ys, xf0, xf1) * 1.4247691104677813; - } - - @Override - public double getNoiseRaw(long sl, double x, double y, double z) { - int seed = (int) sl; - int x0 = (int) Math.floor(x); - int y0 = (int) Math.floor(y); - int z0 = (int) Math.floor(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 = MathUtil.interpQuintic(xd0); - double ys = MathUtil.interpQuintic(yd0); - double zs = MathUtil.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 = MathUtil.lerp(xs, gradCoord(seed, x0, y0, z0, xd0, yd0, zd0), gradCoord(seed, x1, y0, z0, xd1, yd0, zd0)); - double xf10 = MathUtil.lerp(xs, gradCoord(seed, x0, y1, z0, xd0, yd1, zd0), gradCoord(seed, x1, y1, z0, xd1, yd1, zd0)); - double xf01 = MathUtil.lerp(xs, gradCoord(seed, x0, y0, z1, xd0, yd0, zd1), gradCoord(seed, x1, y0, z1, xd1, yd0, zd1)); - double xf11 = MathUtil.lerp(xs, gradCoord(seed, x0, y1, z1, xd0, yd1, zd1), gradCoord(seed, x1, y1, z1, xd1, yd1, zd1)); - - double yf0 = MathUtil.lerp(ys, xf00, xf10); - double yf1 = MathUtil.lerp(ys, xf01, xf11); - - return MathUtil.lerp(zs, yf0, yf1) * 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 deleted file mode 100644 index cb2a492c5..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.simplex; - -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 = (int) Math.floor(x + t); - int j = (int) Math.floor(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; - j1 = 0; - } else { - 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; - } else { - t *= t; - n0 = t * t * gradCoord2D(seed, i, j, x0, y0); - } - - t = 0.5 - x1 * x1 - y1 * y1; - if(t < 0) { - n1 = 0; - } else { - 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; - } else { - 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; - double t = (x + y + z) * F3; - int i = (int) Math.floor(x + t); - int j = (int) Math.floor(y + t); - int k = (int) Math.floor(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; - j1 = 0; - k1 = 0; - i2 = 1; - j2 = 1; - k2 = 0; - } else if(x0 >= z0) { - i1 = 1; - j1 = 0; - k1 = 0; - i2 = 1; - j2 = 0; - k2 = 1; - } else // x0 < z0 - { - i1 = 0; - j1 = 0; - k1 = 1; - i2 = 1; - j2 = 0; - k2 = 1; - } - } else // x0 < y0 - { - if(y0 < z0) { - i1 = 0; - j1 = 0; - k1 = 1; - i2 = 0; - j2 = 1; - k2 = 1; - } else if(x0 < z0) { - i1 = 0; - j1 = 1; - k1 = 0; - i2 = 0; - j2 = 1; - k2 = 1; - } else // x0 >= z0 - { - i1 = 0; - j1 = 1; - k1 = 0; - i2 = 1; - j2 = 1; - k2 = 0; - } - } - - double x1 = x0 - i1 + G3; - double y1 = y0 - j1 + G3; - double z1 = z0 - k1 + G3; - double x2 = x0 - i2 + F3; - double y2 = y0 - j2 + F3; - double z2 = z0 - k2 + F3; - 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; - } else { - 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; - } else { - 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; - } else { - 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; - this.z = z; - } - } -} 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 deleted file mode 100644 index 291654327..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.simplex; - -import com.dfsek.terra.addons.noise.samplers.noise.DerivativeNoiseFunction; - - -/** - * Abstract NoiseSampler implementation for simplex-style noise functions. - */ -public abstract class SimplexStyleSampler extends DerivativeNoiseFunction { - protected static final double[] GRADIENTS_2_D = { - 0.130526192220052d, 0.99144486137381d, 0.38268343236509d, 0.923879532511287d, 0.608761429008721d, 0.793353340291235d, - 0.793353340291235d, 0.608761429008721d, 0.923879532511287d, 0.38268343236509d, 0.99144486137381d, 0.130526192220051d, - 0.99144486137381d, -0.130526192220051d, 0.923879532511287d, -0.38268343236509d, 0.793353340291235d, -0.60876142900872d, - 0.608761429008721d, -0.793353340291235d, 0.38268343236509d, -0.923879532511287d, 0.130526192220052d, -0.99144486137381d, - -0.130526192220052d, -0.99144486137381d, -0.38268343236509d, -0.923879532511287d, -0.608761429008721d, -0.793353340291235d, - -0.793353340291235d, -0.608761429008721d, -0.923879532511287d, -0.38268343236509d, -0.99144486137381d, -0.130526192220052d, - -0.99144486137381d, 0.130526192220051d, -0.923879532511287d, 0.38268343236509d, -0.793353340291235d, 0.608761429008721d, - -0.608761429008721d, 0.793353340291235d, -0.38268343236509d, 0.923879532511287d, -0.130526192220052d, 0.99144486137381d, - 0.130526192220052d, 0.99144486137381d, 0.38268343236509d, 0.923879532511287d, 0.608761429008721d, 0.793353340291235d, - 0.793353340291235d, 0.608761429008721d, 0.923879532511287d, 0.38268343236509d, 0.99144486137381d, 0.130526192220051d, - 0.99144486137381d, -0.130526192220051d, 0.923879532511287d, -0.38268343236509d, 0.793353340291235d, -0.60876142900872d, - 0.608761429008721d, -0.793353340291235d, 0.38268343236509d, -0.923879532511287d, 0.130526192220052d, -0.99144486137381d, - -0.130526192220052d, -0.99144486137381d, -0.38268343236509d, -0.923879532511287d, -0.608761429008721d, -0.793353340291235d, - -0.793353340291235d, -0.608761429008721d, -0.923879532511287d, -0.38268343236509d, -0.99144486137381d, -0.130526192220052d, - -0.99144486137381d, 0.130526192220051d, -0.923879532511287d, 0.38268343236509d, -0.793353340291235d, 0.608761429008721d, - -0.608761429008721d, 0.793353340291235d, -0.38268343236509d, 0.923879532511287d, -0.130526192220052d, 0.99144486137381d, - 0.130526192220052d, 0.99144486137381d, 0.38268343236509d, 0.923879532511287d, 0.608761429008721d, 0.793353340291235d, - 0.793353340291235d, 0.608761429008721d, 0.923879532511287d, 0.38268343236509d, 0.99144486137381d, 0.130526192220051d, - 0.99144486137381d, -0.130526192220051d, 0.923879532511287d, -0.38268343236509d, 0.793353340291235d, -0.60876142900872d, - 0.608761429008721d, -0.793353340291235d, 0.38268343236509d, -0.923879532511287d, 0.130526192220052d, -0.99144486137381d, - -0.130526192220052d, -0.99144486137381d, -0.38268343236509d, -0.923879532511287d, -0.608761429008721d, -0.793353340291235d, - -0.793353340291235d, -0.608761429008721d, -0.923879532511287d, -0.38268343236509d, -0.99144486137381d, -0.130526192220052d, - -0.99144486137381d, 0.130526192220051d, -0.923879532511287d, 0.38268343236509d, -0.793353340291235d, 0.608761429008721d, - -0.608761429008721d, 0.793353340291235d, -0.38268343236509d, 0.923879532511287d, -0.130526192220052d, 0.99144486137381d, - 0.130526192220052d, 0.99144486137381d, 0.38268343236509d, 0.923879532511287d, 0.608761429008721d, 0.793353340291235d, - 0.793353340291235d, 0.608761429008721d, 0.923879532511287d, 0.38268343236509d, 0.99144486137381d, 0.130526192220051d, - 0.99144486137381d, -0.130526192220051d, 0.923879532511287d, -0.38268343236509d, 0.793353340291235d, -0.60876142900872d, - 0.608761429008721d, -0.793353340291235d, 0.38268343236509d, -0.923879532511287d, 0.130526192220052d, -0.99144486137381d, - -0.130526192220052d, -0.99144486137381d, -0.38268343236509d, -0.923879532511287d, -0.608761429008721d, -0.793353340291235d, - -0.793353340291235d, -0.608761429008721d, -0.923879532511287d, -0.38268343236509d, -0.99144486137381d, -0.130526192220052d, - -0.99144486137381d, 0.130526192220051d, -0.923879532511287d, 0.38268343236509d, -0.793353340291235d, 0.608761429008721d, - -0.608761429008721d, 0.793353340291235d, -0.38268343236509d, 0.923879532511287d, -0.130526192220052d, 0.99144486137381d, - 0.130526192220052d, 0.99144486137381d, 0.38268343236509d, 0.923879532511287d, 0.608761429008721d, 0.793353340291235d, - 0.793353340291235d, 0.608761429008721d, 0.923879532511287d, 0.38268343236509d, 0.99144486137381d, 0.130526192220051d, - 0.99144486137381d, -0.130526192220051d, 0.923879532511287d, -0.38268343236509d, 0.793353340291235d, -0.60876142900872d, - 0.608761429008721d, -0.793353340291235d, 0.38268343236509d, -0.923879532511287d, 0.130526192220052d, -0.99144486137381d, - -0.130526192220052d, -0.99144486137381d, -0.38268343236509d, -0.923879532511287d, -0.608761429008721d, -0.793353340291235d, - -0.793353340291235d, -0.608761429008721d, -0.923879532511287d, -0.38268343236509d, -0.99144486137381d, -0.130526192220052d, - -0.99144486137381d, 0.130526192220051d, -0.923879532511287d, 0.38268343236509d, -0.793353340291235d, 0.608761429008721d, - -0.608761429008721d, 0.793353340291235d, -0.38268343236509d, 0.923879532511287d, -0.130526192220052d, 0.99144486137381d, - 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, - 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, 0, - 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, - 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, 0, - 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, - 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, 0, - 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, - 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, 0, - 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, - 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 int gradCoordIndex(int seed, int xPrimed, int yPrimed) { - int hash = hash(seed, xPrimed, yPrimed); - hash ^= hash >> 15; - hash &= 127 << 1; - - return hash; - } - - protected static double gradCoord(int seed, int xPrimed, int yPrimed, double xd, double yd) { - int index = gradCoordIndex(seed, xPrimed, yPrimed); - - double xg = GRADIENTS_2_D[index]; - double yg = GRADIENTS_2_D[index | 1]; - - return xd * xg + yd * yg; - } - - protected static int gradCoordIndex(int seed, int xPrimed, int yPrimed, int zPrimed) { - int hash = hash(seed, xPrimed, yPrimed, zPrimed); - hash ^= hash >> 15; - hash &= 63 << 2; - - return hash; - } - - protected static double gradCoord(int seed, int xPrimed, int yPrimed, int zPrimed, double xd, double yd, double zd) { - int index = gradCoordIndex(seed, xPrimed, yPrimed, zPrimed); - - double xg = GRADIENTS_3D[index]; - double yg = GRADIENTS_3D[index | 1]; - double zg = GRADIENTS_3D[index | 2]; - - return xd * xg + yd * yg + zd * zg; - } - - @Override - public double[] getNoiseDerivativeRaw(long seed, double x, double y) { - throw new UnsupportedOperationException("Implementation failed to check or set isDifferentiable correctly"); - } - - @Override - public double[] getNoiseDerivativeRaw(long seed, double x, double y, double z) { - throw new UnsupportedOperationException("Implementation failed to check or set isDifferentiable correctly"); - } - - @Override - public boolean isDifferentiable() { - return false; - } -} 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 deleted file mode 100644 index f4960fa5b..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.value; - -import com.dfsek.terra.api.util.MathUtil; - - -public class ValueCubicSampler extends ValueStyleNoise { - @Override - public double getNoiseRaw(long sl, double x, double y) { - int seed = (int) sl; - int x1 = (int) Math.floor(x); - int y1 = (int) Math.floor(y); - - double xs = x - x1; - double ys = y - y1; - - x1 *= PRIME_X; - y1 *= PRIME_Y; - int x0 = x1 - PRIME_X; - int y0 = y1 - PRIME_Y; - int x2 = x1 + PRIME_X; - int y2 = y1 + PRIME_Y; - int x3 = x1 + (PRIME_X << 1); - int y3 = y1 + (PRIME_Y << 1); - - return MathUtil.cubicLerp( - MathUtil.cubicLerp(valCoord(seed, x0, y0), valCoord(seed, x1, y0), valCoord(seed, x2, y0), valCoord(seed, x3, y0), - xs), - MathUtil.cubicLerp(valCoord(seed, x0, y1), valCoord(seed, x1, y1), valCoord(seed, x2, y1), valCoord(seed, x3, y1), - xs), - MathUtil.cubicLerp(valCoord(seed, x0, y2), valCoord(seed, x1, y2), valCoord(seed, x2, y2), valCoord(seed, x3, y2), - xs), - MathUtil.cubicLerp(valCoord(seed, x0, y3), valCoord(seed, x1, y3), valCoord(seed, x2, y3), valCoord(seed, x3, y3), - 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 = (int) Math.floor(x); - int y1 = (int) Math.floor(y); - int z1 = (int) Math.floor(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; - int x2 = x1 + PRIME_X; - int y2 = y1 + PRIME_Y; - int z2 = z1 + PRIME_Z; - int x3 = x1 + (PRIME_X << 1); - int y3 = y1 + (PRIME_Y << 1); - int z3 = z1 + (PRIME_Z << 1); - - return MathUtil.cubicLerp( - MathUtil.cubicLerp( - MathUtil.cubicLerp(valCoord(seed, x0, y0, z0), valCoord(seed, x1, y0, z0), valCoord(seed, x2, y0, z0), - valCoord(seed, x3, y0, z0), xs), - MathUtil.cubicLerp(valCoord(seed, x0, y1, z0), valCoord(seed, x1, y1, z0), valCoord(seed, x2, y1, z0), - valCoord(seed, x3, y1, z0), xs), - MathUtil.cubicLerp(valCoord(seed, x0, y2, z0), valCoord(seed, x1, y2, z0), valCoord(seed, x2, y2, z0), - valCoord(seed, x3, y2, z0), xs), - MathUtil.cubicLerp(valCoord(seed, x0, y3, z0), valCoord(seed, x1, y3, z0), valCoord(seed, x2, y3, z0), - valCoord(seed, x3, y3, z0), xs), - ys), - MathUtil.cubicLerp( - MathUtil.cubicLerp(valCoord(seed, x0, y0, z1), valCoord(seed, x1, y0, z1), valCoord(seed, x2, y0, z1), - valCoord(seed, x3, y0, z1), xs), - MathUtil.cubicLerp(valCoord(seed, x0, y1, z1), valCoord(seed, x1, y1, z1), valCoord(seed, x2, y1, z1), - valCoord(seed, x3, y1, z1), xs), - MathUtil.cubicLerp(valCoord(seed, x0, y2, z1), valCoord(seed, x1, y2, z1), valCoord(seed, x2, y2, z1), - valCoord(seed, x3, y2, z1), xs), - MathUtil.cubicLerp(valCoord(seed, x0, y3, z1), valCoord(seed, x1, y3, z1), valCoord(seed, x2, y3, z1), - valCoord(seed, x3, y3, z1), xs), - ys), - MathUtil.cubicLerp( - MathUtil.cubicLerp(valCoord(seed, x0, y0, z2), valCoord(seed, x1, y0, z2), valCoord(seed, x2, y0, z2), - valCoord(seed, x3, y0, z2), xs), - MathUtil.cubicLerp(valCoord(seed, x0, y1, z2), valCoord(seed, x1, y1, z2), valCoord(seed, x2, y1, z2), - valCoord(seed, x3, y1, z2), xs), - MathUtil.cubicLerp(valCoord(seed, x0, y2, z2), valCoord(seed, x1, y2, z2), valCoord(seed, x2, y2, z2), - valCoord(seed, x3, y2, z2), xs), - MathUtil.cubicLerp(valCoord(seed, x0, y3, z2), valCoord(seed, x1, y3, z2), valCoord(seed, x2, y3, z2), - valCoord(seed, x3, y3, z2), xs), - ys), - MathUtil.cubicLerp( - MathUtil.cubicLerp(valCoord(seed, x0, y0, z3), valCoord(seed, x1, y0, z3), valCoord(seed, x2, y0, z3), - valCoord(seed, x3, y0, z3), xs), - MathUtil.cubicLerp(valCoord(seed, x0, y1, z3), valCoord(seed, x1, y1, z3), valCoord(seed, x2, y1, z3), - valCoord(seed, x3, y1, z3), xs), - MathUtil.cubicLerp(valCoord(seed, x0, y2, z3), valCoord(seed, x1, y2, z3), valCoord(seed, x2, y2, z3), - valCoord(seed, x3, y2, z3), xs), - MathUtil.cubicLerp(valCoord(seed, x0, y3, z3), valCoord(seed, x1, y3, z3), valCoord(seed, x2, y3, z3), - 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 deleted file mode 100644 index 9aec32e5a..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.value; - -import com.dfsek.terra.api.util.MathUtil; - - -public class ValueSampler extends ValueStyleNoise { - @Override - public double getNoiseRaw(long sl, double x, double y) { - int seed = (int) sl; - int x0 = (int) Math.floor(x); - int y0 = (int) Math.floor(y); - - double xs = MathUtil.interpHermite(x - x0); - double ys = MathUtil.interpHermite(y - y0); - - x0 *= PRIME_X; - y0 *= PRIME_Y; - int x1 = x0 + PRIME_X; - int y1 = y0 + PRIME_Y; - - double xf0 = MathUtil.lerp(xs, valCoord(seed, x0, y0), valCoord(seed, x1, y0)); - double xf1 = MathUtil.lerp(xs, valCoord(seed, x0, y1), valCoord(seed, x1, y1)); - - return MathUtil.lerp(ys, xf0, xf1); - } - - @Override - public double getNoiseRaw(long sl, double x, double y, double z) { - int seed = (int) sl; - int x0 = (int) Math.floor(x); - int y0 = (int) Math.floor(y); - int z0 = (int) Math.floor(z); - - double xs = MathUtil.interpHermite(x - x0); - double ys = MathUtil.interpHermite(y - y0); - double zs = MathUtil.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 = MathUtil.lerp(xs, valCoord(seed, x0, y0, z0), valCoord(seed, x1, y0, z0)); - double xf10 = MathUtil.lerp(xs, valCoord(seed, x0, y1, z0), valCoord(seed, x1, y1, z0)); - double xf01 = MathUtil.lerp(xs, valCoord(seed, x0, y0, z1), valCoord(seed, x1, y0, z1)); - double xf11 = MathUtil.lerp(xs, valCoord(seed, x0, y1, z1), valCoord(seed, x1, y1, z1)); - - double yf0 = MathUtil.lerp(ys, xf00, xf10); - double yf1 = MathUtil.lerp(ys, xf01, xf11); - - return MathUtil.lerp(zs, yf0, yf1); - } -} 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 deleted file mode 100644 index a380e5226..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.noise.samplers.noise.value; - -import com.dfsek.terra.addons.noise.samplers.noise.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-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 6ed775aca..84ff59543 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 @@ -11,13 +11,15 @@ import java.util.BitSet; import java.util.Map; import java.util.random.RandomGenerator; +import com.dfsek.seismic.math.numericanalysis.interpolation.InterpolationFunctions; +import com.dfsek.seismic.math.trigonometry.TrigonometryFunctions; +import com.dfsek.seismic.type.Rotation; + import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; import static com.dfsek.terra.addons.ore.utils.VanillaOreUtils.shouldPlace; @@ -49,11 +51,11 @@ public class VanillaOre implements Structure { double eighthSize = size / 8.0F; // Place points to form a line segment - double startX = (double) location.getX() + MathUtil.sin(randomRadian) * eighthSize; - double endX = (double) location.getX() - MathUtil.sin(randomRadian) * eighthSize; + double startX = (double) location.getX() + TrigonometryFunctions.sin(randomRadian) * eighthSize; + double endX = (double) location.getX() - TrigonometryFunctions.sin(randomRadian) * eighthSize; - double startZ = (double) location.getZ() + MathUtil.cos(randomRadian) * eighthSize; - double endZ = (double) location.getZ() - MathUtil.cos(randomRadian) * eighthSize; + double startZ = (double) location.getZ() + TrigonometryFunctions.cos(randomRadian) * eighthSize; + double endZ = (double) location.getZ() - TrigonometryFunctions.cos(randomRadian) * eighthSize; double startY = location.getY() + random.nextInt(3) - 2; double endY = location.getY() + random.nextInt(3) - 2; @@ -64,12 +66,12 @@ public class VanillaOre implements Structure { // Compute initial point positions and radius for(int i = 0; i < sizeInt; ++i) { float t = (float) i / (float) sizeInt; - double xt = MathUtil.lerp(t, startX, endX); - double yt = MathUtil.lerp(t, startY, endY); - double zt = MathUtil.lerp(t, startZ, endZ); + double xt = InterpolationFunctions.lerp(startX, endX, t); + double yt = InterpolationFunctions.lerp(startY, endY, t); + double zt = InterpolationFunctions.lerp(startZ, endZ, t); double roll = random.nextDouble() * size / 16.0; // Taper radius closer to line ends - double radius = ((MathUtil.sin((float) Math.PI * t) + 1.0F) * roll + 1.0) / 2.0; + double radius = ((TrigonometryFunctions.sin((float) Math.PI * t) + 1.0F) * roll + 1.0) / 2.0; points[i * 4] = xt; points[i * 4 + 1] = yt; points[i * 4 + 2] = zt; diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaScatteredOre.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaScatteredOre.java index 36be3c577..aad282294 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaScatteredOre.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaScatteredOre.java @@ -3,11 +3,12 @@ package com.dfsek.terra.addons.ore.ores; import java.util.Map; import java.util.random.RandomGenerator; +import com.dfsek.seismic.type.Rotation; + import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; import static com.dfsek.terra.addons.ore.utils.VanillaOreUtils.shouldPlace; 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 406b30e95..5f0a03b0c 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 @@ -16,14 +16,14 @@ 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 com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "FieldMayBeFinal", "unused" }) public class PaletteTemplate implements AbstractableTemplate { @Value("sampler") @Default - private @Meta NoiseSampler defaultSampler = NoiseSampler.zero(); + private @Meta Sampler defaultSampler = Sampler.zero(); @Value("id") @Final @@ -40,7 +40,7 @@ public class PaletteTemplate implements AbstractableTemplate { return palette; } - public NoiseSampler getDefaultSampler() { + public Sampler getDefaultSampler() { return defaultSampler; } } 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 448923d32..d70c14e92 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 @@ -11,7 +11,7 @@ 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.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.chunk.generation.util.Palette; @@ -22,13 +22,13 @@ import com.dfsek.terra.api.world.chunk.generation.util.Palette; public class PaletteImpl implements Palette { private final PaletteLayer[] layers; - public PaletteImpl(List layers, NoiseSampler defaultSampler) { + public PaletteImpl(List layers, Sampler defaultSampler) { List layerArray = new ArrayList<>(); for (PaletteLayerHolder holder : layers) { PaletteLayer layer; ProbabilityCollection materials = holder.getLayer(); - NoiseSampler sampler = holder.getSampler() == null ? defaultSampler : holder.getSampler(); + Sampler sampler = holder.getSampler() == null ? defaultSampler : holder.getSampler(); layer = new PaletteLayer(materials, sampler); for (int i = 0; i < holder.getSize(); i++) layerArray.add(layer); @@ -44,10 +44,10 @@ public class PaletteImpl implements Palette { } static class PaletteLayer { - private final NoiseSampler sampler; + private final Sampler sampler; private final ProbabilityCollection collection; - public PaletteLayer(ProbabilityCollection type, NoiseSampler sampler) { + public PaletteLayer(ProbabilityCollection type, Sampler sampler) { this.sampler = sampler; this.collection = type; } 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 29f31269b..33fb7e012 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 @@ -10,16 +10,16 @@ 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.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; public class PaletteLayerHolder { private final ProbabilityCollection layer; - private final NoiseSampler sampler; + private final Sampler sampler; private final int size; - public PaletteLayerHolder(@NotNull ProbabilityCollection layer, NoiseSampler sampler, int size) { + public PaletteLayerHolder(@NotNull ProbabilityCollection layer, Sampler sampler, int size) { this.layer = layer; this.sampler = sampler; this.size = size; @@ -34,7 +34,7 @@ public class PaletteLayerHolder { return size; } - public NoiseSampler getSampler() { + public Sampler 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 e305bf6a9..a21885a92 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 @@ -13,7 +13,7 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @@ -23,7 +23,7 @@ public class PaletteLayerLoader implements ObjectTemplate { @Value("sampler") @Default - private @Meta NoiseSampler sampler = null; + private @Meta Sampler sampler = null; @Value("layers") private @Meta int layers; 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 03d2c9953..d9d0fa175 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 @@ -14,7 +14,7 @@ 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; +import com.dfsek.terra.api.util.range.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; 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 4cb7fd56c..9b99f5b4a 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 @@ -10,7 +10,7 @@ package com.dfsek.terra.addons.structure; 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.range.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; 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 8aed9f379..5d948418c 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 @@ -11,13 +11,14 @@ import java.util.Collections; import java.util.random.RandomGenerator; import java.util.random.RandomGeneratorFactory; +import com.dfsek.seismic.type.Rotation; + import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures; import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.properties.PropertyKey; import com.dfsek.terra.api.registry.key.StringIdentifiable; -import com.dfsek.terra.api.util.Rotation; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; import com.dfsek.terra.api.world.chunk.generation.ProtoWorld; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; @@ -33,12 +34,12 @@ public class FeatureGenerationStage implements GenerationStage, StringIdentifiab private final int resolution; private final PropertyKey biomeFeaturesKey; - private final NoiseSampler blendSampler; + private final Sampler blendSampler; private final boolean doBlending; private final double blendAmplitude; public FeatureGenerationStage(Platform platform, String id, int resolution, PropertyKey biomeFeaturesKey, - NoiseSampler blendSampler, double blendAmplitude) { + Sampler blendSampler, double blendAmplitude) { this.platform = platform; this.id = id; this.profile = "feature_stage:" + id; @@ -62,8 +63,8 @@ public class FeatureGenerationStage implements GenerationStage, StringIdentifiab int tz = cz + chunkZ; world.getBiomeProvider() .getColumn( - tx + (doBlending ? (int) (blendSampler.noise(seed, tx, tz) * blendAmplitude) : 0), - tz + (doBlending ? (int) (blendSampler.noise(seed + 1, tx, tz) * blendAmplitude) : 0), + tx + (doBlending ? (int) (blendSampler.getSample(seed, tx, tz) * blendAmplitude) : 0), + tz + (doBlending ? (int) (blendSampler.getSample(seed + 1, tx, tz) * blendAmplitude) : 0), world) .forRanges(resolution, (min, max, biome) -> { for(int subChunkX = 0; subChunkX < resolution; subChunkX++) { diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/FeatureStageTemplate.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/FeatureStageTemplate.java index d0fae0e1f..0e788d585 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/FeatureStageTemplate.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/FeatureStageTemplate.java @@ -8,7 +8,7 @@ import com.dfsek.tectonic.api.exception.ValidationException; import com.dfsek.terra.addons.generation.feature.FeatureGenerationStage; import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.properties.PropertyKey; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; @@ -25,14 +25,14 @@ public class FeatureStageTemplate implements ObjectTemplate, Va @Value("blend.sampler") @Default - private NoiseSampler blendSampler = new NoiseSampler() { + private Sampler blendSampler = new Sampler() { @Override - public double noise(long seed, double x, double y) { + public double getSample(long seed, double x, double y) { return 0; } @Override - public double noise(long seed, double x, double y, double z) { + public double getSample(long seed, double x, double y, double z) { return 0; } }; diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java index b29920160..43a7a3221 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java @@ -15,8 +15,8 @@ import com.dfsek.terra.addons.image.config.colorsampler.mutate.RotateColorSample import com.dfsek.terra.addons.image.config.colorsampler.mutate.TranslateColorSamplerTemplate; import com.dfsek.terra.addons.image.config.image.ImageTemplate; import com.dfsek.terra.addons.image.config.image.StitchedImageTemplate; -import com.dfsek.terra.addons.image.config.noisesampler.ChannelNoiseSamplerTemplate; -import com.dfsek.terra.addons.image.config.noisesampler.DistanceTransformNoiseSamplerTemplate; +import com.dfsek.terra.addons.image.config.sampler.ChannelSamplerTemplate; +import com.dfsek.terra.addons.image.config.sampler.DistanceTransformSamplerTemplate; import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.operator.DistanceTransform; import com.dfsek.terra.addons.manifest.api.AddonInitializer; @@ -26,7 +26,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; @@ -39,7 +39,7 @@ public class ImageLibraryAddon implements AddonInitializer { public static final TypeKey>> COLOR_PICKER_REGISTRY_KEY = new TypeKey<>() { }; - public static final TypeKey>> NOISE_SAMPLER_TOKEN = new TypeKey<>() { + public static final TypeKey>> NOISE_SAMPLER_TOKEN = new TypeKey<>() { }; @Inject private Platform platform; @@ -71,10 +71,10 @@ public class ImageLibraryAddon implements AddonInitializer { (type, o, loader, depthTracker) -> DistanceTransform.Normalization.valueOf((String) o)) .applyLoader(ColorString.class, new ColorLoader()); - CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry( + CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry( NOISE_SAMPLER_TOKEN); - noiseRegistry.register(addon.key("DISTANCE_TRANSFORM"), DistanceTransformNoiseSamplerTemplate::new); - noiseRegistry.register(addon.key("CHANNEL"), ChannelNoiseSamplerTemplate::new); + noiseRegistry.register(addon.key("DISTANCE_TRANSFORM"), DistanceTransformSamplerTemplate::new); + noiseRegistry.register(addon.key("CHANNEL"), ChannelSamplerTemplate::new); }) .then(event -> { CheckedRegistry>> colorSamplerRegistry = event.getPack().getOrCreateRegistry( diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/mutate/RotateColorSampler.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/mutate/RotateColorSampler.java index a356a0787..b813fa841 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/mutate/RotateColorSampler.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/mutate/RotateColorSampler.java @@ -1,7 +1,8 @@ package com.dfsek.terra.addons.image.colorsampler.mutate; +import com.dfsek.seismic.math.trigonometry.TrigonometryFunctions; + import com.dfsek.terra.addons.image.colorsampler.ColorSampler; -import com.dfsek.terra.api.util.MathUtil; public class RotateColorSampler implements ColorSampler { @@ -39,14 +40,14 @@ public class RotateColorSampler implements ColorSampler { case DEG_90 -> -z; case DEG_180 -> -x; case DEG_270 -> z; - case RAD_ANY -> (int) (x * MathUtil.cos(radians) - z * MathUtil.sin(radians)); + case RAD_ANY -> (int) (x * TrigonometryFunctions.cos(radians) - z * TrigonometryFunctions.sin(radians)); }; int rz = switch(rotationMethod) { case DEG_0 -> z; case DEG_90 -> x; case DEG_180 -> -z; case DEG_270 -> -x; - case RAD_ANY -> (int) (z * MathUtil.cos(radians) + x * MathUtil.sin(radians)); + case RAD_ANY -> (int) (z * TrigonometryFunctions.cos(radians) + x * TrigonometryFunctions.sin(radians)); }; return sampler.apply(rx, rz); } diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/noisesampler/ChannelNoiseSamplerTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/ChannelSamplerTemplate.java similarity index 70% rename from common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/noisesampler/ChannelNoiseSamplerTemplate.java rename to common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/ChannelSamplerTemplate.java index b6631a149..6f163db55 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/noisesampler/ChannelNoiseSamplerTemplate.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/ChannelSamplerTemplate.java @@ -1,16 +1,16 @@ -package com.dfsek.terra.addons.image.config.noisesampler; +package com.dfsek.terra.addons.image.config.sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.image.colorsampler.ColorSampler; -import com.dfsek.terra.addons.image.noisesampler.ChannelNoiseSampler; +import com.dfsek.terra.addons.image.sampler.ChannelSampler; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; -public class ChannelNoiseSamplerTemplate implements ObjectTemplate { +public class ChannelSamplerTemplate implements ObjectTemplate { @Value("color-sampler") private ColorSampler colorSampler; @@ -35,7 +35,7 @@ public class ChannelNoiseSamplerTemplate implements ObjectTemplate private boolean premultiply = false; @Override - public NoiseSampler get() { - return new ChannelNoiseSampler(colorSampler, channel, normalize, premultiply); + public Sampler get() { + return new ChannelSampler(colorSampler, channel, normalize, premultiply); } } diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/noisesampler/DistanceTransformNoiseSamplerTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/DistanceTransformSamplerTemplate.java similarity index 91% rename from common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/noisesampler/DistanceTransformNoiseSamplerTemplate.java rename to common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/DistanceTransformSamplerTemplate.java index 222ff48fd..3eea5b9d9 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/noisesampler/DistanceTransformNoiseSamplerTemplate.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/DistanceTransformSamplerTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.image.config.noisesampler; +package com.dfsek.terra.addons.image.config.sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; @@ -9,10 +9,10 @@ import com.dfsek.terra.addons.image.operator.DistanceTransform; import com.dfsek.terra.addons.image.operator.DistanceTransform.CostFunction; import com.dfsek.terra.addons.image.operator.DistanceTransform.Normalization; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; -public class DistanceTransformNoiseSamplerTemplate implements ObjectTemplate { +public class DistanceTransformSamplerTemplate implements ObjectTemplate { @Value("image") private Image image; @@ -68,7 +68,7 @@ public class DistanceTransformNoiseSamplerTemplate implements ObjectTemplate= transform.width || y >= transform.height) return transform.minDistance; return transform.distances[(int) Math.floor(x)][(int) Math.floor(y)]; } @Override - public double noise(long seed, double x, double y, double z) { - return noise(seed, x, z); + public double getSample(long seed, double x, double y, double z) { + return getSample(seed, x, z); } } } diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/noisesampler/ChannelNoiseSampler.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/ChannelSampler.java similarity index 67% rename from common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/noisesampler/ChannelNoiseSampler.java rename to common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/ChannelSampler.java index 43410d714..7c01e52eb 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/noisesampler/ChannelNoiseSampler.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/ChannelSampler.java @@ -1,14 +1,14 @@ -package com.dfsek.terra.addons.image.noisesampler; +package com.dfsek.terra.addons.image.sampler; import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.image.util.ColorUtil; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; import static com.dfsek.terra.addons.image.util.MathUtil.lerp; -public class ChannelNoiseSampler implements NoiseSampler { +public class ChannelSampler implements Sampler { private final ColorSampler colorSampler; @@ -18,7 +18,7 @@ public class ChannelNoiseSampler implements NoiseSampler { private final boolean premultiply; - public ChannelNoiseSampler(ColorSampler colorSampler, Channel channel, boolean normalize, boolean premultiply) { + public ChannelSampler(ColorSampler colorSampler, Channel channel, boolean normalize, boolean premultiply) { this.colorSampler = colorSampler; this.channel = channel; this.normalize = normalize; @@ -26,7 +26,7 @@ public class ChannelNoiseSampler implements NoiseSampler { } @Override - public double noise(long seed, double x, double y) { + public double getSample(long seed, double x, double y) { int sample = colorSampler.apply((int) x, (int) y); int premultiplied = premultiply ? ColorUtil.premultiply(sample) : sample; double channelValue = channel.from(premultiplied); @@ -34,7 +34,7 @@ public class ChannelNoiseSampler implements NoiseSampler { } @Override - public double noise(long seed, double x, double y, double z) { - return noise(seed, x, z); + public double getSample(long seed, double x, double y, double z) { + return getSample(seed, x, z); } } diff --git a/common/addons/structure-block-shortcut/src/main/java/com/dfsek/terra/addons/palette/shortcut/block/SingletonStructure.java b/common/addons/structure-block-shortcut/src/main/java/com/dfsek/terra/addons/palette/shortcut/block/SingletonStructure.java index b8da27192..3d728b97d 100644 --- a/common/addons/structure-block-shortcut/src/main/java/com/dfsek/terra/addons/palette/shortcut/block/SingletonStructure.java +++ b/common/addons/structure-block-shortcut/src/main/java/com/dfsek/terra/addons/palette/shortcut/block/SingletonStructure.java @@ -2,10 +2,11 @@ package com.dfsek.terra.addons.palette.shortcut.block; import java.util.random.RandomGenerator; +import com.dfsek.seismic.type.Rotation; + import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.Rotation; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; diff --git a/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java index 5fbc42028..6c482249b 100644 --- a/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java +++ b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java @@ -2,11 +2,12 @@ package com.dfsek.terra.addons.structure.mutator; import java.util.random.RandomGenerator; +import com.dfsek.seismic.type.Rotation; + import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.Rotation; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; import com.dfsek.terra.api.world.util.ReadInterceptor; import com.dfsek.terra.api.world.util.WriteInterceptor; diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java index 355a3056c..2444f0d40 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java @@ -31,7 +31,7 @@ import com.dfsek.terra.api.inject.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.FileUtil; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3Int; public class SpongeSchematicAddon implements AddonInitializer { diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java index 76f1e4926..9dae8e27b 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java @@ -9,13 +9,14 @@ package com.dfsek.terra.addons.sponge; import java.util.random.RandomGenerator; +import com.dfsek.seismic.type.Rotation; + import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.Rotation; -import com.dfsek.terra.api.util.vector.Vector2Int; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector2Int; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; @@ -44,7 +45,7 @@ public class SpongeStructure implements Structure, Keyed { for(int z = 0; z < blocks[x].length; z++) { int oX = x + offsetX; int oZ = z + offsetZ; - Vector2Int r = Vector2Int.of(oX, oZ).rotate(rotation); + Vector2Int r = Vector2Int.Mutable.of(oX, oZ).rotate(rotation); int rX = r.getX(); int rZ = r.getZ(); for(int y = 0; y < blocks[x][z].length; y++) { 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 2ad62d028..aee9251d1 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 @@ -13,7 +13,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import static com.dfsek.terra.api.util.MathUtil.EPSILON; +import static com.dfsek.seismic.math.floatingpoint.FloatingPointConstants.EPSILON; public class EqualsStatement extends BinaryOperation { 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 4e96e2872..f162a4720 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 @@ -13,7 +13,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import static com.dfsek.terra.api.util.MathUtil.EPSILON; +import static com.dfsek.seismic.math.floatingpoint.FloatingPointConstants.EPSILON; public class NotEqualsStatement extends BinaryOperation { 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 a6e9249ad..3600fb4e2 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 @@ -7,6 +7,9 @@ package com.dfsek.terra.addons.terrascript.script; +import com.dfsek.seismic.math.algebra.AlgebraFunctions; +import com.dfsek.seismic.math.trigonometry.TrigonometryFunctions; +import com.dfsek.seismic.type.Rotation; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,9 +46,7 @@ import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.util.Rotation; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; @@ -105,14 +106,14 @@ public class StructureScript implements Structure, Keyed { .registerFunction("pow", new BinaryNumberFunctionBuilder( (number, number2) -> Math.pow(number.doubleValue(), number2.doubleValue()))) .registerFunction("sqrt", new UnaryNumberFunctionBuilder(number -> Math.sqrt(number.doubleValue()))) - .registerFunction("rsqrt", new UnaryNumberFunctionBuilder(number -> MathUtil.invSqrt(number.doubleValue()))) + .registerFunction("rsqrt", new UnaryNumberFunctionBuilder(number -> AlgebraFunctions.invSqrt(number.doubleValue()))) .registerFunction("floor", new UnaryNumberFunctionBuilder(number -> Math.floor(number.doubleValue()))) .registerFunction("ceil", new UnaryNumberFunctionBuilder(number -> Math.ceil(number.doubleValue()))) .registerFunction("log", new UnaryNumberFunctionBuilder(number -> Math.log(number.doubleValue()))) .registerFunction("round", new UnaryNumberFunctionBuilder(number -> Math.round(number.doubleValue()))) - .registerFunction("sin", new UnaryNumberFunctionBuilder(number -> MathUtil.sin(number.doubleValue()))) - .registerFunction("cos", new UnaryNumberFunctionBuilder(number -> MathUtil.cos(number.doubleValue()))) - .registerFunction("tan", new UnaryNumberFunctionBuilder(number -> MathUtil.tan(number.doubleValue()))) + .registerFunction("sin", new UnaryNumberFunctionBuilder(number -> TrigonometryFunctions.sin(number.doubleValue()))) + .registerFunction("cos", new UnaryNumberFunctionBuilder(number -> TrigonometryFunctions.cos(number.doubleValue()))) + .registerFunction("tan", new UnaryNumberFunctionBuilder(number -> TrigonometryFunctions.tan(number.doubleValue()))) .registerFunction("asin", new UnaryNumberFunctionBuilder(number -> Math.asin(number.doubleValue()))) .registerFunction("acos", new UnaryNumberFunctionBuilder(number -> Math.acos(number.doubleValue()))) .registerFunction("atan", new UnaryNumberFunctionBuilder(number -> Math.atan(number.doubleValue()))) 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 fe91fc356..74c4a6a5e 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 @@ -11,10 +11,11 @@ import java.util.HashMap; import java.util.Map; import java.util.random.RandomGenerator; +import com.dfsek.seismic.type.Rotation; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.util.Rotation; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; 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 0ec4fb8c6..14cb8b381 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 @@ -7,15 +7,15 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.type.vector.Vector2; + 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.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; 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.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -36,15 +36,14 @@ public class BiomeFunction implements Function { public String apply(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()), - arguments.getRotation()); + Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); + BiomeProvider grid = arguments.getWorld().getBiomeProvider(); - return grid.getBiome(arguments.getOrigin() - .toVector3() + return grid.getBiome(arguments.getOrigin().toFloat() .mutable() .add(Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), 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 35cf15cf6..fb8ffa22e 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 @@ -22,9 +22,8 @@ import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; public class BlockFunction implements Function { @@ -69,12 +68,12 @@ public class BlockFunction implements Function { void setBlock(ImplementationArguments implementationArguments, Scope scope, TerraImplementationArguments arguments, BlockState rot) { - Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()), arguments.getRotation()); + Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); try { Vector3.Mutable set = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).doubleValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin()); + (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()); BlockState current = arguments.getWorld().getBlockState(set); if(overwrite.apply(implementationArguments, scope) || current.isAir()) { arguments.getWorld().setBlockState(set, rot, physics.apply(implementationArguments, scope)); 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 b005b68b8..fd3465c45 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 @@ -13,9 +13,8 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; 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.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; public class CheckBlockFunction implements Function { @@ -34,14 +33,12 @@ public class CheckBlockFunction implements Function { public String apply(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()), - arguments.getRotation()); + Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); String data = arguments.getWorld() - .getBlockState(arguments.getOrigin() - .toVector3() + .getBlockState(arguments.getOrigin().toFloat() .mutable() .add(Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope) 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 913a9e370..d1b664019 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 @@ -19,9 +19,8 @@ import com.dfsek.terra.api.Platform; 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.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; public class EntityFunction implements Function { @@ -45,13 +44,13 @@ public class EntityFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()), arguments.getRotation()); + Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); Entity entity = arguments.getWorld().spawnEntity(Vector3.of(xz.getX(), y.apply(implementationArguments, scope).doubleValue(), xz.getZ()) .mutable() - .add(arguments.getOrigin()) + .add(arguments.getOrigin().toFloat()) .add(0.5, 0, 0.5) .immutable(), data); platform.getEventManager().callEvent(new EntitySpawnEvent(entity.world().getPack(), entity)); 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 4ec80ebf8..b98dda159 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 @@ -13,9 +13,8 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; 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.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; public class GetMarkFunction implements Function { @@ -32,14 +31,14 @@ public class GetMarkFunction implements Function { @Override public String apply(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()), arguments.getRotation()); + Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); String mark = arguments.getMark(Vector3.of((int) Math.floor(xz.getX()), (int) Math.floor( y.apply(implementationArguments, scope).doubleValue()), (int) Math.floor(xz.getZ())) .mutable() - .add(arguments.getOrigin()) + .add(arguments.getOrigin().toFloat()) .immutable()); return mark == null ? "" : mark; } 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 520385d6f..5fcc8e46b 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 @@ -27,9 +27,8 @@ import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; public class LootFunction implements Function { @@ -56,9 +55,8 @@ public class LootFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()), - arguments.getRotation()); + Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); String id = data.apply(implementationArguments, scope); @@ -69,7 +67,7 @@ public class LootFunction implements Function { Vector3 apply = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope) .intValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); + (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(); try { BlockEntity data = arguments.getWorld().getBlockEntity(apply); 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 4fad5cc57..b6cbd2bde 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 @@ -17,9 +17,8 @@ import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; public class PullFunction implements Function { @@ -41,17 +40,17 @@ public class PullFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()), arguments.getRotation()); + Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); Vector3.Mutable mutable = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin()); + (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()); while(mutable.getY() > arguments.getWorld().getMinHeight()) { if(!arguments.getWorld().getBlockState(mutable).isAir()) { arguments.getWorld().setBlockState(mutable, data); break; } - mutable.subtract(0, 1, 0); + mutable.sub(0, 1, 0); } return null; } 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 50ff0677c..905ff23ae 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 @@ -13,9 +13,8 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; 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.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; public class SetMarkFunction implements Function { @@ -34,14 +33,14 @@ public class SetMarkFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()), arguments.getRotation()); + Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); arguments.setMark(Vector3.of((int) Math.floor(xz.getX()), (int) Math.floor( y.apply(implementationArguments, scope).doubleValue()), - (int) Math.floor(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(), + (int) Math.floor(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(), mark.apply(implementationArguments, scope)); return null; } 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 6e7756685..fbc9dfced 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 @@ -17,9 +17,8 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.block.entity.BlockEntity; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; public class StateFunction implements Function { @@ -40,12 +39,12 @@ public class StateFunction implements Function { @Override public Void apply(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()), arguments.getRotation()); + Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); Vector3 origin = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); + (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(); try { BlockEntity state = arguments.getWorld().getBlockEntity(origin); state.applyState(data.apply(implementationArguments, scope)); 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 9b2523086..c62efde0a 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 @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.type.Rotation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,9 +23,7 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.Rotation; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector2; public class StructureFunction implements Function { @@ -60,8 +59,8 @@ public class StructureFunction implements Function { if(arguments.getRecursions() > platform.getTerraConfig().getMaxRecursion()) throw new RuntimeException("Structure recursion too deep: " + arguments.getRecursions()); - Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()), arguments.getRotation()); + Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); String app = id.apply(implementationArguments, scope); diff --git a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java index 64d24b3d8..0e9972fc0 100644 --- a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java +++ b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java @@ -15,9 +15,8 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; 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.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.WritableWorld; @@ -41,12 +40,10 @@ public class CheckFunction implements Function { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = Vector2.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()); + Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); - RotationUtil.rotateVector(xz, arguments.getRotation()); - - Vector3 location = arguments.getOrigin().toVector3Mutable().add( + Vector3 location = arguments.getOrigin().toFloat().mutable().add( Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).doubleValue(), (int) Math.round(xz.getZ()))).immutable(); @@ -64,7 +61,7 @@ public class CheckFunction implements Function { } private String apply(Vector3 vector, WritableWorld world) { - int y = vector.getBlockY(); + int y = vector.getFloorY(); if(y >= world.getMaxHeight() || y < 0) return "AIR"; SamplerProvider cache = ((NoiseChunkGenerator3D) world.getGenerator()).samplerProvider(); double comp = sample(vector.getX(), vector.getY(), vector.getZ(), cache, world); @@ -72,7 +69,7 @@ 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(); - //TerraBiome b = provider.getBiome(vector.getBlockX(), vector.getBlockZ()); + //TerraBiome b = provider.getBiome(vector.getFloorX(), vector.getFloorZ()); /*if(vector.getY() > c.getSeaLevel())*/ return "AIR"; // Above sea level diff --git a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/ConstantSamplerFunction.java b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/ConstantSamplerFunction.java index 7b887bafe..1cdbe0f07 100644 --- a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/ConstantSamplerFunction.java +++ b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/ConstantSamplerFunction.java @@ -6,18 +6,18 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; public class ConstantSamplerFunction implements Function { private final Returnable x, y, z; - private final NoiseSampler sampler; + private final Sampler sampler; private final boolean twoD; private final Position position; - public ConstantSamplerFunction(NoiseSampler sampler, + public ConstantSamplerFunction(Sampler sampler, Returnable x, Returnable y, Returnable z, @@ -39,10 +39,10 @@ public class ConstantSamplerFunction implements Function { double z = this.z.apply(implementationArguments, scope).doubleValue(); if(twoD) { - return sampler.noise(arguments.getWorld().getSeed(), x, z); + return sampler.getSample(arguments.getWorld().getSeed(), x, z); } else { double y = this.y.apply(implementationArguments, scope).doubleValue(); - return sampler.noise(arguments.getWorld().getSeed(), x, y, z); + return sampler.getSample(arguments.getWorld().getSeed(), x, y, z); } } diff --git a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunction.java b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunction.java index ac342fc38..c813fc13c 100644 --- a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunction.java +++ b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunction.java @@ -8,14 +8,14 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.seismic.type.sampler.Sampler; public class SamplerFunction implements Function { private final Returnable x, y, z; private final Returnable function; - private final java.util.function.Function, NoiseSampler> samplerFunction; + private final java.util.function.Function, Sampler> samplerFunction; private final boolean twoD; private final Position position; @@ -24,7 +24,7 @@ public class SamplerFunction implements Function { Returnable x, Returnable y, Returnable z, - java.util.function.Function, NoiseSampler> samplerFunction, + java.util.function.Function, Sampler> samplerFunction, boolean twoD, Position position) { this.x = x; @@ -43,12 +43,12 @@ public class SamplerFunction implements Function { double z = this.z.apply(implementationArguments, scope).doubleValue(); - NoiseSampler sampler = samplerFunction.apply(() -> function.apply(implementationArguments, scope)); + Sampler sampler = samplerFunction.apply(() -> function.apply(implementationArguments, scope)); if(twoD) { - return sampler.noise(arguments.getWorld().getSeed(), x, z); + return sampler.getSample(arguments.getWorld().getSeed(), x, z); } else { double y = this.y.apply(implementationArguments, scope).doubleValue(); - return sampler.noise(arguments.getWorld().getSeed(), x, y, z); + return sampler.getSample(arguments.getWorld().getSeed(), x, y, z); } } diff --git a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunctionBuilder.java b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunctionBuilder.java index 604e205b6..d48cfeaea 100644 --- a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunctionBuilder.java +++ b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunctionBuilder.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; +import com.dfsek.terra.addons.noise.config.DimensionApplicableSampler; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable.ReturnType; import com.dfsek.terra.addons.terrascript.parser.lang.constants.NumericConstant; @@ -15,10 +15,10 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class SamplerFunctionBuilder implements FunctionBuilder> { - private final Map samplers2d; - private final Map samplers3d; + private final Map samplers2d; + private final Map samplers3d; - public SamplerFunctionBuilder(Map samplers) { + public SamplerFunctionBuilder(Map samplers) { this.samplers2d = new HashMap<>(); this.samplers3d = new HashMap<>(); diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 1f99839bd..b8aad060e 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -1,12 +1,15 @@ dependencies { - api("ca.solo-studios", "strata", Versions.Libraries.strata) + compileOnlyApi("org.slf4j", "slf4j-api", Versions.Libraries.slf4j) testImplementation("org.slf4j", "slf4j-api", Versions.Libraries.slf4j) api("org.incendo", "cloud-core", Versions.Libraries.cloud) - api("com.dfsek.tectonic", "common", Versions.Libraries.tectonic) + api("com.github.ben-manes.caffeine", "caffeine", Versions.Libraries.caffeine) + api("com.dfsek.tectonic", "common", Versions.Libraries.tectonic) + api("ca.solo-studios", "strata", Versions.Libraries.strata) api("com.dfsek", "paralithic", Versions.Libraries.paralithic) + api("com.dfsek", "seismic", Versions.Libraries.seismic) } \ No newline at end of file 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 55aa4ad83..b8b40eabd 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 @@ -7,9 +7,10 @@ package com.dfsek.terra.api.block.entity; +import com.dfsek.seismic.type.vector.Vector3; + import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.vector.Vector3; public interface BlockEntity extends Handle { 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 d102af7ed..258f46242 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 @@ -7,7 +7,8 @@ package com.dfsek.terra.api.block.state.properties.enums; -import com.dfsek.terra.api.util.Rotation; +import com.dfsek.seismic.type.Rotation; + import com.dfsek.terra.api.util.generic.Construct; 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 0ab360389..b5e77f2b4 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 @@ -8,7 +8,7 @@ package com.dfsek.terra.api.entity; import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; 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 a97a0833a..5a5fb2b54 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,7 +15,7 @@ import com.dfsek.terra.api.event.events.AbstractCancellable; 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.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; /** 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 42604da86..50110782f 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 @@ -7,7 +7,8 @@ package com.dfsek.terra.api.inventory; -import com.dfsek.terra.api.util.vector.Vector3; + +import com.dfsek.seismic.type.vector.Vector3; public interface BlockInventoryHolder extends InventoryHolder { diff --git a/common/api/src/main/java/com/dfsek/terra/api/noise/DerivativeNoiseSampler.java b/common/api/src/main/java/com/dfsek/terra/api/noise/DerivativeNoiseSampler.java deleted file mode 100644 index 07fa70da3..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/DerivativeNoiseSampler.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.dfsek.terra.api.noise; - -/** - * A NoiseSampler which additionally may provide a 1st directional derivative - */ -public interface DerivativeNoiseSampler extends NoiseSampler { - - static boolean isDifferentiable(NoiseSampler sampler) { - return sampler instanceof DerivativeNoiseSampler dSampler && dSampler.isDifferentiable(); - } - - /** - * Samplers may or may not be able to provide a derivative depending on what - * inputs they take, this method signals whether this is the case. - * - * @return If the noise sampler provides a derivative or not - */ - boolean isDifferentiable(); - - /** - * Derivative return version of standard 2D noise evaluation - * - * @param seed - * @param x - * @param y - * - * @return 3 element array, in index order: noise value, partial x derivative, partial y derivative - */ - double[] noised(long seed, double x, double y); - - /** - * Derivative return version of standard 3D noise evaluation - * - * @param seed - * @param x - * @param y - * @param z - * - * @return 4 element array, in index order: noise value, partial x derivative, partial y derivative, partial z derivative - */ - double[] noised(long seed, double x, double y, double z); -} 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 deleted file mode 100644 index 35e6bea9b..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra API is licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in the common/api directory. - */ - -package com.dfsek.terra.api.noise; - - -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector2Int; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.util.vector.Vector3Int; - - -public interface NoiseSampler { - static NoiseSampler zero() { - return new NoiseSampler() { - @Override - public double noise(long seed, double x, double y) { - return 0; - } - - @Override - public double noise(long seed, double x, double y, double z) { - return 0; - } - }; - } - - default double noise(Vector3 vector3, long seed) { - return noise(seed, vector3.getX(), vector3.getY(), vector3.getZ()); - } - - default double noise(Vector3Int vector3, long seed) { - return noise(seed, vector3.getX(), vector3.getY(), vector3.getZ()); - } - - - default double noise(Vector2 vector2, long seed) { - return noise(seed, vector2.getX(), vector2.getZ()); - } - - default double noise(Vector2Int vector2, long seed) { - return noise(seed, vector2.getX(), vector2.getZ()); - } - - double noise(long seed, double x, double y); - - default double noise(long seed, int x, int y) { - return noise(seed, (double) x, y); - } - - double noise(long seed, double x, double y, double z); - - default double noise(long seed, int x, int y, int z) { - return noise(seed, (double) x, y, z); - } -} 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 9a8255630..59f1efba6 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 @@ -9,8 +9,8 @@ package com.dfsek.terra.api.structure; import java.util.random.RandomGenerator; -import com.dfsek.terra.api.util.Rotation; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.Rotation; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; 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 index a55212433..11d1ba001 100644 --- 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 @@ -9,7 +9,7 @@ package com.dfsek.terra.api.structure; import org.jetbrains.annotations.ApiStatus.Experimental; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; @Experimental 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 93f6d2ad9..aa48f641d 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 @@ -12,7 +12,7 @@ import org.jetbrains.annotations.ApiStatus.Experimental; import com.dfsek.terra.api.registry.key.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.range.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; 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 index 393dcf7d1..9e4afc43a 100644 --- 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 @@ -10,7 +10,7 @@ package com.dfsek.terra.api.structure.feature; import java.util.function.BooleanSupplier; import java.util.function.IntConsumer; -import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.range.Range; import com.dfsek.terra.api.util.function.IntToBooleanFunction; import com.dfsek.terra.api.util.generic.Lazy; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/GeometryUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/GeometryUtil.java deleted file mode 100644 index 3cecfbfbc..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/GeometryUtil.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.dfsek.terra.api.util; - -import java.util.function.Consumer; - -import com.dfsek.terra.api.util.vector.Vector3Int; - - -public final class GeometryUtil { - private GeometryUtil() { - - } - - public static void sphere(Vector3Int origin, int radius, Consumer action) { - for(int x = -radius; x <= radius; x++) { - for(int y = -radius; y <= radius; y++) { - for(int z = -radius; z <= radius; z++) { - if(x * x + y * y + z * z <= radius * radius) { - action.accept(Vector3Int.of(origin, x, y, z)); - } - } - } - } - } - - public static void cube(Vector3Int origin, int radius, Consumer action) { - for(int x = -radius; x <= radius; x++) { - for(int y = -radius; y <= radius; y++) { - for(int z = -radius; z <= radius; z++) { - action.accept(Vector3Int.of(origin, x, y, z)); - } - } - } - } -} 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 deleted file mode 100644 index cd0f37ce8..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra API is licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in the common/api directory. - */ - -package com.dfsek.terra.api.util; - -import java.util.List; - - -/** - * Utility class for mathematical functions. - */ -public final class MathUtil { - /** - * Epsilon for fuzzy floating point comparisons. - */ - public static final double EPSILON = 1.0E-5; - private static final int SIN_BITS, SIN_MASK, SIN_COUNT; - private static final double radFull, radToIndex; - private static final double degFull, degToIndex; - private static final double[] sin, cos; - static { - SIN_BITS = 12; - SIN_MASK = ~(-1 << SIN_BITS); - SIN_COUNT = SIN_MASK + 1; - - radFull = Math.PI * 2.0; - degFull = 360.0; - radToIndex = SIN_COUNT / radFull; - degToIndex = SIN_COUNT / degFull; - - sin = new double[SIN_COUNT]; - cos = new double[SIN_COUNT]; - - for(int i = 0; i < SIN_COUNT; i++) { - sin[i] = Math.sin((i + 0.5f) / SIN_COUNT * radFull); - cos[i] = Math.cos((i + 0.5f) / SIN_COUNT * radFull); - } - - // Four cardinal directions (credits: Nate) - for(int i = 0; i < 360; i += 90) { - sin[(int) (i * degToIndex) & SIN_MASK] = Math.sin(i * Math.PI / 180.0); - cos[(int) (i * degToIndex) & SIN_MASK] = Math.cos(i * Math.PI / 180.0); - } - } - - public static double sin(double rad) { - return sin[(int) (rad * radToIndex) & SIN_MASK]; - } - - public static double cos(double rad) { - return cos[(int) (rad * radToIndex) & SIN_MASK]; - } - - public static double tan(double rad) { - return sin(rad) / cos(rad); - } - - public static double invSqrt(double x) { - double halfX = 0.5d * x; - long i = Double.doubleToLongBits(x); // evil floating point bit level hacking - i = 0x5FE6EC85E7DE30DAL - (i >> 1); // what the fuck? - double y = Double.longBitsToDouble(i); - y *= (1.5d - halfX * y * y); // 1st newtonian iteration - // y *= (1.5d - halfX * y * y); // 2nd newtonian iteration, this can be removed - - return y; - } - - /** - * Gets the standard deviation of an array of doubles. - * - * @param numArray The array of numbers to calculate the standard deviation of. - * - * @return double - The standard deviation. - */ - public static double standardDeviation(List numArray) { - double sum = 0.0, standardDeviation = 0.0; - int length = numArray.size(); - - for(Number num : numArray) { - sum += num.doubleValue(); - } - - double mean = sum / length; - - for(Number num : numArray) { - standardDeviation += Math.pow(num.doubleValue() - mean, 2); - } - - return Math.sqrt(standardDeviation / length); - } - - public static long hashToLong(String s) { - if(s == null) { - return 0; - } - long hash = 0; - for(char c : s.toCharArray()) { - hash = 31L * hash + c; - } - return hash; - } - - /** - * Compare 2 floating-point values with epsilon to account for rounding errors - * - * @param a Value 1 - * @param b Value 2 - * - * @return Whether these values are equal - */ - public static boolean equals(double a, double b) { - return a == b || Math.abs(a - b) < EPSILON; - } - - public static int normalizeIndex(double val, int size) { - return Math.max(Math.min((int) Math.floor(((val + 1D) / 2D) * size), size - 1), 0); - } - - public static long squash(int first, int last) { - return (((long) first) << 32) | (last & 0xffffffffL); - } - - /** - * Clamp value to range of [-1, 1] - * - * @param in Value to clamp - * - * @return Clamped value - */ - public static double clamp(double in) { - return Math.min(Math.max(in, -1), 1); - } - - public static int clamp(int min, int i, int max) { - return Math.max(Math.min(i, max), min); - } - - /** - * Compute the value in a normally distributed data set that has probability p. - * - * @param p Probability of value - * @param mu Mean of data - * @param sigma Standard deviation of data - * - * @return Value corresponding to input probability - */ - public static double normalInverse(double p, double mu, double sigma) { - if(p < 0 || p > 1) - throw new IllegalArgumentException("Probability must be in range [0, 1]"); - if(sigma < 0) - throw new IllegalArgumentException("Standard deviation must be positive."); - if(p == 0) - return Double.NEGATIVE_INFINITY; - if(p == 1) - return Double.POSITIVE_INFINITY; - if(sigma == 0) - return mu; - double q, r, val; - - q = p - 0.5; - - if(Math.abs(q) <= .425) { - r = .180625 - q * q; - val = - q * (((((((r * 2509.0809287301226727 + - 33430.575583588128105) * r + 67265.770927008700853) * r + - 45921.953931549871457) * r + 13731.693765509461125) * r + - 1971.5909503065514427) * r + 133.14166789178437745) * r + - 3.387132872796366608) - / (((((((r * 5226.495278852854561 + - 28729.085735721942674) * r + 39307.89580009271061) * r + - 21213.794301586595867) * r + 5394.1960214247511077) * r + - 687.1870074920579083) * r + 42.313330701600911252) * r + 1); - } else { - if(q > 0) { - r = 1 - p; - } else { - r = p; - } - - r = Math.sqrt(-Math.log(r)); - - if(r <= 5) { - r -= 1.6; - val = (((((((r * 7.7454501427834140764e-4 + - .0227238449892691845833) * r + .24178072517745061177) * - r + 1.27045825245236838258) * r + - 3.64784832476320460504) * r + 5.7694972214606914055) * - r + 4.6303378461565452959) * r + - 1.42343711074968357734) - / (((((((r * - 1.05075007164441684324e-9 + 5.475938084995344946e-4) * - r + .0151986665636164571966) * r + - .14810397642748007459) * r + .68976733498510000455) * - r + 1.6763848301838038494) * r + - 2.05319162663775882187) * r + 1); - } else { - r -= 5; - val = (((((((r * 2.01033439929228813265e-7 + - 2.71155556874348757815e-5) * r + - .0012426609473880784386) * r + .026532189526576123093) * - r + .29656057182850489123) * r + - 1.7848265399172913358) * r + 5.4637849111641143699) * - r + 6.6579046435011037772) - / (((((((r * - 2.04426310338993978564e-15 + 1.4215117583164458887e-7) * - r + 1.8463183175100546818e-5) * r + - 7.868691311456132591e-4) * r + .0148753612908506148525) - * r + .13692988092273580531) * r + - .59983220655588793769) * r + 1); - } - - if(q < 0.0) { - val = -val; - } - } - - return mu + sigma * val; - } - - /** - * Murmur64 hashing function - * - * @param h Input value - * - * @return Hashed value - */ - public static long murmur64(long h) { - h ^= h >>> 33; - h *= 0xff51afd7ed558ccdL; - h ^= h >>> 33; - h *= 0xc4ceb9fe1a85ec53L; - h ^= h >>> 33; - return h; - } - - /** - * 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); - } - - public 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; - } - - public static double interpHermite(double t) { - return t * t * (3 - 2 * t); - } - - public static double interpQuintic(double t) { - return t * t * t * (t * (t * 6 - 15) + 10); - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java deleted file mode 100644 index 75e53f2ad..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra API is licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in the common/api directory. - */ - -package com.dfsek.terra.api.util; - -import java.util.random.RandomGenerator; -import java.util.random.RandomGeneratorFactory; - -import com.dfsek.terra.api.world.chunk.Chunk; - - -public final class PopulationUtil { - public static RandomGenerator getRandom(Chunk c) { - return getRandom(c, 0); - } - - public static RandomGenerator getRandom(Chunk c, long salt) { - return RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create( - 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) { - RandomGenerator r = RandomGeneratorFactory.of("Xoroshiro128PlusPlus").create(seed); - return chunkX * r.nextLong() ^ chunkZ * r.nextLong() ^ seed; - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/Rotation.java b/common/api/src/main/java/com/dfsek/terra/api/util/Rotation.java deleted file mode 100644 index a172928ff..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/Rotation.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra API is licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in the common/api directory. - */ - -package com.dfsek.terra.api.util; - -public enum Rotation { - - CW_90(90), - CW_180(180), - CCW_90(270), - NONE(0); - private final int degrees; - - Rotation(int degrees) { - this.degrees = degrees; - } - - public static Rotation fromDegrees(int deg) { - return switch(Math.floorMod(deg, 360)) { - case 0 -> Rotation.NONE; - case 90 -> Rotation.CW_90; - case 180 -> Rotation.CW_180; - case 270 -> Rotation.CCW_90; - default -> throw new IllegalArgumentException(); - }; - } - - public Rotation inverse() { - return switch(this) { - case NONE -> NONE; - case CCW_90 -> CW_90; - case CW_90 -> CCW_90; - case CW_180 -> CW_180; - }; - } - - public Rotation rotate(Rotation rotation) { - return fromDegrees(this.getDegrees() + rotation.getDegrees()); - } - - public int getDegrees() { - return degrees; - } - - public enum Axis { - X, - Y, - Z - } -} 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 deleted file mode 100644 index 2673cd2bf..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/RotationUtil.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra API is licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in the common/api directory. - */ - -package com.dfsek.terra.api.util; - -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector2.Mutable; - - -public final class RotationUtil { - /** - * Rotate and mirror a coordinate pair. - * - * @param orig Vector to rotate. - * @param r Rotation - * - * @return Rotated vector - */ - public static Vector2 rotateVector(Vector2 orig, Rotation r) { - Mutable copy = orig.mutable(); - switch(r) { - case CW_90 -> copy.setX(orig.getZ()).setZ(-orig.getX()); - case CCW_90 -> copy.setX(-orig.getZ()).setZ(orig.getX()); - case CW_180 -> copy.multiply(-1); - } - return copy.immutable(); - } - - -} 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 abf16d95d..aea2ec113 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 @@ -7,6 +7,8 @@ package com.dfsek.terra.api.util.collection; +import com.dfsek.seismic.math.normalization.NormalizationFunctions; +import com.dfsek.seismic.type.sampler.Sampler; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -19,11 +21,9 @@ import java.util.Set; import java.util.function.Function; import java.util.random.RandomGenerator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.mutable.MutableInteger; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3Int; public class ProbabilityCollection implements Collection { @@ -49,29 +49,29 @@ public class ProbabilityCollection implements Collection { } @SuppressWarnings("unchecked") - public E get(NoiseSampler n, double x, double y, double z, long seed) { + public E get(Sampler n, double x, double y, double z, long seed) { if(array.length == 0) return null; - return (E) array[(int) MathUtil.normalizeIndex(n.noise(seed, x, y, z), array.length)]; + return (E) array[NormalizationFunctions.normalizeIndex(n.getSample(seed, x, y, z), array.length)]; } @SuppressWarnings("unchecked") - public E get(NoiseSampler n, Vector3Int vector3Int, long seed) { + public E get(Sampler n, Vector3Int vector3Int, long seed) { if(array.length == 0) return null; - return (E) array[(int) MathUtil.normalizeIndex(n.noise(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), + return (E) array[(int) NormalizationFunctions.normalizeIndex(n.getSample(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), array.length)]; } @SuppressWarnings("unchecked") - public E get(NoiseSampler n, Vector3 vector3Int, long seed) { + public E get(Sampler n, Vector3 vector3Int, long seed) { if(array.length == 0) return null; - return (E) array[(int) MathUtil.normalizeIndex(n.noise(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), + return (E) array[(int) NormalizationFunctions.normalizeIndex(n.getSample(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), array.length)]; } @SuppressWarnings("unchecked") - public E get(NoiseSampler n, double x, double z, long seed) { + public E get(Sampler n, double x, double z, long seed) { if(array.length == 0) return null; - return (E) array[(int) MathUtil.normalizeIndex(n.noise(seed, x, z), array.length)]; + return (E) array[(int) NormalizationFunctions.normalizeIndex(n.getSample(seed, x, z), array.length)]; } @SuppressWarnings("unchecked") @@ -202,12 +202,12 @@ public class ProbabilityCollection implements Collection { } @Override - public T get(NoiseSampler n, double x, double y, double z, long seed) { + public T get(Sampler n, double x, double y, double z, long seed) { return single; } @Override - public T get(NoiseSampler n, double x, double z, long seed) { + public T get(Sampler n, double x, double z, long seed) { return single; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java b/common/api/src/main/java/com/dfsek/terra/api/util/range/ConstantRange.java similarity index 98% rename from common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java rename to common/api/src/main/java/com/dfsek/terra/api/util/range/ConstantRange.java index 726688558..d791c08fc 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/range/ConstantRange.java @@ -5,7 +5,7 @@ * reference the LICENSE file in the common/api directory. */ -package com.dfsek.terra.api.util; +package com.dfsek.terra.api.util.range; import org.jetbrains.annotations.NotNull; 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/Range.java similarity index 97% rename from common/api/src/main/java/com/dfsek/terra/api/util/Range.java rename to common/api/src/main/java/com/dfsek/terra/api/util/range/Range.java index 98674bcf2..449ae7336 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/Range.java @@ -5,7 +5,7 @@ * reference the LICENSE file in the common/api directory. */ -package com.dfsek.terra.api.util; +package com.dfsek.terra.api.util.range; import org.jetbrains.annotations.NotNull; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java deleted file mode 100644 index a96377c11..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra API is licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in the common/api directory. - */ - -package com.dfsek.terra.api.util.vector; - -import com.dfsek.terra.api.util.MathUtil; - - -/** - * oh yeah - */ -public class Vector2 { - private static final Vector2 ZERO = new Vector2(0, 0); - private static final Vector2 UNIT = new Vector2(0, 1); - protected double x, z; - - /** - * Create a vector with a given X and Z component - * - * @param x X component - * @param z Z component - */ - private Vector2(double x, double z) { - this.x = x; - this.z = z; - } - - public static Vector2 zero() { - return ZERO; - } - - public static Vector2 unit() { - return UNIT; - } - - public static Vector2 of(double x, double z) { - return new Vector2(x, z); - } - - - /** - * Get the length of this Vector - * - * @return length - */ - public double length() { - return Math.sqrt(lengthSquared()); - } - - /** - * Get the squared length of this Vector - * - * @return squared length - */ - 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) { - return Math.sqrt(distanceSquared(other)); - } - - /** - * Get the squared distance between 2 vectors. - * - * @param other Another vector - * - * @return Squared distance - */ - public double distanceSquared(Vector2 other) { - double dx = other.getX() - x; - double dz = other.getZ() - z; - return dx * dx + dz * dz; - } - - public Vector3 extrude(double y) { - return Vector3.of(this.x, y, this.z); - } - - /** - * Get X component - * - * @return X component - */ - public double getX() { - return x; - } - - - /** - * Get Z component - * - * @return Z component - */ - public double getZ() { - return z; - } - - - public int getBlockX() { - return (int) Math.floor(x); - } - - public int getBlockZ() { - return (int) Math.floor(z); - } - - @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 other)) return false; - return MathUtil.equals(this.x, other.x) && MathUtil.equals(this.z, other.z); - } - - public Mutable mutable() { - return new Mutable(x, z); - } - - @Override - public String toString() { - return "(" + x + ", " + z + ")"; - } - - - public static class Mutable extends Vector2 { - - private Mutable(double x, double z) { - super(x, z); - } - - public double getX() { - return x; - } - - public Mutable setX(double x) { - this.x = x; - return this; - } - - public double getZ() { - return z; - } - - public Mutable setZ(double z) { - this.z = z; - return this; - } - - public Vector2 immutable() { - return Vector2.of(x, z); - } - - /** - * Get the length of this Vector - * - * @return length - */ - public double length() { - return Math.sqrt(lengthSquared()); - } - - /** - * Get the squared length of this Vector - * - * @return squared length - */ - public double lengthSquared() { - return x * x + z * z; - } - - public Mutable add(double x, double z) { - this.x += x; - this.z += z; - return this; - } - - /** - * Multiply X and Z components by a value. - * - * @param m Value to multiply - * - * @return Mutated vector, for chaining. - */ - public Mutable 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 Mutable add(Vector2 other) { - x += other.getX(); - z += other.getZ(); - return this; - } - - /** - * Subtract a vector from this vector, - * - * @param other Vector to subtract - * - * @return Mutated vector, for chaining. - */ - public Mutable subtract(Vector2 other) { - x -= other.getX(); - z -= other.getZ(); - return this; - } - - /** - * Normalize this vector to length 1 - * - * @return Mutated vector, for chaining. - */ - public Mutable normalize() { - divide(length()); - return this; - } - - /** - * Divide X and Z components by a value. - * - * @param d Divisor - * - * @return Mutated vector, for chaining. - */ - public Mutable divide(double d) { - x /= d; - z /= d; - return this; - } - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2Int.java b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2Int.java deleted file mode 100644 index 8f904dfcb..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2Int.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.dfsek.terra.api.util.vector; - -import com.dfsek.terra.api.util.Rotation; - - -/** - * oh yeah - */ -public class Vector2Int { - private static final Vector2Int ZERO = new Vector2Int(0, 0); - private static final Vector2Int UNIT = new Vector2Int(0, 1); - protected int x, z; - - protected Vector2Int(int x, int z) { - this.x = x; - this.z = z; - } - - public static Vector2Int zero() { - return ZERO; - } - - public static Vector2Int unit() { - return UNIT; - } - - public static Vector2Int of(int x, int z) { - return new Vector2Int(x, z); - } - - public int getX() { - return x; - } - - public int getZ() { - return z; - } - - public Vector3Int toVector3(int y) { - return new Vector3Int(x, y, z); - } - - public Mutable mutable() { - return new Mutable(x, z); - } - - public Vector2Int rotate(Rotation rotation) { - return switch(rotation) { - case CW_90 -> of(z, -x); - case CCW_90 -> of(-z, x); - case CW_180 -> of(-x, -z); - default -> this; - }; - } - - @Override - public int hashCode() { - return (31 * x) + z; - } - - @Override - public boolean equals(Object obj) { - if(obj instanceof Vector2Int that) { - return this.x == that.x && this.z == that.z; - } - return false; - } - - - public static class Mutable extends Vector2Int { - - protected Mutable(int x, int z) { - super(x, z); - } - - public int getZ() { - return z; - } - - public void setZ(int z) { - this.z = z; - } - - public int getX() { - return x; - } - - public void setX(int x) { - this.x = x; - } - - public Vector2Int immutable() { - return new Vector2Int(x, z); - } - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java deleted file mode 100644 index 1d1ab6097..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java +++ /dev/null @@ -1,441 +0,0 @@ -/* - * Copyright (c) 2020-2025 Polyhedral Development - * - * The Terra API is licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in the common/api directory. - */ - -package com.dfsek.terra.api.util.vector; - -import org.jetbrains.annotations.NotNull; - -import com.dfsek.terra.api.util.MathUtil; - - -public class Vector3 { - private static final Vector3 ZERO = new Vector3(0, 0, 0); - private static final Vector3 UNIT = new Vector3(0, 1, 0); - protected double x, y, z; - - private Vector3(double x, double y, double z) { - this.x = x; - this.y = y; - this.z = z; - } - - public static Vector3 zero() { - return ZERO; - } - - public static Vector3 unit() { - return UNIT; - } - - public static Vector3 of(double x, double y, double z) { - return new Vector3(x, y, z); - } - - public double lengthSquared() { - return x * x + y * y + z * z; - } - - public double length() { - return Math.sqrt(lengthSquared()); - } - - public double inverseLength() { - return MathUtil.invSqrt(lengthSquared()); - } - - /** - * 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) { - return Math.sqrt(Math.pow(x - o.getX(), 2) + Math.pow(y - o.getY(), 2) + Math.pow(z - o.getZ(), 2)); - } - - /** - * Get the squared distance between this vector and another. - * - * @param o The other vector - * - * @return the distance - */ - public double distanceSquared(@NotNull Vector3 o) { - return Math.pow(x - o.getX(), 2) + Math.pow(y - o.getY(), 2) + Math.pow(z - o.getZ(), 2); - } - - /** - * 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) { - return x * other.getX() + y * other.getY() + z * other.getZ(); - } - - public double getZ() { - return z; - } - - - public double getX() { - return x; - } - - - public double getY() { - return y; - } - - - public int getBlockX() { - return (int) Math.floor(x); - } - - public int getBlockY() { - return (int) Math.floor(y); - } - - public int getBlockZ() { - return (int) Math.floor(z); - } - - /** - * Returns if a vector is normalized - * - * @return whether the vector is normalised - */ - public boolean isNormalized() { - return MathUtil.equals(this.lengthSquared(), 1); - } - - /** - * 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 other)) return false; - return MathUtil.equals(x, other.getX()) && MathUtil.equals(y, other.getY()) && MathUtil.equals(z, other.getZ()); - } - - public Vector3Int toInt() { - return Vector3Int.of(getBlockX(), getBlockY(), getBlockZ()); - } - - public Mutable mutable() { - return new Mutable(x, y, z); - } - - @Override - public String toString() { - return "(" + getX() + ", " + getY() + ", " + getZ() + ")"; - } - - - public static class Mutable extends Vector3 { - private Mutable(double x, double y, double z) { - super(x, y, z); - } - - public static Mutable of(double x, double y, double z) { - return new Mutable(x, y, z); - } - - public Vector3 immutable() { - return Vector3.of(x, y, z); - } - - public double getZ() { - return z; - } - - public Mutable setZ(double z) { - this.z = z; - return this; - } - - public double getX() { - return x; - } - - public Mutable setX(double x) { - this.x = x; - return this; - } - - public double getY() { - return y; - } - - public Mutable setY(double y) { - this.y = y; - return this; - } - - public double lengthSquared() { - return x * x + y * y + z * z; - } - - public double length() { - return Math.sqrt(lengthSquared()); - } - - public double inverseLength() { - return MathUtil.invSqrt(lengthSquared()); - } - - public Mutable normalize() { - return this.multiply(this.inverseLength()); - } - - public Mutable subtract(int x, int y, int z) { - this.x -= x; - this.y -= y; - this.z -= z; - return this; - } - - /** - * 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) { - return x * other.getX() + y * other.getY() + z * other.getZ(); - } - - public Mutable subtract(Vector3 end) { - x -= end.getX(); - y -= end.getY(); - z -= end.getZ(); - return this; - } - - public Mutable multiply(double m) { - x *= m; - y *= m; - z *= m; - return this; - } - - public Mutable add(double x, double y, double z) { - this.x += x; - this.y += y; - this.z += z; - return this; - } - - public Mutable add(Vector3 other) { - this.x += other.getX(); - this.y += other.getY(); - this.z += other.getZ(); - return this; - } - - public Mutable add(Vector3Int other) { - this.x += other.getX(); - this.y += other.getY(); - this.z += other.getZ(); - return this; - } - - public Mutable add(Vector2 other) { - this.x += other.getX(); - this.z += other.getZ(); - return this; - } - - /** - * 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 Mutable#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 - public Mutable rotateAroundAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException { - return rotateAroundNonUnitAxis(axis.isNormalized() ? axis : axis.mutable().normalize().immutable(), 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 - */ - @NotNull - public Mutable 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 = MathUtil.cos(angle); - double sinTheta = MathUtil.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); - } - - /** - * 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 - public Mutable rotateAroundX(double angle) { - double angleCos = MathUtil.cos(angle); - double angleSin = MathUtil.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. - *

- * 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 - public Mutable rotateAroundY(double angle) { - double angleCos = MathUtil.cos(angle); - double angleSin = MathUtil.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 - *

- * 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 - public Mutable rotateAroundZ(double angle) { - double angleCos = MathUtil.cos(angle); - double angleSin = MathUtil.sin(angle); - - double x = angleCos * getX() - angleSin * getY(); - double y = angleSin * getX() + angleCos * getY(); - return setX(x).setY(y); - } - - @Override - public int hashCode() { - int hash = 13; - - 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; - } - - public int getBlockX() { - return (int) Math.floor(x); - } - - public int getBlockY() { - return (int) Math.floor(y); - } - - public int getBlockZ() { - return (int) Math.floor(z); - } - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3Int.java b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3Int.java deleted file mode 100644 index ff9e3fc0f..000000000 --- a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3Int.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.dfsek.terra.api.util.vector; - - -public class Vector3Int { - private static final Vector3Int ZERO = new Vector3Int(0, 0, 0); - private static final Vector3Int UNIT = new Vector3Int(0, 1, 0); - protected int x, y, z; - - protected Vector3Int(int x, int y, int z) { - this.x = x; - this.y = y; - this.z = z; - } - - public static Vector3Int unit() { - return UNIT; - } - - public static Vector3Int zero() { - return ZERO; - } - - public static Vector3Int of(int x, int y, int z) { - return new Vector3Int(x, y, z); - } - - public static Vector3Int of(Vector3Int origin, int x, int y, int z) { - return new Vector3Int(origin.x + x, origin.y + y, origin.z + z); - } - - public int getX() { - return x; - } - - public int getY() { - return y; - } - - public int getZ() { - return z; - } - - public Mutable mutable() { - return new Mutable(x, y, z); - } - - public Vector3 toVector3() { - return Vector3.of(x, y, z); - } - - public Vector3.Mutable toVector3Mutable() { - return Vector3.Mutable.of(x, y, z); - } - - public static class Mutable extends Vector3Int { - protected Mutable(int x, int y, int z) { - super(x, y, z); - } - - public int getX() { - return x; - } - - public void setX(int x) { - this.x = x; - } - - public int getY() { - return y; - } - - public void setY(int y) { - this.y = y; - } - - public int getZ() { - return z; - } - - public void setZ(int z) { - this.z = z; - } - - public Vector3Int immutable() { - return Vector3Int.of(x, y, z); - } - - public Mutable add(int x, int y, int z) { - this.x += x; - this.y += y; - this.z += z; - return this; - } - - public Vector3 toVector3() { - return Vector3.of(x, y, z); - } - } -} diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/BufferedWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/BufferedWorld.java index 086feed7a..7f4647c95 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/BufferedWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/BufferedWorld.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.util.Interceptors; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/ReadableWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/ReadableWorld.java index 4ea52661d..8d5fe4437 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/ReadableWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/ReadableWorld.java @@ -2,8 +2,8 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3Int; /** @@ -29,7 +29,7 @@ public interface ReadableWorld extends World { * @return {@link BlockState} at coordinates. */ default BlockState getBlockState(Vector3 position) { - return getBlockState(position.getBlockX(), position.getBlockY(), position.getBlockZ()); + return getBlockState(position.getFloorX(), position.getFloorY(), position.getFloorZ()); } /** @@ -46,7 +46,7 @@ public interface ReadableWorld extends World { BlockEntity getBlockEntity(int x, int y, int z); default BlockEntity getBlockEntity(Vector3 position) { - return getBlockEntity(position.getBlockX(), position.getBlockY(), position.getBlockZ()); + return getBlockEntity(position.getFloorX(), position.getFloorY(), position.getFloorZ()); } default BlockEntity getBlockEntity(Vector3Int position) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/ServerWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/ServerWorld.java index 722c94b21..54510d34a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/ServerWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/ServerWorld.java @@ -7,7 +7,7 @@ package com.dfsek.terra.api.world; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.chunk.Chunk; @@ -15,6 +15,6 @@ public interface ServerWorld extends WritableWorld { Chunk getChunkAt(int x, int z); default Chunk getChunkAt(Vector3 location) { - return getChunkAt(location.getBlockX() >> 4, location.getBlockZ() >> 4); + return getChunkAt(location.getFloorX() >> 4, location.getFloorZ() >> 4); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/WritableWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/WritableWorld.java index 6b528a040..31b991a7e 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/WritableWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/WritableWorld.java @@ -3,18 +3,18 @@ package com.dfsek.terra.api.world; 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.util.vector.Vector3; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.chunk.generation.util.Column; public interface WritableWorld extends ReadableWorld { default void setBlockState(Vector3 position, BlockState data, boolean physics) { - setBlockState(position.getBlockX(), position.getBlockY(), position.getBlockZ(), data, physics); + setBlockState(position.getFloorX(), position.getFloorY(), position.getFloorZ(), data, physics); } default void setBlockState(Vector3.Mutable position, BlockState data, boolean physics) { - setBlockState(position.getBlockX(), position.getBlockY(), position.getBlockZ(), data, physics); + setBlockState(position.getFloorX(), position.getFloorY(), position.getFloorZ(), data, physics); } default void setBlockState(Vector3Int position, BlockState data, boolean physics) { 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 6d94d7edb..b911ff84e 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,8 +16,8 @@ import java.util.stream.Stream; import java.util.stream.StreamSupport; import com.dfsek.terra.api.util.Column; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.info.WorldProperties; @@ -49,7 +49,7 @@ public interface BiomeProvider { */ @Contract(pure = true) default Biome getBiome(Vector3 vector3, long seed) { - return getBiome(vector3.getBlockX(), vector3.getBlockY(), vector3.getBlockZ(), seed); + return getBiome(vector3.getFloorX(), vector3.getFloorY(), vector3.getFloorZ(), seed); } /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/chunk/generation/ChunkGenerator.java b/common/api/src/main/java/com/dfsek/terra/api/world/chunk/generation/ChunkGenerator.java index e7be3e525..3609e9c7b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/chunk/generation/ChunkGenerator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/chunk/generation/ChunkGenerator.java @@ -10,8 +10,8 @@ package com.dfsek.terra.api.world.chunk.generation; import org.jetbrains.annotations.NotNull; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.util.vector.Vector3Int; +import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.util.Palette; import com.dfsek.terra.api.world.info.WorldProperties; @@ -24,7 +24,7 @@ public interface ChunkGenerator { BlockState getBlock(WorldProperties world, int x, int y, int z, BiomeProvider biomeProvider); default BlockState getBlock(WorldProperties world, Vector3 vector3, BiomeProvider biomeProvider) { - return getBlock(world, vector3.getBlockX(), vector3.getBlockY(), vector3.getBlockZ(), biomeProvider); + return getBlock(world, vector3.getFloorX(), vector3.getFloorY(), vector3.getFloorZ(), biomeProvider); } default BlockState getBlock(WorldProperties world, Vector3Int vector3, BiomeProvider biomeProvider) { diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 25ddf62ec..16177be56 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -29,7 +29,7 @@ import com.dfsek.terra.api.addon.BaseAddon; 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.range.Range; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.config.loaders.ExpressionParserOptionsTemplate; diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java index 77ce3af2a..33e27fd6f 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java @@ -30,8 +30,8 @@ import java.lang.reflect.AnnotatedType; import java.util.Map; 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.range.ConstantRange; +import com.dfsek.terra.api.util.range.Range; public class RangeLoader implements TypeLoader { diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayFakeEntity.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayFakeEntity.java index 912b4d00e..fc792270c 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayFakeEntity.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayFakeEntity.java @@ -1,7 +1,7 @@ package com.dfsek.terra.allay.delegate; import com.dfsek.terra.api.entity.Entity; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; /** diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayProtoWorld.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayProtoWorld.java index 0fb8173eb..82ecb2839 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayProtoWorld.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayProtoWorld.java @@ -11,7 +11,7 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayServerWorld.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayServerWorld.java index b19dad904..3a24422b0 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayServerWorld.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayServerWorld.java @@ -9,7 +9,7 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.Chunk; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java index 6df268180..5306bc3e3 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java @@ -21,7 +21,7 @@ import io.papermc.lib.PaperLib; import org.bukkit.Location; import com.dfsek.terra.api.entity.Entity; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java index 5bccd678b..2b90e73d8 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java @@ -21,7 +21,7 @@ import io.papermc.lib.PaperLib; import org.bukkit.Location; import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 408265821..fcc244504 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -34,7 +34,7 @@ import com.dfsek.terra.api.command.CommandSender; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Enchantment; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.info.WorldProperties; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java index 0b0f0410c..080b57146 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java @@ -23,7 +23,7 @@ import org.bukkit.block.Sign; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java index 5fa0e7514..363a54dbc 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java @@ -9,7 +9,7 @@ import java.util.concurrent.Callable; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; -import com.dfsek.terra.api.util.vector.Vector2Int; +import com.dfsek.seismic.type.vector.Vector2Int; import com.dfsek.terra.cli.world.CLIWorld; import picocli.CommandLine; diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java index cb22ac666..4c01a8f0e 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java @@ -22,8 +22,8 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.util.vector.Vector2Int; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector2Int; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/lifecycle/NoiseConfigMixin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/lifecycle/NoiseConfigMixin.java index 4b1b0ad78..c61ff8b24 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/lifecycle/NoiseConfigMixin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/mixin/lifecycle/NoiseConfigMixin.java @@ -1,8 +1,8 @@ package com.dfsek.terra.forge.mixin.lifecycle; import net.minecraft.registry.RegistryEntryLookup; -import net.minecraft.util.math.noise.DoublePerlinNoiseSampler.NoiseParameters; -import net.minecraft.world.biome.source.util.MultiNoiseUtil.MultiNoiseSampler; +import net.minecraft.util.math.noise.DoublePerlinSampler.NoiseParameters; +import net.minecraft.world.biome.source.util.MultiNoiseUtil.MultiSampler; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; import net.minecraft.world.gen.noise.NoiseConfig; import org.spongepowered.asm.mixin.Final; @@ -22,13 +22,13 @@ import com.dfsek.terra.mod.util.SeedHack; public class NoiseConfigMixin { @Shadow @Final - private MultiNoiseSampler multiNoiseSampler; + private MultiSampler multiSampler; @Inject(method = "(Lnet/minecraft/world/gen/chunk/ChunkGeneratorSettings;Lnet/minecraft/registry/RegistryEntryLookup;J)V", at = @At("TAIL")) private void mapMultiNoise(ChunkGeneratorSettings chunkGeneratorSettings, RegistryEntryLookup noiseParametersLookup, long seed, CallbackInfo ci) { - SeedHack.register(multiNoiseSampler, seed); + SeedHack.register(multiSampler, seed); } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomAdapter.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomAdapter.java index 697997c0b..27c70b253 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomAdapter.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomAdapter.java @@ -1,6 +1,6 @@ package com.dfsek.terra.minestom; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import net.minestom.server.coordinate.Point; import net.minestom.server.coordinate.Pos; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/DeferredMinestomEntity.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/DeferredMinestomEntity.java index 4a053ec2d..43179f730 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/DeferredMinestomEntity.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/DeferredMinestomEntity.java @@ -2,7 +2,7 @@ package com.dfsek.terra.minestom.entity; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.minestom.world.TerraMinestomWorld; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntity.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntity.java index c46a6a1d3..055d16153 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntity.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntity.java @@ -1,7 +1,7 @@ package com.dfsek.terra.minestom.entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.minestom.MinestomAdapter; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java index 136b369b7..4f5740e3c 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MonsterSettingsConfig.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.range.Range; public class MonsterSettingsConfig implements ObjectTemplate { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java index 83ab9be05..c10f132b8 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java @@ -7,7 +7,7 @@ import net.minecraft.registry.Registries; import net.minecraft.sound.MusicSound; import net.minecraft.sound.SoundEvent; -import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.range.Range; public class MusicSoundTemplate implements ObjectTemplate { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java index 40a948a13..e5b048fba 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java @@ -6,7 +6,7 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import net.minecraft.entity.EntityType; import net.minecraft.world.biome.SpawnSettings.SpawnEntry; -import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.range.Range; public class SpawnEntryTemplate implements ObjectTemplate { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java index d8273cc82..e58d22df4 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaWorldProperties.java @@ -6,8 +6,8 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import net.minecraft.util.Identifier; import com.dfsek.terra.api.properties.Properties; -import com.dfsek.terra.api.util.ConstantRange; -import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.range.ConstantRange; +import com.dfsek.terra.api.util.range.Range; public class VanillaWorldProperties implements ConfigTemplate, Properties { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java index b3666c139..8cdc42c6b 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/data/Codecs.java @@ -6,7 +6,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.registry.key.RegistryKey; -import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.api.util.range.ConstantRange; import com.dfsek.terra.mod.CommonPlatform; import com.dfsek.terra.mod.generation.GenerationSettings; import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java index e3cfb83c8..2c3476001 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/GenerationSettings.java @@ -1,6 +1,6 @@ package com.dfsek.terra.mod.generation; -import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.api.util.range.ConstantRange; public record GenerationSettings(ConstantRange height, Integer sealevel, Boolean mobGeneration, Integer spawnHeight) { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/TerraBiomeSource.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/TerraBiomeSource.java index 81651ece8..97be6fc49 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/TerraBiomeSource.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/TerraBiomeSource.java @@ -21,6 +21,7 @@ import com.mojang.serialization.MapCodec; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.source.BiomeSource; +import net.minecraft.world.biome.source.util.MultiNoiseUtil; import net.minecraft.world.biome.source.util.MultiNoiseUtil.MultiNoiseSampler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,10 +62,10 @@ public class TerraBiomeSource extends BiomeSource { } @Override - public RegistryEntry getBiome(int biomeX, int biomeY, int biomeZ, MultiNoiseSampler noiseSampler) { + public RegistryEntry getBiome(int biomeX, int biomeY, int biomeZ, MultiNoiseSampler Sampler) { return ((ProtoPlatformBiome) pack .getBiomeProvider() - .getBiome(biomeX << 2, biomeY << 2, biomeZ << 2, SeedHack.getSeed(noiseSampler)) + .getBiome(biomeX << 2, biomeY << 2, biomeZ << 2, SeedHack.getSeed(Sampler)) .getPlatformBiome()).getDelegate(); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/implmentation/TerraIntProvider.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/implmentation/TerraIntProvider.java index 764d77c1e..afce31b90 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/implmentation/TerraIntProvider.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/implmentation/TerraIntProvider.java @@ -7,7 +7,7 @@ import net.minecraft.util.math.random.Random; import java.util.HashMap; import java.util.Map; -import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.range.Range; import com.dfsek.terra.mod.util.MinecraftAdapter; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/entity/EntityMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/entity/EntityMixin.java index e6f62a6bf..dfe6d8d96 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/entity/EntityMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/entity/EntityMixin.java @@ -24,7 +24,7 @@ import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.mod.util.MinecraftAdapter; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java index ecde18087..24ab38971 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java @@ -23,7 +23,7 @@ import net.minecraft.world.HeightLimitView; import java.util.random.RandomGenerator; -import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.info.WorldProperties; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index a78877a7a..cef3c33c5 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -3,7 +3,6 @@ package com.dfsek.terra.mod.util; import net.minecraft.block.entity.LootableContainerBlockEntity; import net.minecraft.block.entity.MobSpawnerBlockEntity; import net.minecraft.block.entity.SignBlockEntity; -import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; @@ -13,19 +12,12 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.intprovider.IntProviderType; import net.minecraft.world.WorldAccess; import net.minecraft.world.biome.Biome; -import net.minecraft.world.biome.Biome.Builder; -import net.minecraft.world.biome.BiomeEffects; -import net.minecraft.world.biome.GenerationSettings; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.feature.ConfiguredFeature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.HashMap; import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Objects; import java.util.Optional; import com.dfsek.terra.api.block.entity.BlockEntity; @@ -33,14 +25,12 @@ 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.ConstantRange; +import com.dfsek.terra.api.util.range.ConstantRange; import com.dfsek.terra.mod.CommonPlatform; import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; import com.dfsek.terra.mod.config.ProtoPlatformBiome; -import com.dfsek.terra.mod.config.VanillaBiomeProperties; import com.dfsek.terra.mod.data.Codecs; import com.dfsek.terra.mod.implmentation.TerraIntProvider; -import com.dfsek.terra.mod.mixin.access.BiomeAccessor; import com.dfsek.terra.mod.mixin_ifaces.FloraFeatureHolder; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index fc853d554..f18c93632 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -27,7 +27,7 @@ import java.util.Locale; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.MetaPack; -import com.dfsek.terra.api.util.ConstantRange; +import com.dfsek.terra.api.util.range.ConstantRange; import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.mod.ModPlatform; import com.dfsek.terra.mod.config.VanillaWorldProperties; From 0921dfb204433ed4e447989945785a94d7e1e380 Mon Sep 17 00:00:00 2001 From: Peter Pan Date: Wed, 19 Mar 2025 15:54:11 -0400 Subject: [PATCH 056/116] Bukkit Build Fix --- buildSrc/build.gradle.kts | 4 ++-- buildSrc/src/main/kotlin/Versions.kt | 8 ++++---- gradle/wrapper/gradle-wrapper.properties | 3 +-- platforms/bukkit/nms/v1_21_3/build.gradle.kts | 7 +++++-- settings.gradle.kts | 3 +++ 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index cec2d002d..ebaa51062 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -17,8 +17,8 @@ repositories { dependencies { //TODO Allow pulling from Versions.kt implementation("com.gradleup.shadow", "shadow-gradle-plugin", "8.3.1") - implementation("io.papermc.paperweight.userdev", "io.papermc.paperweight.userdev.gradle.plugin", "1.7.2") - + //implementation("io.papermc.paperweight", "io.papermc.paperweight.userdev.gradle.plugin", "2.0.0-beta.16") + implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:2.0.0-beta.16") implementation("org.ow2.asm", "asm", "9.7") implementation("org.ow2.asm", "asm-tree", "9.7") implementation("com.dfsek.tectonic", "common", "4.2.1") diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 322516af6..cbbbcc989 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -44,8 +44,8 @@ object Versions { const val yarn = "$minecraft+build.8" const val fabricLoader = "0.16.10" - const val architecuryLoom = "1.7.413" - const val architecturyPlugin = "3.4.159" + const val architecuryLoom = "1.9.428" + const val architecturyPlugin = "3.4.161" } // @@ -56,13 +56,13 @@ object Versions { object Bukkit { const val minecraft = "1.21.4" - const val paperBuild = "$minecraft-R0.1-20241211.212446-17" + const val paperBuild = "$minecraft-R0.1-20250317.101324-208" const val paper = paperBuild const val paperLib = "1.0.8" const val reflectionRemapper = "0.1.1" const val paperDevBundle = paperBuild const val runPaper = "2.3.1" - const val paperWeight = "1.7.2" + const val paperWeight = "2.0.0-beta.16" const val cloud = "2.0.0-beta.10" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index fb602ee2a..cea7a793a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26 -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/platforms/bukkit/nms/v1_21_3/build.gradle.kts b/platforms/bukkit/nms/v1_21_3/build.gradle.kts index d52f1d169..7cc74d30f 100644 --- a/platforms/bukkit/nms/v1_21_3/build.gradle.kts +++ b/platforms/bukkit/nms/v1_21_3/build.gradle.kts @@ -1,8 +1,11 @@ -apply(plugin = "io.papermc.paperweight.userdev") +//apply(plugin = "io.papermc.paperweight.userdev") +plugins { + id("io.papermc.paperweight.userdev") +} dependencies { api(project(":platforms:bukkit:common")) - paperDevBundle(Versions.Bukkit.paperDevBundle) + paperweight.paperDevBundle(Versions.Bukkit.paperDevBundle) implementation("xyz.jpenilla", "reflection-remapper", Versions.Bukkit.reflectionRemapper) } diff --git a/settings.gradle.kts b/settings.gradle.kts index 86bb41bfb..85bd67cdc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -38,6 +38,9 @@ pluginManagement { maven("https://maven.quiltmc.org/repository/release/") { name = "Quilt" } + maven("https://repo.papermc.io/repository/maven-public/") { + name = "PaperMC" + } } } From b6e4543625ffd86eac5de999966fd8abfad38ce2 Mon Sep 17 00:00:00 2001 From: Peter Pan Date: Thu, 20 Mar 2025 10:43:29 -0400 Subject: [PATCH 057/116] remove comments --- buildSrc/build.gradle.kts | 1 - platforms/bukkit/nms/v1_21_3/build.gradle.kts | 1 - 2 files changed, 2 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index ebaa51062..e326be11f 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -17,7 +17,6 @@ repositories { dependencies { //TODO Allow pulling from Versions.kt implementation("com.gradleup.shadow", "shadow-gradle-plugin", "8.3.1") - //implementation("io.papermc.paperweight", "io.papermc.paperweight.userdev.gradle.plugin", "2.0.0-beta.16") implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:2.0.0-beta.16") implementation("org.ow2.asm", "asm", "9.7") implementation("org.ow2.asm", "asm-tree", "9.7") diff --git a/platforms/bukkit/nms/v1_21_3/build.gradle.kts b/platforms/bukkit/nms/v1_21_3/build.gradle.kts index 7cc74d30f..31cad053a 100644 --- a/platforms/bukkit/nms/v1_21_3/build.gradle.kts +++ b/platforms/bukkit/nms/v1_21_3/build.gradle.kts @@ -1,4 +1,3 @@ -//apply(plugin = "io.papermc.paperweight.userdev") plugins { id("io.papermc.paperweight.userdev") } From 4c860ca4aeec4745c23175c8afd60016681f41d8 Mon Sep 17 00:00:00 2001 From: Peter Pan Date: Thu, 20 Mar 2025 10:53:49 -0400 Subject: [PATCH 058/116] remove papermc repo from gradle settings --- settings.gradle.kts | 3 --- 1 file changed, 3 deletions(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index 85bd67cdc..86bb41bfb 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -38,9 +38,6 @@ pluginManagement { maven("https://maven.quiltmc.org/repository/release/") { name = "Quilt" } - maven("https://repo.papermc.io/repository/maven-public/") { - name = "PaperMC" - } } } From fb0dbda296e8807c9a366fb83b6fc9a14b9feaa5 Mon Sep 17 00:00:00 2001 From: Peter Pan Date: Thu, 20 Mar 2025 11:01:41 -0400 Subject: [PATCH 059/116] add back gradle shasum --- gradle/wrapper/gradle-wrapper.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cea7a793a..c855edfdc 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionSha256Sum=31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26 distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip networkTimeout=10000 validateDistributionUrl=true From d33d4af2966c5a1f2eb58120346985352ed73ab9 Mon Sep 17 00:00:00 2001 From: Peter Pan Date: Thu, 20 Mar 2025 14:51:12 -0400 Subject: [PATCH 060/116] fix formatting, update gradle hash --- buildSrc/build.gradle.kts | 3 ++- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index e326be11f..4867397a3 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -17,7 +17,8 @@ repositories { dependencies { //TODO Allow pulling from Versions.kt implementation("com.gradleup.shadow", "shadow-gradle-plugin", "8.3.1") - implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:2.0.0-beta.16") + + implementation("io.papermc.paperweight.userdev", "io.papermc.paperweight.userdev.gradle.plugin", "2.0.0-beta.16") implementation("org.ow2.asm", "asm", "9.7") implementation("org.ow2.asm", "asm-tree", "9.7") implementation("com.dfsek.tectonic", "common", "4.2.1") diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c855edfdc..e1b837a19 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26 +distributionSha256Sum=7a00d51fb93147819aab76024feece20b6b84e420694101f276be952e08bef03 distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip networkTimeout=10000 validateDistributionUrl=true From 52dc69024307b3b9d3ef7892087c982a5f0524fe Mon Sep 17 00:00:00 2001 From: Mikal Date: Sat, 22 Mar 2025 03:15:43 -0400 Subject: [PATCH 061/116] Bukkit Build Fix (#494) * Bukkit Build Fix * remove comments * remove papermc repo from gradle settings * add back gradle shasum * fix formatting, update gradle hash --- buildSrc/build.gradle.kts | 2 +- buildSrc/src/main/kotlin/Versions.kt | 8 ++++---- gradle/wrapper/gradle-wrapper.properties | 4 ++-- platforms/bukkit/nms/v1_21_3/build.gradle.kts | 6 ++++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index cec2d002d..4867397a3 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -17,8 +17,8 @@ repositories { dependencies { //TODO Allow pulling from Versions.kt implementation("com.gradleup.shadow", "shadow-gradle-plugin", "8.3.1") - implementation("io.papermc.paperweight.userdev", "io.papermc.paperweight.userdev.gradle.plugin", "1.7.2") + implementation("io.papermc.paperweight.userdev", "io.papermc.paperweight.userdev.gradle.plugin", "2.0.0-beta.16") implementation("org.ow2.asm", "asm", "9.7") implementation("org.ow2.asm", "asm-tree", "9.7") implementation("com.dfsek.tectonic", "common", "4.2.1") diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 322516af6..cbbbcc989 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -44,8 +44,8 @@ object Versions { const val yarn = "$minecraft+build.8" const val fabricLoader = "0.16.10" - const val architecuryLoom = "1.7.413" - const val architecturyPlugin = "3.4.159" + const val architecuryLoom = "1.9.428" + const val architecturyPlugin = "3.4.161" } // @@ -56,13 +56,13 @@ object Versions { object Bukkit { const val minecraft = "1.21.4" - const val paperBuild = "$minecraft-R0.1-20241211.212446-17" + const val paperBuild = "$minecraft-R0.1-20250317.101324-208" const val paper = paperBuild const val paperLib = "1.0.8" const val reflectionRemapper = "0.1.1" const val paperDevBundle = paperBuild const val runPaper = "2.3.1" - const val paperWeight = "1.7.2" + const val paperWeight = "2.0.0-beta.16" const val cloud = "2.0.0-beta.10" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index fb602ee2a..e1b837a19 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26 -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionSha256Sum=7a00d51fb93147819aab76024feece20b6b84e420694101f276be952e08bef03 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/platforms/bukkit/nms/v1_21_3/build.gradle.kts b/platforms/bukkit/nms/v1_21_3/build.gradle.kts index d52f1d169..31cad053a 100644 --- a/platforms/bukkit/nms/v1_21_3/build.gradle.kts +++ b/platforms/bukkit/nms/v1_21_3/build.gradle.kts @@ -1,8 +1,10 @@ -apply(plugin = "io.papermc.paperweight.userdev") +plugins { + id("io.papermc.paperweight.userdev") +} dependencies { api(project(":platforms:bukkit:common")) - paperDevBundle(Versions.Bukkit.paperDevBundle) + paperweight.paperDevBundle(Versions.Bukkit.paperDevBundle) implementation("xyz.jpenilla", "reflection-remapper", Versions.Bukkit.reflectionRemapper) } From 227bfe7b29f12e77fbec4d4fe7f497ee93ab2948 Mon Sep 17 00:00:00 2001 From: ckyuri Date: Sat, 12 Apr 2025 11:54:48 +0100 Subject: [PATCH 062/116] Minestom Updated to latest version as of now 4/12/2025 Updated method names to new documentation and changed minestom versioning. - Paper Build version was changed as I had issues building at all with the snapshot version. So it was changed to a generic version but everything still builds fine. --- buildSrc/src/main/kotlin/Versions.kt | 5 ++-- .../terra/minestom/MinestomPlatform.java | 27 +++++++++++++++---- .../minestom/biome/MinestomBiomeLoader.java | 9 +++---- .../minestom/block/MinestomBlockState.java | 8 +++--- .../minestom/entity/MinestomEntityType.java | 6 ++--- .../minestom/item/MinestomEnchantment.java | 25 +++++++++++++---- .../terra/minestom/item/MinestomMaterial.java | 5 ++-- 7 files changed, 57 insertions(+), 28 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index cbbbcc989..9959aad08 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -56,7 +56,8 @@ object Versions { object Bukkit { const val minecraft = "1.21.4" - const val paperBuild = "$minecraft-R0.1-20250317.101324-208" + // swapped to use a generic SNAPSHOT instead of a specific timestamp + const val paperBuild = "$minecraft-R0.1-SNAPSHOT" const val paper = paperBuild const val paperLib = "1.0.8" const val reflectionRemapper = "0.1.1" @@ -83,6 +84,6 @@ object Versions { } object Minestom { - const val minestom = "187931e50b" + const val minestom = "fb895cb899" } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java index 78ac5ff18..af24a6043 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java @@ -14,12 +14,16 @@ import com.dfsek.terra.minestom.entity.MinestomEntityType; import com.dfsek.terra.minestom.item.MinestomItemHandle; import com.dfsek.terra.minestom.world.MinestomChunkGeneratorWrapper; import com.dfsek.terra.minestom.world.MinestomWorldHandle; +import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; + import net.minestom.server.MinecraftServer; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.io.IOException; + public final class MinestomPlatform extends AbstractPlatform { @@ -45,18 +49,32 @@ public final class MinestomPlatform extends AbstractPlatform { @Override public boolean reload() { getTerraConfig().load(this); - boolean succeed = loadConfigPacks(); + getRawConfigRegistry().clear(); + + try { + getRawConfigRegistry().loadAll(this); + } catch (IOException e) { + LOGGER.error("Failed to load configurations due to I/O error", e); + return false; // reload failed + } catch (PackLoadFailuresException e) { + LOGGER.error("Failed to load configurations due to pack load failures", e); + return false; // reload failed + } catch (Exception e) { + // Catch any other exceptions that might be thrown + LOGGER.error("Failed to load configurations due to unexpected error", e); + return false; + } MinecraftServer.getInstanceManager().getInstances().forEach(world -> { if(world.generator() instanceof MinestomChunkGeneratorWrapper wrapper) { getConfigRegistry().get(wrapper.getPack().getRegistryKey()).ifPresent(pack -> { wrapper.setPack(pack); - LOGGER.info("Replaced pack in chunk generator for instance {}", world.getUniqueId()); + LOGGER.info("Replaced pack in chunk generator for instance {}", world.getUuid()); }); } }); - return succeed; + return true; } @Override @@ -83,11 +101,10 @@ public final class MinestomPlatform extends AbstractPlatform { return file; } - public static MinestomPlatform getInstance() { if(INSTANCE == null) { INSTANCE = new MinestomPlatform(); } return INSTANCE; } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java index 9cb3eb960..edaf49a50 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java @@ -7,15 +7,14 @@ import com.dfsek.tectonic.api.loader.type.TypeLoader; import com.dfsek.terra.api.world.biome.PlatformBiome; +import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.registry.DynamicRegistry; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.world.biome.Biome; import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; - public class MinestomBiomeLoader implements TypeLoader { private final DynamicRegistry biomeRegistry = MinecraftServer.getBiomeRegistry(); @@ -23,9 +22,9 @@ public class MinestomBiomeLoader implements TypeLoader { public PlatformBiome load(@NotNull AnnotatedType annotatedType, @NotNull Object o, @NotNull ConfigLoader configLoader, DepthTracker depthTracker) throws LoadException { String id = (String) o; - NamespaceID biomeID = NamespaceID.from(id); - Biome biome = biomeRegistry.get(biomeID); + Key key = Key.key(id); + Biome biome = biomeRegistry.get(key); if(biome == null) throw new LoadException("Biome %s does not exist in registry".formatted(id), depthTracker); return new MinestomBiome(biome); } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java index 01bad55fa..d26470dae 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java @@ -24,14 +24,14 @@ public class MinestomBlockState implements BlockState { public MinestomBlockState(String data) { if(!data.contains("[")) { - block = Block.fromNamespaceId(data); + block = Block.fromKey(data); return; } String[] split = data.split("\\["); String namespaceId = split[0]; String properties = split[1].substring(0, split[1].length() - 1); - Block block = Block.fromNamespaceId(namespaceId); + Block block = Block.fromKey(namespaceId); HashMap propertiesMap = new HashMap<>(); for(String property : properties.split(",")) { @@ -70,7 +70,7 @@ public class MinestomBlockState implements BlockState { @Override public String getAsString(boolean properties) { - String name = block.namespace().asString(); + String name = block.key().asString(); if(!properties || block.properties().isEmpty()) { return name; } @@ -95,4 +95,4 @@ public class MinestomBlockState implements BlockState { public int hashCode() { return Objects.hashCode(block.id()); } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java index 60fbac5d9..d188cb0ea 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java @@ -1,18 +1,16 @@ package com.dfsek.terra.minestom.entity; - import net.minestom.server.entity.EntityType; - public class MinestomEntityType implements com.dfsek.terra.api.entity.EntityType { private final EntityType delegate; public MinestomEntityType(String id) { - delegate = EntityType.fromNamespaceId(id); + delegate = EntityType.fromId(Integer.parseInt(id)); } @Override public EntityType getHandle() { return delegate; } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java index 0ef720b31..69411571a 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java @@ -3,9 +3,10 @@ package com.dfsek.terra.minestom.item; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Enchantment; +import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.item.Material; -import net.minestom.server.utils.NamespaceID; +import net.minestom.server.registry.DynamicRegistry; import java.util.Objects; @@ -16,11 +17,13 @@ public class MinestomEnchantment implements Enchantment { public MinestomEnchantment(net.minestom.server.item.enchant.Enchantment delegate) { this.delegate = delegate; - id = Objects.requireNonNull(delegate.registry()).raw(); + DynamicRegistry registry = MinecraftServer.getEnchantmentRegistry(); + this.id = Objects.requireNonNull(registry.getKey(delegate)).toString(); } public MinestomEnchantment(String id) { - this.delegate = MinecraftServer.getEnchantmentRegistry().get(NamespaceID.from(id)); + Key key = Key.key(id); + this.delegate = MinecraftServer.getEnchantmentRegistry().get(key); this.id = id; } @@ -31,7 +34,19 @@ public class MinestomEnchantment implements Enchantment { @Override public boolean conflictsWith(Enchantment other) { - return delegate.exclusiveSet().contains(NamespaceID.from(((MinestomEnchantment) other).id)); + var otherDelegate = ((MinestomEnchantment) other).delegate; + delegate.exclusiveSet(); + + // Get the registry key for the other enchantment to use in contains + try { + DynamicRegistry registry = MinecraftServer.getEnchantmentRegistry(); + DynamicRegistry.Key otherKey = registry.getKey(otherDelegate); + return delegate.exclusiveSet().contains(otherKey); + } catch (Exception e) { + // If the key approach fails, fall back to a more basic implementation + String otherId = ((MinestomEnchantment) other).id; + return otherId.equals(this.id); + } } @Override @@ -48,4 +63,4 @@ public class MinestomEnchantment implements Enchantment { public net.minestom.server.item.enchant.Enchantment getHandle() { return delegate; } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java index 6bd0a1908..77aa8777d 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java @@ -5,7 +5,6 @@ import com.dfsek.terra.api.inventory.ItemStack; import net.minestom.server.item.Material; - public class MinestomMaterial implements Item { private final Material delegate; @@ -14,7 +13,7 @@ public class MinestomMaterial implements Item { } public MinestomMaterial(String id) { - this.delegate = Material.fromNamespaceId(id); + this.delegate = Material.fromId(Integer.parseInt(id)); } @Override @@ -31,4 +30,4 @@ public class MinestomMaterial implements Item { public Material getHandle() { return delegate; } -} +} \ No newline at end of file From 32cc4976c84d4fc7ed2ce842a28dfbc2c7ea3ff5 Mon Sep 17 00:00:00 2001 From: ckyuri Date: Sat, 12 Apr 2025 14:10:54 +0100 Subject: [PATCH 063/116] Bug Fix - Entity Type was parsing a value that was incorrect and causing issues to load the world. EntityType.fromId(Integer.parseInt(id)); to delegate = EntityType.fromKey(id); --- .../com/dfsek/terra/minestom/entity/MinestomEntityType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java index d188cb0ea..825fde33e 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java @@ -6,7 +6,7 @@ public class MinestomEntityType implements com.dfsek.terra.api.entity.EntityType private final EntityType delegate; public MinestomEntityType(String id) { - delegate = EntityType.fromId(Integer.parseInt(id)); + delegate = EntityType.fromKey(id); } @Override From 761a014ea58e19ef8e151f314179589dce833a1c Mon Sep 17 00:00:00 2001 From: ckyuri Date: Wed, 16 Apr 2025 15:54:20 +0100 Subject: [PATCH 064/116] Reverted changes to comply with build version requirements and avoiding pulling functionality out of a common existing function --- buildSrc/src/main/kotlin/Versions.kt | 7 ++----- .../terra/minestom/MinestomPlatform.java | 19 +++---------------- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 90d4f300e..28580323c 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -56,11 +56,8 @@ object Versions { object Bukkit { const val minecraft = "1.21.4" - - // swapped to use a generic SNAPSHOT instead of a specific timestamp - //const val paperBuild = "$minecraft-R0.1-20250317.101324-208" - const val paperBuild = "$minecraft-R0.1-SNAPSHOT" - + + const val paperBuild = "$minecraft-R0.1-20250317.101324-208" const val paper = paperBuild const val paperLib = "1.0.8" const val reflectionRemapper = "0.1.1" diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java index af24a6043..c63378a28 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java @@ -49,21 +49,7 @@ public final class MinestomPlatform extends AbstractPlatform { @Override public boolean reload() { getTerraConfig().load(this); - getRawConfigRegistry().clear(); - - try { - getRawConfigRegistry().loadAll(this); - } catch (IOException e) { - LOGGER.error("Failed to load configurations due to I/O error", e); - return false; // reload failed - } catch (PackLoadFailuresException e) { - LOGGER.error("Failed to load configurations due to pack load failures", e); - return false; // reload failed - } catch (Exception e) { - // Catch any other exceptions that might be thrown - LOGGER.error("Failed to load configurations due to unexpected error", e); - return false; - } + boolean succeed = loadConfigPacks(); MinecraftServer.getInstanceManager().getInstances().forEach(world -> { if(world.generator() instanceof MinestomChunkGeneratorWrapper wrapper) { @@ -74,9 +60,10 @@ public final class MinestomPlatform extends AbstractPlatform { } }); - return true; + return succeed; } + @Override public @NotNull WorldHandle getWorldHandle() { return worldHandle; From d97fb4ff7b70cdc08797eb3c4b776368bc74e18d Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Tue, 27 May 2025 22:50:03 +0200 Subject: [PATCH 065/116] chore: update paper version --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 28580323c..e22c6fbe4 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -57,7 +57,7 @@ object Versions { object Bukkit { const val minecraft = "1.21.4" - const val paperBuild = "$minecraft-R0.1-20250317.101324-208" + const val paperBuild = "$minecraft-R0.1-20250519.180216-226" const val paper = paperBuild const val paperLib = "1.0.8" const val reflectionRemapper = "0.1.1" From 1dd59c378e39123f13c17ed8014206fc91412e07 Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Tue, 27 May 2025 22:58:16 +0200 Subject: [PATCH 066/116] refactor(minestom): replace static singleton access to platform with dependency injection for better modularity Renamed `MinestomPlatform` to `TerraMinestomPlatform` and updated `TerraMinestomWorldBuilder` to utilize the platform instance directly. Simplified world builder initialization and improved code clarity. --- .../terra/minestom/TerraMinestomExample.java | 3 +- ...atform.java => TerraMinestomPlatform.java} | 41 +++++++++++-------- .../world/TerraMinestomWorldBuilder.java | 18 ++++---- 3 files changed, 34 insertions(+), 28 deletions(-) rename platforms/minestom/src/main/java/com/dfsek/terra/minestom/{MinestomPlatform.java => TerraMinestomPlatform.java} (69%) diff --git a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java index 1cf95a226..0130347df 100644 --- a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java +++ b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java @@ -31,7 +31,8 @@ public class TerraMinestomExample { } public void attachTerra() { - world = TerraMinestomWorldBuilder.from(instance) + TerraMinestomPlatform platform = new TerraMinestomPlatform(); + world = platform.worldBuilder(instance) .defaultPack() .attach(); } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java similarity index 69% rename from platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java rename to platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java index c63378a28..bce7fe270 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java @@ -2,6 +2,7 @@ package com.dfsek.terra.minestom; import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.loader.type.TypeLoader; + import com.dfsek.terra.AbstractPlatform; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; @@ -14,34 +15,41 @@ import com.dfsek.terra.minestom.entity.MinestomEntityType; import com.dfsek.terra.minestom.item.MinestomItemHandle; import com.dfsek.terra.minestom.world.MinestomChunkGeneratorWrapper; import com.dfsek.terra.minestom.world.MinestomWorldHandle; -import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; + +import com.dfsek.terra.minestom.world.TerraMinestomWorldBuilder; import net.minestom.server.MinecraftServer; +import net.minestom.server.instance.Instance; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; -import java.io.IOException; +public final class TerraMinestomPlatform extends AbstractPlatform { + private static final Logger LOGGER = LoggerFactory.getLogger(TerraMinestomPlatform.class); + private final WorldHandle worldHandle; + private final ItemHandle itemHandle; + private final TypeLoader biomeTypeLoader; -public final class MinestomPlatform extends AbstractPlatform { - private static final Logger LOGGER = LoggerFactory.getLogger(MinestomPlatform.class); - private static MinestomPlatform INSTANCE = null; - private final MinestomWorldHandle worldHandle = new MinestomWorldHandle(); - private final MinestomItemHandle itemHandle = new MinestomItemHandle(); - - private MinestomPlatform() { + public TerraMinestomPlatform(WorldHandle worldHandle, ItemHandle itemHandle, TypeLoader biomeTypeLoader) { + this.worldHandle = worldHandle; + this.itemHandle = itemHandle; + this.biomeTypeLoader = biomeTypeLoader; load(); getEventManager().callEvent(new PlatformInitializationEvent()); } + public TerraMinestomPlatform() { + this(new MinestomWorldHandle(), new MinestomItemHandle(), new MinestomBiomeLoader()); + } + @Override public void register(TypeRegistry registry) { super.register(registry); registry - .registerLoader(PlatformBiome.class, new MinestomBiomeLoader()) + .registerLoader(PlatformBiome.class, biomeTypeLoader) .registerLoader(EntityType.class, (TypeLoader) (annotatedType, o, configLoader, depthTracker) -> new MinestomEntityType((String) o)) .registerLoader(BlockState.class, (TypeLoader) (annotatedType, o, configLoader, depthTracker) -> worldHandle.createBlockState((String) o)); } @@ -82,16 +90,17 @@ public final class MinestomPlatform extends AbstractPlatform { @Override public @NotNull File getDataFolder() { String pathName = System.getProperty("terra.datafolder"); - if (pathName == null) pathName = "./terra/"; + if(pathName == null) pathName = "./terra/"; File file = new File(pathName); if(!file.exists()) file.mkdirs(); return file; } - public static MinestomPlatform getInstance() { - if(INSTANCE == null) { - INSTANCE = new MinestomPlatform(); - } - return INSTANCE; + public TerraMinestomWorldBuilder worldBuilder(Instance instance) { + return new TerraMinestomWorldBuilder(this, instance); + } + + public TerraMinestomWorldBuilder worldBuilder() { + return new TerraMinestomWorldBuilder(this, MinecraftServer.getInstanceManager().createInstanceContainer()); } } \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java index 46ae1691c..3c77c372b 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.minestom.MinestomPlatform; +import com.dfsek.terra.minestom.TerraMinestomPlatform; import com.dfsek.terra.minestom.api.BlockEntityFactory; import com.dfsek.terra.minestom.api.EntityFactory; import com.dfsek.terra.minestom.block.DefaultBlockEntityFactory; @@ -18,20 +18,16 @@ import java.util.function.Function; public class TerraMinestomWorldBuilder { + private final TerraMinestomPlatform platform; private final Instance instance; private ConfigPack pack; private long seed = new Random().nextLong(); private EntityFactory entityFactory = new DefaultEntityFactory(); private BlockEntityFactory blockEntityFactory = new DefaultBlockEntityFactory(); - private TerraMinestomWorldBuilder(Instance instance) { this.instance = instance; } - - public static TerraMinestomWorldBuilder from(Instance instance) { - return new TerraMinestomWorldBuilder(instance); - } - - public static TerraMinestomWorldBuilder builder() { - return new TerraMinestomWorldBuilder(MinecraftServer.getInstanceManager().createInstanceContainer()); + public TerraMinestomWorldBuilder(TerraMinestomPlatform platform, Instance instance) { + this.platform = platform; + this.instance = instance; } public TerraMinestomWorldBuilder pack(ConfigPack pack) { @@ -40,13 +36,13 @@ public class TerraMinestomWorldBuilder { } public TerraMinestomWorldBuilder packById(String id) { - this.pack = MinestomPlatform.getInstance().getConfigRegistry().getByID(id).orElseThrow(); + this.pack = platform.getConfigRegistry().getByID(id).orElseThrow(); return this; } public TerraMinestomWorldBuilder findPack(Function, ConfigPack> fn) { - this.pack = fn.apply(MinestomPlatform.getInstance().getConfigRegistry()); + this.pack = fn.apply(platform.getConfigRegistry()); return this; } From 089b25dea4c9213dd4422c4721d7b293551cb9b5 Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Tue, 27 May 2025 23:25:34 +0200 Subject: [PATCH 067/116] feat: update Minestom version and replace deprecated ItemComponent API Updated the Minestom library to version 1_21_5-69b9a5d844 and migrated from the deprecated `ItemComponent` API to `DataComponents`. This ensures compatibility with the latest changes and improves maintainability. --- buildSrc/src/main/kotlin/Versions.kt | 2 +- .../com/dfsek/terra/minestom/item/MinestomItemStack.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index e22c6fbe4..12eb8d75b 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -84,6 +84,6 @@ object Versions { } object Minestom { - const val minestom = "fb895cb899" + const val minestom = "1_21_5-69b9a5d844" } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemStack.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemStack.java index 2b488a8c8..214785016 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemStack.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemStack.java @@ -6,7 +6,7 @@ import com.dfsek.terra.api.inventory.item.Enchantment; import com.dfsek.terra.api.inventory.item.ItemMeta; import net.minestom.server.MinecraftServer; -import net.minestom.server.item.ItemComponent; +import net.minestom.server.component.DataComponents; import net.minestom.server.item.ItemStack; import net.minestom.server.item.component.EnchantmentList; import net.minestom.server.registry.DynamicRegistry; @@ -47,7 +47,7 @@ public class MinestomItemStack implements com.dfsek.terra.api.inventory.ItemStac @Override public ItemMeta getItemMeta() { HashMap enchantments = new HashMap<>(); - EnchantmentList enchantmentList = base.get(ItemComponent.ENCHANTMENTS); + EnchantmentList enchantmentList = base.get(DataComponents.ENCHANTMENTS); if(enchantmentList != null) { enchantmentList.enchantments().forEach((enchantmentKey, integer) -> { enchantments.put( @@ -67,6 +67,6 @@ public class MinestomItemStack implements com.dfsek.terra.api.inventory.ItemStac }); EnchantmentList list = new EnchantmentList(enchantments); - base = base.with(ItemComponent.ENCHANTMENTS, list); + base = base.with(DataComponents.ENCHANTMENTS, list); } } From 5dff25670c103370af5cf8c5d6b412b6b0cb1e20 Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Fri, 30 May 2025 09:13:04 +0200 Subject: [PATCH 068/116] refactor: minestom chunk storage to improve memory efficiency Replaced 3D array with a 1D array for chunk block storage and adjusted related logic to use calculated indices. Updated block type comparison to use state IDs instead of block IDs for consistency and correctness. --- .../minestom/block/MinestomBlockType.java | 2 +- .../terra/minestom/chunk/CachedChunk.java | 26 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockType.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockType.java index 8e4bd4360..803f13bc3 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockType.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockType.java @@ -41,7 +41,7 @@ public class MinestomBlockType implements BlockType { @Override public boolean equals(Object obj) { if(obj instanceof MinestomBlockType other) { - return block.id() == other.block.id(); + return block.stateId() == other.block.stateId(); } return false; } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/CachedChunk.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/CachedChunk.java index ed9ad8622..04f7f52d8 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/CachedChunk.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/CachedChunk.java @@ -10,40 +10,40 @@ import net.minestom.server.instance.block.Block; import net.minestom.server.instance.generator.UnitModifier; import org.jetbrains.annotations.NotNull; +import java.util.Arrays; + public class CachedChunk implements ProtoChunk { private final int minHeight; private final int maxHeight; - private final Block[][][] blocks; + private final Block[] blocks; public CachedChunk(int minHeight, int maxHeight) { this.minHeight = minHeight; this.maxHeight = maxHeight; - this.blocks = new Block[16][maxHeight - minHeight + 1][16]; - - for(int x = 0; x < 16; x++) { - for(int z = 0; z < 16; z++) { - for(int y = 0; y < maxHeight - minHeight + 1; y++) { - blocks[x][y][z] = Block.AIR; - } - } - } + this.blocks = new Block[16 * (maxHeight - minHeight + 1) * 16]; + Arrays.fill(blocks, Block.AIR); } public void writeRelative(UnitModifier modifier) { - modifier.setAllRelative((x, y, z) -> blocks[x][y][z]); + modifier.setAllRelative((x, y, z) -> blocks[getIndex(x, y + minHeight, z)]); } @Override public void setBlock(int x, int y, int z, @NotNull BlockState blockState) { Block block = (Block) blockState.getHandle(); if(block == null) return; - blocks[x][y - minHeight][z] = block; + blocks[getIndex(x, y, z)] = block; + } + + private int getIndex(int x, int y, int z) { + int y_normalized = y - minHeight; + return x + (z * 16) + (y_normalized * 256); } @Override public @NotNull BlockState getBlock(int x, int y, int z) { - return new MinestomBlockState(blocks[x][y - minHeight][z]); + return new MinestomBlockState(blocks[getIndex(x, y, z)]); } @Override From 5e1c9d8ebe15d6885c295cd145d716fab02a4d78 Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Mon, 2 Jun 2025 00:34:48 +0200 Subject: [PATCH 069/116] fix: generation stages not being able to reference eachother --- .../terra/minestom/TerraMinestomExample.java | 3 ++ .../terra/minestom/biome/MinestomBiome.java | 7 ++-- .../minestom/biome/MinestomBiomeLoader.java | 10 ++--- .../terra/minestom/chunk/CachedChunk.java | 6 +++ .../minestom/chunk/GeneratedChunkCache.java | 19 ++++++--- .../world/MinestomChunkGeneratorWrapper.java | 39 +++++++++++++++++-- .../minestom/world/MinestomProtoWorld.java | 10 +++++ .../minestom/world/TerraMinestomWorld.java | 13 +++++-- .../world/TerraMinestomWorldBuilder.java | 2 +- 9 files changed, 86 insertions(+), 23 deletions(-) diff --git a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java index 0130347df..792dbb195 100644 --- a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java +++ b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java @@ -122,12 +122,15 @@ public class TerraMinestomExample { private void regenerate() { instance.sendMessage(Component.text("Regenerating world")); + Instance oldInstance = instance; createNewInstance(); attachTerra(); preloadWorldAndMeasure(); MinecraftServer.getConnectionManager().getOnlinePlayers().forEach(player -> player.setInstance(instance, new Pos(0, 100, 0)) ); + + MinecraftServer.getInstanceManager().unregisterInstance(oldInstance); } } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiome.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiome.java index a4c146359..a050978d6 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiome.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiome.java @@ -2,16 +2,17 @@ package com.dfsek.terra.minestom.biome; import com.dfsek.terra.api.world.biome.PlatformBiome; +import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.world.biome.Biome; public class MinestomBiome implements PlatformBiome { - private final Biome biome; + private final DynamicRegistry.Key biome; - public MinestomBiome(Biome biome) { this.biome = biome; } + public MinestomBiome(DynamicRegistry.Key biome) { this.biome = biome; } @Override - public Biome getHandle() { + public DynamicRegistry.Key getHandle() { return biome; } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java index edaf49a50..ccd1176c5 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java @@ -8,23 +8,19 @@ import com.dfsek.tectonic.api.loader.type.TypeLoader; import com.dfsek.terra.api.world.biome.PlatformBiome; import net.kyori.adventure.key.Key; -import net.minestom.server.MinecraftServer; import net.minestom.server.registry.DynamicRegistry; -import net.minestom.server.world.biome.Biome; +import org.intellij.lang.annotations.Subst; import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; public class MinestomBiomeLoader implements TypeLoader { - private final DynamicRegistry biomeRegistry = MinecraftServer.getBiomeRegistry(); - @Override public PlatformBiome load(@NotNull AnnotatedType annotatedType, @NotNull Object o, @NotNull ConfigLoader configLoader, DepthTracker depthTracker) throws LoadException { + @Subst("name:value") String id = (String) o; Key key = Key.key(id); - Biome biome = biomeRegistry.get(key); - if(biome == null) throw new LoadException("Biome %s does not exist in registry".formatted(id), depthTracker); - return new MinestomBiome(biome); + return new MinestomBiome(DynamicRegistry.Key.of(key)); } } \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/CachedChunk.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/CachedChunk.java index 04f7f52d8..c56336b20 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/CachedChunk.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/CachedChunk.java @@ -3,10 +3,16 @@ package com.dfsek.terra.minestom.chunk; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.util.Column; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ProtoChunk; +import com.dfsek.terra.minestom.biome.MinestomBiome; import com.dfsek.terra.minestom.block.MinestomBlockState; +import net.minestom.server.coordinate.Point; import net.minestom.server.instance.block.Block; +import net.minestom.server.instance.generator.GenerationUnit; import net.minestom.server.instance.generator.UnitModifier; import org.jetbrains.annotations.NotNull; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/GeneratedChunkCache.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/GeneratedChunkCache.java index 018c82c72..38064b86f 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/GeneratedChunkCache.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/GeneratedChunkCache.java @@ -22,13 +22,15 @@ public class GeneratedChunkCache { private final ServerWorld world; private final BiomeProvider biomeProvider; - public GeneratedChunkCache(DimensionType dimensionType, ChunkGenerator generator, ServerWorld world) { + public GeneratedChunkCache(DimensionType dimensionType, ChunkGenerator generator, ServerWorld world, BiomeProvider biomeProvider) { this.dimensionType = dimensionType; this.generator = generator; this.world = world; - this.biomeProvider = world.getBiomeProvider(); - this.cache = Caffeine.newBuilder().maximumSize(128).recordStats().build( - (Pair key) -> generateChunk(key.getLeft(), key.getRight())); + this.biomeProvider = biomeProvider; + this.cache = Caffeine.newBuilder() + .maximumSize(128) + .recordStats() + .build((Pair key) -> generateChunk(key.getLeft(), key.getRight())); } private CachedChunk generateChunk(int x, int z) { @@ -39,8 +41,13 @@ public class GeneratedChunkCache { public void displayStats() { CacheStats stats = cache.stats(); - log.info("Avg load time: {}ms | Hit rate: {}% | Load Count: {}", stats.averageLoadPenalty(), stats.hitRate() * 100, - stats.loadCount()); + log.info("Avg load time: %.4fms | Hit rate: %3.4f%% | Load Count: %d" + .formatted( + stats.averageLoadPenalty() / 1000000f, + stats.hitRate() * 100, + stats.loadCount() + ) + ); } public CachedChunk at(int x, int z) { diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java index 81529db48..f3829a65a 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java @@ -1,30 +1,41 @@ package com.dfsek.terra.minestom.world; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.world.biome.PlatformBiome; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; import com.dfsek.terra.api.world.chunk.generation.util.GeneratorWrapper; +import com.dfsek.terra.minestom.biome.MinestomBiome; import com.dfsek.terra.minestom.chunk.CachedChunk; import com.dfsek.terra.minestom.chunk.GeneratedChunkCache; import net.minestom.server.coordinate.Point; import net.minestom.server.instance.generator.GenerationUnit; import net.minestom.server.instance.generator.Generator; +import net.minestom.server.instance.generator.UnitModifier; +import net.minestom.server.registry.DynamicRegistry; import org.jetbrains.annotations.NotNull; +import java.util.Objects; + public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrapper { private final GeneratedChunkCache cache; private ChunkGenerator generator; private final TerraMinestomWorld world; + private final BiomeProvider biomeProvider; private ConfigPack pack; - public MinestomChunkGeneratorWrapper(ChunkGenerator generator, TerraMinestomWorld world, ConfigPack pack) { + public MinestomChunkGeneratorWrapper(Platform platform, ChunkGenerator generator, TerraMinestomWorld world, ConfigPack pack) { this.generator = generator; this.world = world; this.pack = pack; - this.cache = new GeneratedChunkCache(world.getDimensionType(), generator, world); + + biomeProvider = pack.getBiomeProvider().caching(platform); + this.cache = new GeneratedChunkCache(world.getDimensionType(), generator, world, biomeProvider); } public ChunkGenerator getGenerator() { @@ -36,14 +47,36 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe Point start = unit.absoluteStart(); int x = start.chunkX(); int z = start.chunkZ(); + int blockX = start.blockX(); + int blockZ = start.blockZ(); CachedChunk chunk = cache.at(x, z); - chunk.writeRelative(unit.modifier()); + UnitModifier modifier = unit.modifier(); + chunk.writeRelative(modifier); + +// for(int dx = 0; dx < 16; dx++) { +// for(int dz = 0; dz < 16; dz++) { +// int globalX = dx + blockX; +// int globalZ = dz + blockZ; +// biomeProvider.getColumn(globalX, globalZ, world).forEach((y, biome) -> { +// MinestomBiome platformBiome = (MinestomBiome) biome.getPlatformBiome(); +// modifier.setBiome(globalX, 0, globalZ, DynamicRegistry.Key.of("minecraft:the_void")); +// }); +// } +// } unit.fork(setter -> { MinestomProtoWorld protoWorld = new MinestomProtoWorld(cache, x, z, world, setter); + var stages = world.getPack().getStages(); + + if(x==0 && z==0) { + System.out.println(stages); + System.out.println(protoWorld.getBlockState(-4, 73, -6).getAsString()); + } + for(GenerationStage stage : world.getPack().getStages()) { stage.populate(protoWorld); + if(x==0 && z==0) System.out.println(protoWorld.getBlockState(-4, 73, -6).getAsString()); } }); } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomProtoWorld.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomProtoWorld.java index 65ec22654..e29cc5d76 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomProtoWorld.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomProtoWorld.java @@ -5,6 +5,7 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; @@ -17,6 +18,11 @@ import com.dfsek.terra.minestom.entity.DeferredMinestomEntity; import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.Block.Setter; +import java.lang.ref.WeakReference; +import java.util.HashMap; +import java.util.HashSet; +import java.util.WeakHashMap; + public class MinestomProtoWorld implements ProtoWorld { private final GeneratedChunkCache cache; @@ -51,6 +57,10 @@ public class MinestomProtoWorld implements ProtoWorld { @Override public void setBlockState(int x, int y, int z, BlockState data, boolean physics) { modifier.setBlock(x, y, z, (Block) data.getHandle()); + int chunkX = x >> 4; + int chunkZ = z >> 4; + CachedChunk chunk = cache.at(chunkX, chunkZ); + chunk.setBlock(x & 15, y, z & 15, data); } @Override diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java index 4f4aef091..692f96b64 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java @@ -13,6 +13,7 @@ import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.info.WorldProperties; +import com.dfsek.terra.minestom.TerraMinestomPlatform; import com.dfsek.terra.minestom.api.BlockEntityFactory; import com.dfsek.terra.minestom.api.EntityFactory; import com.dfsek.terra.minestom.block.MinestomBlockState; @@ -37,8 +38,14 @@ public final class TerraMinestomWorld implements ServerWorld, WorldProperties { private final EntityFactory entityFactory; private final BlockEntityFactory blockEntityFactory; - public TerraMinestomWorld(Instance instance, ConfigPack pack, long seed, EntityFactory entityFactory, - BlockEntityFactory blockEntityFactory) { + public TerraMinestomWorld( + TerraMinestomPlatform platform, + Instance instance, + ConfigPack pack, + long seed, + EntityFactory entityFactory, + BlockEntityFactory blockEntityFactory + ) { this.instance = instance; this.pack = pack; this.seed = seed; @@ -46,7 +53,7 @@ public final class TerraMinestomWorld implements ServerWorld, WorldProperties { this.dimensionType = MinecraftServer.getDimensionTypeRegistry().get(instance.getDimensionType()); this.blockEntityFactory = blockEntityFactory; - this.wrapper = new MinestomChunkGeneratorWrapper(pack.getGeneratorProvider().newInstance(pack), this, pack); + this.wrapper = new MinestomChunkGeneratorWrapper(platform, pack.getGeneratorProvider().newInstance(pack), this, pack); this.entityFactory = entityFactory; instance.setGenerator(this.wrapper); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java index 3c77c372b..c68b4b72f 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java @@ -66,6 +66,6 @@ public class TerraMinestomWorldBuilder { } public TerraMinestomWorld attach() { - return new TerraMinestomWorld(instance, pack, seed, entityFactory, blockEntityFactory); + return new TerraMinestomWorld(platform, instance, pack, seed, entityFactory, blockEntityFactory); } } From adfdb8d63ce7d7f549dc54200f38f7a14e01a904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 3 Jun 2025 04:37:03 -0600 Subject: [PATCH 070/116] update versions --- buildSrc/src/main/kotlin/Versions.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index c1a4d150c..c9d294cc7 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -5,9 +5,9 @@ object Versions { object Libraries { const val tectonic = "4.2.1" - const val paralithic = "1.0.3-SNAPSHOT" + const val paralithic = "1.0.3" const val strata = "1.3.2" - const val seismic = "0.3.2-SNAPSHOT" + const val seismic = "0.3.4" const val cloud = "2.0.0" From 858adfe866dcbf80d2ee8087d6e7fdf5090464c7 Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Tue, 3 Jun 2025 22:41:31 +0200 Subject: [PATCH 071/116] feat: initial custom biome implementation --- .../terra/minestom/TerraMinestomPlatform.java | 26 +++- .../terra/minestom/addon/MinestomAddon.java | 47 ++++++ .../terra/minestom/biome/BiomeFactory.java | 9 ++ .../biome/MinestomCustomBiomeFactory.java | 73 +++++++++ .../biome/MinestomCustomBiomePool.java | 39 +++++ .../terra/minestom/biome/NativeBiome.java | 9 ++ .../config/BiomeAdditionsSoundTemplate.java | 24 +++ .../config/BiomeMoodSoundTemplate.java | 37 +++++ .../config/BiomeParticleConfigTemplate.java | 30 ++++ .../terra/minestom/config/KeyLoader.java | 32 ++++ .../terra/minestom/config/RGBLikeLoader.java | 30 ++++ .../minestom/config/SoundEventTemplate.java | 28 ++++ .../config/VanillaBiomeProperties.java | 140 ++++++++++++++++++ .../world/MinestomChunkGeneratorWrapper.java | 51 +++---- .../minestom/world/TerraMinestomWorld.java | 14 +- .../world/TerraMinestomWorldBuilder.java | 10 +- 16 files changed, 570 insertions(+), 29 deletions(-) create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/addon/MinestomAddon.java create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/BiomeFactory.java create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomeFactory.java create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomePool.java create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/NativeBiome.java create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/BiomeAdditionsSoundTemplate.java create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/BiomeMoodSoundTemplate.java create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/BiomeParticleConfigTemplate.java create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/KeyLoader.java create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/RGBLikeLoader.java create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/SoundEventTemplate.java create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/VanillaBiomeProperties.java diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java index bce7fe270..c699ff353 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java @@ -4,13 +4,21 @@ import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.loader.type.TypeLoader; import com.dfsek.terra.AbstractPlatform; +import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.world.biome.PlatformBiome; +import com.dfsek.terra.minestom.addon.MinestomAddon; +import com.dfsek.terra.minestom.config.BiomeAdditionsSoundTemplate; +import com.dfsek.terra.minestom.config.BiomeParticleConfigTemplate; import com.dfsek.terra.minestom.biome.MinestomBiomeLoader; +import com.dfsek.terra.minestom.config.KeyLoader; +import com.dfsek.terra.minestom.config.BiomeMoodSoundTemplate; +import com.dfsek.terra.minestom.config.RGBLikeLoader; +import com.dfsek.terra.minestom.config.SoundEventTemplate; import com.dfsek.terra.minestom.entity.MinestomEntityType; import com.dfsek.terra.minestom.item.MinestomItemHandle; import com.dfsek.terra.minestom.world.MinestomChunkGeneratorWrapper; @@ -18,13 +26,18 @@ import com.dfsek.terra.minestom.world.MinestomWorldHandle; import com.dfsek.terra.minestom.world.TerraMinestomWorldBuilder; +import net.kyori.adventure.key.Key; +import net.kyori.adventure.util.RGBLike; import net.minestom.server.MinecraftServer; import net.minestom.server.instance.Instance; +import net.minestom.server.sound.SoundEvent; +import net.minestom.server.world.biome.BiomeEffects; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.util.List; public final class TerraMinestomPlatform extends AbstractPlatform { @@ -50,8 +63,14 @@ public final class TerraMinestomPlatform extends AbstractPlatform { super.register(registry); registry .registerLoader(PlatformBiome.class, biomeTypeLoader) + .registerLoader(RGBLike.class, new RGBLikeLoader()) + .registerLoader(Key.class, new KeyLoader()) .registerLoader(EntityType.class, (TypeLoader) (annotatedType, o, configLoader, depthTracker) -> new MinestomEntityType((String) o)) - .registerLoader(BlockState.class, (TypeLoader) (annotatedType, o, configLoader, depthTracker) -> worldHandle.createBlockState((String) o)); + .registerLoader(BlockState.class, (TypeLoader) (annotatedType, o, configLoader, depthTracker) -> worldHandle.createBlockState((String) o)) + .registerLoader(BiomeEffects.Particle.class, BiomeParticleConfigTemplate::new) + .registerLoader(BiomeEffects.MoodSound.class, BiomeMoodSoundTemplate::new) + .registerLoader(BiomeEffects.AdditionsSound.class, BiomeAdditionsSoundTemplate::new) + .registerLoader(SoundEvent.class, SoundEventTemplate::new); } @Override @@ -103,4 +122,9 @@ public final class TerraMinestomPlatform extends AbstractPlatform { public TerraMinestomWorldBuilder worldBuilder() { return new TerraMinestomWorldBuilder(this, MinecraftServer.getInstanceManager().createInstanceContainer()); } + + @Override + protected Iterable platformAddon() { + return List.of(new MinestomAddon(this)); + } } \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/addon/MinestomAddon.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/addon/MinestomAddon.java new file mode 100644 index 000000000..4d4adc4b8 --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/addon/MinestomAddon.java @@ -0,0 +1,47 @@ +package com.dfsek.terra.minestom.addon; + +import ca.solostudios.strata.Versions; +import ca.solostudios.strata.version.Version; + +import com.dfsek.terra.api.addon.BaseAddon; + +import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.world.biome.Biome; + +import com.dfsek.terra.minestom.TerraMinestomPlatform; + +import com.dfsek.terra.minestom.config.VanillaBiomeProperties; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class MinestomAddon implements BaseAddon { + private static final Version VERSION = Versions.getVersion(1, 0, 0); + private static final Logger logger = LoggerFactory.getLogger(MinestomAddon.class); + private final TerraMinestomPlatform minestomPlatform; + + public MinestomAddon(TerraMinestomPlatform minestomPlatform) { + this.minestomPlatform = minestomPlatform; + } + + @Override + public void initialize() { + minestomPlatform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigurationLoadEvent.class) + .then(event -> { + if(event.is(Biome.class)) { + event.getLoadedObject(Biome.class).getContext().put(event.load(new VanillaBiomeProperties())); + } + }) + .global(); + } + + @Override + public Version getVersion() { return VERSION; } + + @Override + public String getID() { return "terra-minestom"; } +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/BiomeFactory.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/BiomeFactory.java new file mode 100644 index 000000000..832305e3a --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/BiomeFactory.java @@ -0,0 +1,9 @@ +package com.dfsek.terra.minestom.biome; + +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.world.biome.Biome; + + +public interface BiomeFactory { + NativeBiome create(ConfigPack pack, Biome source); +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomeFactory.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomeFactory.java new file mode 100644 index 000000000..f33c5c9a2 --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomeFactory.java @@ -0,0 +1,73 @@ +package com.dfsek.terra.minestom.biome; + +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.registry.key.RegistryKey; +import com.dfsek.terra.minestom.config.VanillaBiomeProperties; + +import net.kyori.adventure.key.Key; +import net.minestom.server.MinecraftServer; +import net.minestom.server.color.Color; +import net.minestom.server.registry.DynamicRegistry; +import net.minestom.server.world.biome.Biome; +import net.minestom.server.world.biome.BiomeEffects; +import org.intellij.lang.annotations.Subst; +import org.jetbrains.annotations.NotNull; + +import java.util.Locale; +import java.util.Objects; + + +public class MinestomCustomBiomeFactory implements BiomeFactory { + private final DynamicRegistry biomeRegistry = MinecraftServer.getBiomeRegistry(); + private final @NotNull Biome plainsBiome = Objects.requireNonNull(biomeRegistry.get(Key.key("minecraft:plains"))); + + @Override + public NativeBiome create(ConfigPack pack, com.dfsek.terra.api.world.biome.Biome source) { + VanillaBiomeProperties properties = source.getContext().get(VanillaBiomeProperties.class); + DynamicRegistry.Key parentKey = ((MinestomBiome) source.getPlatformBiome()).getHandle(); + Biome parent = mergeNullable(biomeRegistry.get(parentKey), plainsBiome); + BiomeEffects parentEffects = parent.effects(); + Key key = Key.key("terra", createBiomeID(pack, source.getID())); + + BiomeEffects.Builder effectsBuilder = BiomeEffects.builder() + .fogColor(mergeNullable(properties.getFogColor(), parentEffects.fogColor())) + .skyColor(mergeNullable(properties.getSkyColor(), parentEffects.skyColor())) + .waterColor(mergeNullable(properties.getWaterColor(), parentEffects.waterColor())) + .waterFogColor(mergeNullable(properties.getWaterFogColor(), parentEffects.waterFogColor())) + .foliageColor(mergeNullable(properties.getFoliageColor(), parentEffects.foliageColor())) + .grassColor(mergeNullable(properties.getGrassColor(), parentEffects.grassColor())) + .grassColorModifier(mergeNullable(properties.getGrassColorModifier(), parentEffects.grassColorModifier())) + .biomeParticle(mergeNullable(properties.getParticleConfig(), parentEffects.biomeParticle())) + .ambientSound(mergeNullable(properties.getLoopSound(), parentEffects.ambientSound())) + .moodSound(mergeNullable(properties.getMoodSound(), parentEffects.moodSound())) + .additionsSound(mergeNullable(properties.getAdditionsSound(), parentEffects.additionsSound())) + // TODO music + .music(parentEffects.music()) + .musicVolume(parentEffects.musicVolume()); + + if (effectsBuilder.build().equals(BiomeEffects.PLAINS_EFFECTS)) { + effectsBuilder.fogColor(new Color(0xC0D8FE)); // circumvent a minestom bug + } + + Biome target = Biome.builder() + .downfall(mergeNullable(properties.getDownfall(), parent.downfall())) + .hasPrecipitation(mergeNullable(properties.getPrecipitation(), parent.hasPrecipitation())) + .temperature(mergeNullable(properties.getTemperature(), parent.temperature())) + .temperatureModifier(mergeNullable(properties.getTemperatureModifier(), parent.temperatureModifier())) + .effects(effectsBuilder.build()) + .build(); + + DynamicRegistry.Key registryKey = MinecraftServer.getBiomeRegistry().register(key, target); + return new NativeBiome(key, registryKey, source.getID(), target); + } + + private static T mergeNullable(T first, T second) { + if (first == null) return second; + return first; + } + + @Subst("value") + protected static String createBiomeID(ConfigPack pack, String biomeId) { + return pack.getID().toLowerCase() + "/" + biomeId.toLowerCase(Locale.ROOT); + } +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomePool.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomePool.java new file mode 100644 index 000000000..db0e48be6 --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomePool.java @@ -0,0 +1,39 @@ +package com.dfsek.terra.minestom.biome; + +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.world.biome.Biome; + +import java.util.HashMap; + + +public class MinestomCustomBiomePool { + private final HashMap biomes = new HashMap<>(); + private final MinestomCustomBiomeFactory factory; + private final ConfigPack configPack; + + public MinestomCustomBiomePool(ConfigPack configPack, MinestomCustomBiomeFactory factory) { + this.configPack = configPack; + this.factory = factory; + } + + public NativeBiome getBiome(Biome source) { + NativeBiome nativeBiome = biomes.get(source.getID()); + if(nativeBiome != null) return nativeBiome; + nativeBiome = factory.create(configPack, source); + biomes.put(source.getID(), nativeBiome); + return nativeBiome; + } + + public void preloadBiomes(Iterable biomesToLoad) { + biomesToLoad + .forEach(biome -> { + if(!this.biomes.containsKey(biome.getID())) { + this.biomes.put(biome.getID(), factory.create(configPack, biome)); + } + }); + } + + public void invalidate() { + biomes.clear(); + } +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/NativeBiome.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/NativeBiome.java new file mode 100644 index 000000000..e01728b7d --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/NativeBiome.java @@ -0,0 +1,9 @@ +package com.dfsek.terra.minestom.biome; + +import net.kyori.adventure.key.Key; +import net.minestom.server.registry.DynamicRegistry; +import net.minestom.server.world.biome.Biome; + + +public record NativeBiome(Key key, DynamicRegistry.Key registry, String id, Biome biome) { +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/BiomeAdditionsSoundTemplate.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/BiomeAdditionsSoundTemplate.java new file mode 100644 index 000000000..85e4499fc --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/BiomeAdditionsSoundTemplate.java @@ -0,0 +1,24 @@ +package com.dfsek.terra.minestom.config; + +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Value; +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import net.minestom.server.sound.SoundEvent; +import net.minestom.server.world.biome.BiomeEffects; + + +public class BiomeAdditionsSoundTemplate implements ObjectTemplate { + @Value("sound") + @Default + private SoundEvent sound = null; + + @Value("sound-chance") + @Default + private Double soundChance = null; + + @Override + public BiomeEffects.AdditionsSound get() { + if(sound == null) return null; + return new BiomeEffects.AdditionsSound(sound, soundChance); + } +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/BiomeMoodSoundTemplate.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/BiomeMoodSoundTemplate.java new file mode 100644 index 000000000..a3b7bb3c8 --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/BiomeMoodSoundTemplate.java @@ -0,0 +1,37 @@ +package com.dfsek.terra.minestom.config; + +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Value; +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import net.minestom.server.sound.SoundEvent; +import net.minestom.server.world.biome.BiomeEffects; + + +public class BiomeMoodSoundTemplate implements ObjectTemplate { + @Value("sound") + @Default + private SoundEvent sound = null; + + @Value("cultivation-ticks") + @Default + private Integer soundCultivationTicks = null; + + @Value("spawn-range") + @Default + private Integer soundSpawnRange = null; + + @Value("extra-distance") + @Default + private Double soundExtraDistance = null; + + @Override + public BiomeEffects.MoodSound get() { + if(sound == null) return null; + return new BiomeEffects.MoodSound( + sound, + soundCultivationTicks, + soundSpawnRange, + soundExtraDistance + ); + } +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/BiomeParticleConfigTemplate.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/BiomeParticleConfigTemplate.java new file mode 100644 index 000000000..c095b7893 --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/BiomeParticleConfigTemplate.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.minestom.config; + +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Value; +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import net.minestom.server.particle.Particle; +import net.minestom.server.world.biome.BiomeEffects; + + +public class BiomeParticleConfigTemplate implements ObjectTemplate { + @Value("particle") + @Default + private String particle = null; + + @Value("probability") + @Default + private Float probability = null; + + @Override + public BiomeEffects.Particle get() { + if(particle == null || probability == null) { + return null; + } + + return new BiomeEffects.Particle( + probability, + Particle.fromKey(particle) + ); + } +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/KeyLoader.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/KeyLoader.java new file mode 100644 index 000000000..406e64674 --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/KeyLoader.java @@ -0,0 +1,32 @@ +package com.dfsek.terra.minestom.config; + +import com.dfsek.tectonic.api.depth.DepthTracker; +import com.dfsek.tectonic.api.exception.LoadException; +import com.dfsek.tectonic.api.loader.ConfigLoader; +import com.dfsek.tectonic.api.loader.type.TypeLoader; +import net.kyori.adventure.key.InvalidKeyException; +import net.kyori.adventure.key.Key; +import org.intellij.lang.annotations.Subst; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.AnnotatedType; + + +public class KeyLoader implements TypeLoader { + @Override + public Key load( + @NotNull AnnotatedType annotatedType, + @NotNull Object o, + @NotNull ConfigLoader configLoader, + DepthTracker depthTracker + ) throws LoadException { + if(!(o instanceof @Subst("a:o") String stringKey)) { + throw new LoadException("Value is not a String", depthTracker); + } + try { + return Key.key(stringKey); + } catch(InvalidKeyException e) { + throw new LoadException("Can't load key: Invalid Format", e, depthTracker); + } + } +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/RGBLikeLoader.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/RGBLikeLoader.java new file mode 100644 index 000000000..de998edb5 --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/RGBLikeLoader.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.minestom.config; + +import com.dfsek.tectonic.api.depth.DepthTracker; +import com.dfsek.tectonic.api.exception.LoadException; +import com.dfsek.tectonic.api.loader.ConfigLoader; +import com.dfsek.tectonic.api.loader.type.TypeLoader; +import net.kyori.adventure.key.InvalidKeyException; +import net.kyori.adventure.key.Key; +import net.kyori.adventure.util.RGBLike; +import net.minestom.server.color.Color; +import org.intellij.lang.annotations.Subst; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.AnnotatedType; + + +public class RGBLikeLoader implements TypeLoader { + @Override + public RGBLike load( + @NotNull AnnotatedType annotatedType, + @NotNull Object o, + @NotNull ConfigLoader configLoader, + DepthTracker depthTracker + ) throws LoadException { + if(!(o instanceof @Subst("a:o") Integer value)) { + throw new LoadException("Value is not an integer", depthTracker); + } + return new Color(value); + } +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/SoundEventTemplate.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/SoundEventTemplate.java new file mode 100644 index 000000000..c8bd81a13 --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/SoundEventTemplate.java @@ -0,0 +1,28 @@ +package com.dfsek.terra.minestom.config; + +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Value; +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import net.kyori.adventure.key.Key; +import net.minestom.server.sound.SoundEvent; + + +public class SoundEventTemplate implements ObjectTemplate { + @Value("id") + @Default + private Key id = null; + + @Value("distance-to-travel") + @Default + private Float distanceToTravel = null; + + @Override + public SoundEvent get() { + if(id == null) { + return null; + } else { + // distanceToTravel is specifically allowed to be null. + return SoundEvent.of(id, distanceToTravel); + } + } +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/VanillaBiomeProperties.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/VanillaBiomeProperties.java new file mode 100644 index 000000000..ea82cd7e2 --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/VanillaBiomeProperties.java @@ -0,0 +1,140 @@ +package com.dfsek.terra.minestom.config; + +import com.dfsek.tectonic.api.config.template.ConfigTemplate; +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import com.dfsek.terra.api.properties.Properties; + +import net.kyori.adventure.util.RGBLike; +import net.minestom.server.sound.SoundEvent; +import net.minestom.server.world.biome.Biome.TemperatureModifier; +import net.minestom.server.world.biome.BiomeEffects; +import net.minestom.server.world.biome.BiomeEffects.GrassColorModifier; + + +public class VanillaBiomeProperties implements ConfigTemplate, Properties { + @Value("colors.grass") + @Default + private RGBLike grassColor = null; + + @Value("colors.fog") + @Default + private RGBLike fogColor = null; + + @Value("colors.water") + @Default + private RGBLike waterColor = null; + + @Value("colors.water-fog") + @Default + private RGBLike waterFogColor = null; + + @Value("colors.foliage") + @Default + private RGBLike foliageColor = null; + + @Value("colors.sky") + @Default + private RGBLike skyColor = null; + + @Value("colors.modifier") + @Default + private GrassColorModifier grassColorModifier = null; + + @Value("particles") + @Default + private BiomeEffects.Particle particleConfig = null; + + @Value("climate.precipitation") + @Default + private Boolean precipitation = null; + + @Value("climate.temperature") + @Default + private Float temperature = null; + + @Value("climate.temperature-modifier") + @Default + private TemperatureModifier temperatureModifier = null; + + @Value("climate.downfall") + @Default + private Float downfall = null; + + @Value("sound.loop-sound.sound") + @Default + private SoundEvent loopSound = null; + + @Value("sound.mood-sound") + @Default + private BiomeEffects.MoodSound moodSound = null; + + @Value("sound.additions-sound") + @Default + private BiomeEffects.AdditionsSound additionsSound = null; + +// @Value("sound.music") +// @Default +// private MusicSound music = null; + + public RGBLike getGrassColor() { + return grassColor; + } + + public RGBLike getFogColor() { + return fogColor; + } + + public RGBLike getWaterColor() { + return waterColor; + } + + public RGBLike getWaterFogColor() { + return waterFogColor; + } + + public RGBLike getFoliageColor() { + return foliageColor; + } + + public RGBLike getSkyColor() { + return skyColor; + } + + public GrassColorModifier getGrassColorModifier() { + return grassColorModifier; + } + + public BiomeEffects.Particle getParticleConfig() { + return particleConfig; + } + + public Boolean getPrecipitation() { + return precipitation; + } + + public Float getTemperature() { + return temperature; + } + + public TemperatureModifier getTemperatureModifier() { + return temperatureModifier; + } + + public Float getDownfall() { + return downfall; + } + + public SoundEvent getLoopSound() { + return loopSound; + } + + public BiomeEffects.MoodSound getMoodSound() { + return moodSound; + } + + public BiomeEffects.AdditionsSound getAdditionsSound() { + return additionsSound; + } +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java index f3829a65a..c3eba7b34 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java @@ -2,25 +2,25 @@ package com.dfsek.terra.minestom.world; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.world.biome.PlatformBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; import com.dfsek.terra.api.world.chunk.generation.util.GeneratorWrapper; -import com.dfsek.terra.minestom.biome.MinestomBiome; +import com.dfsek.terra.minestom.biome.MinestomCustomBiomeFactory; +import com.dfsek.terra.minestom.biome.MinestomCustomBiomePool; +import com.dfsek.terra.minestom.biome.NativeBiome; import com.dfsek.terra.minestom.chunk.CachedChunk; import com.dfsek.terra.minestom.chunk.GeneratedChunkCache; +import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Point; +import net.minestom.server.entity.Player; import net.minestom.server.instance.generator.GenerationUnit; import net.minestom.server.instance.generator.Generator; import net.minestom.server.instance.generator.UnitModifier; -import net.minestom.server.registry.DynamicRegistry; import org.jetbrains.annotations.NotNull; -import java.util.Objects; - public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrapper { private final GeneratedChunkCache cache; @@ -28,14 +28,22 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe private final TerraMinestomWorld world; private final BiomeProvider biomeProvider; private ConfigPack pack; + private final MinestomCustomBiomePool biomePool; - public MinestomChunkGeneratorWrapper(Platform platform, ChunkGenerator generator, TerraMinestomWorld world, ConfigPack pack) { + public MinestomChunkGeneratorWrapper( + Platform platform, + ChunkGenerator generator, + TerraMinestomWorld world, + ConfigPack pack, + MinestomCustomBiomePool biomePool + ) { this.generator = generator; this.world = world; this.pack = pack; - + this.biomePool = biomePool; biomeProvider = pack.getBiomeProvider().caching(platform); this.cache = new GeneratedChunkCache(world.getDimensionType(), generator, world, biomeProvider); + preloadBiomes(); } public ChunkGenerator getGenerator() { @@ -53,30 +61,14 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe UnitModifier modifier = unit.modifier(); chunk.writeRelative(modifier); -// for(int dx = 0; dx < 16; dx++) { -// for(int dz = 0; dz < 16; dz++) { -// int globalX = dx + blockX; -// int globalZ = dz + blockZ; -// biomeProvider.getColumn(globalX, globalZ, world).forEach((y, biome) -> { -// MinestomBiome platformBiome = (MinestomBiome) biome.getPlatformBiome(); -// modifier.setBiome(globalX, 0, globalZ, DynamicRegistry.Key.of("minecraft:the_void")); -// }); -// } -// } + NativeBiome nativeBiome = biomePool.getBiome(biomeProvider.getBiome(blockX, 100, blockZ, world.getSeed())); + modifier.fillBiome(nativeBiome.registry()); unit.fork(setter -> { MinestomProtoWorld protoWorld = new MinestomProtoWorld(cache, x, z, world, setter); - var stages = world.getPack().getStages(); - - if(x==0 && z==0) { - System.out.println(stages); - System.out.println(protoWorld.getBlockState(-4, 73, -6).getAsString()); - } - for(GenerationStage stage : world.getPack().getStages()) { stage.populate(protoWorld); - if(x==0 && z==0) System.out.println(protoWorld.getBlockState(-4, 73, -6).getAsString()); } }); } @@ -88,6 +80,15 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe public void setPack(ConfigPack pack) { this.pack = pack; this.generator = pack.getGeneratorProvider().newInstance(pack); + this.biomePool.invalidate(); + preloadBiomes(); + } + + private void preloadBiomes() { + this.biomePool.preloadBiomes(world.getBiomeProvider().getBiomes()); + for(Player player : MinecraftServer.getConnectionManager().getOnlinePlayers()) { + player.startConfigurationPhase(); + } } public void displayStats() { diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java index 692f96b64..cbc80522a 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java @@ -16,6 +16,9 @@ import com.dfsek.terra.api.world.info.WorldProperties; import com.dfsek.terra.minestom.TerraMinestomPlatform; import com.dfsek.terra.minestom.api.BlockEntityFactory; import com.dfsek.terra.minestom.api.EntityFactory; +import com.dfsek.terra.minestom.biome.BiomeFactory; +import com.dfsek.terra.minestom.biome.MinestomCustomBiomeFactory; +import com.dfsek.terra.minestom.biome.MinestomCustomBiomePool; import com.dfsek.terra.minestom.block.MinestomBlockState; import com.dfsek.terra.minestom.entity.MinestomEntity; @@ -44,7 +47,8 @@ public final class TerraMinestomWorld implements ServerWorld, WorldProperties { ConfigPack pack, long seed, EntityFactory entityFactory, - BlockEntityFactory blockEntityFactory + BlockEntityFactory blockEntityFactory, + BiomeFactory factory ) { this.instance = instance; this.pack = pack; @@ -53,7 +57,13 @@ public final class TerraMinestomWorld implements ServerWorld, WorldProperties { this.dimensionType = MinecraftServer.getDimensionTypeRegistry().get(instance.getDimensionType()); this.blockEntityFactory = blockEntityFactory; - this.wrapper = new MinestomChunkGeneratorWrapper(platform, pack.getGeneratorProvider().newInstance(pack), this, pack); + this.wrapper = new MinestomChunkGeneratorWrapper( + platform, + pack.getGeneratorProvider().newInstance(pack), + this, + pack, + new MinestomCustomBiomePool(pack, new MinestomCustomBiomeFactory()) + ); this.entityFactory = entityFactory; instance.setGenerator(this.wrapper); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java index c68b4b72f..1983bdee9 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java @@ -7,6 +7,8 @@ import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.minestom.TerraMinestomPlatform; import com.dfsek.terra.minestom.api.BlockEntityFactory; import com.dfsek.terra.minestom.api.EntityFactory; +import com.dfsek.terra.minestom.biome.BiomeFactory; +import com.dfsek.terra.minestom.biome.MinestomCustomBiomeFactory; import com.dfsek.terra.minestom.block.DefaultBlockEntityFactory; import com.dfsek.terra.minestom.entity.DefaultEntityFactory; @@ -24,6 +26,7 @@ public class TerraMinestomWorldBuilder { private long seed = new Random().nextLong(); private EntityFactory entityFactory = new DefaultEntityFactory(); private BlockEntityFactory blockEntityFactory = new DefaultBlockEntityFactory(); + private BiomeFactory biomeFactory = new MinestomCustomBiomeFactory(); public TerraMinestomWorldBuilder(TerraMinestomPlatform platform, Instance instance) { this.platform = platform; @@ -65,7 +68,12 @@ public class TerraMinestomWorldBuilder { return this; } + public TerraMinestomWorldBuilder biomeFactory(BiomeFactory factory) { + this.biomeFactory = factory; + return this; + } + public TerraMinestomWorld attach() { - return new TerraMinestomWorld(platform, instance, pack, seed, entityFactory, blockEntityFactory); + return new TerraMinestomWorld(platform, instance, pack, seed, entityFactory, blockEntityFactory, biomeFactory); } } From 56a1feb708311ae05ab194b1ddc6a9105893b422 Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Wed, 4 Jun 2025 00:05:15 +0200 Subject: [PATCH 072/116] refactor: move biomes to use user-defined naming conventions. Replaced "Custom" with "UserDefined" in biome classes, factories, and references for consistency and clarity. Updated relevant imports, method signatures, and internal logic to align with the new terminology. This change improves readability and better represents the purpose of these biome-related components. --- .../terra/minestom/TerraMinestomExample.java | 1 - .../terra/minestom/TerraMinestomPlatform.java | 17 +++++++++------- .../terra/minestom/api/BiomeFactory.java | 15 ++++++++++++++ .../TerraMinestomWorldBuilder.java | 11 ++++------ .../terra/minestom/biome/BiomeFactory.java | 9 --------- ...a => MinestomUserDefinedBiomeFactory.java} | 8 ++++---- ...java => MinestomUserDefinedBiomePool.java} | 20 +++++++++---------- ...NativeBiome.java => UserDefinedBiome.java} | 2 +- .../world/MinestomChunkGeneratorWrapper.java | 13 ++++++------ .../minestom/world/TerraMinestomWorld.java | 8 ++++---- 10 files changed, 54 insertions(+), 50 deletions(-) create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/BiomeFactory.java rename platforms/minestom/src/main/java/com/dfsek/terra/minestom/{world => api}/TerraMinestomWorldBuilder.java (85%) delete mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/BiomeFactory.java rename platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/{MinestomCustomBiomeFactory.java => MinestomUserDefinedBiomeFactory.java} (92%) rename platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/{MinestomCustomBiomePool.java => MinestomUserDefinedBiomePool.java} (51%) rename platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/{NativeBiome.java => UserDefinedBiome.java} (63%) diff --git a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java index 792dbb195..afa1f0627 100644 --- a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java +++ b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java @@ -16,7 +16,6 @@ import java.time.Duration; import java.util.concurrent.atomic.AtomicInteger; import com.dfsek.terra.minestom.world.TerraMinestomWorld; -import com.dfsek.terra.minestom.world.TerraMinestomWorldBuilder; public class TerraMinestomExample { diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java index c699ff353..527eb85be 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java @@ -24,7 +24,7 @@ import com.dfsek.terra.minestom.item.MinestomItemHandle; import com.dfsek.terra.minestom.world.MinestomChunkGeneratorWrapper; import com.dfsek.terra.minestom.world.MinestomWorldHandle; -import com.dfsek.terra.minestom.world.TerraMinestomWorldBuilder; +import com.dfsek.terra.minestom.api.TerraMinestomWorldBuilder; import net.kyori.adventure.key.Key; import net.kyori.adventure.util.RGBLike; @@ -37,6 +37,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.util.ArrayList; import java.util.List; @@ -45,11 +46,13 @@ public final class TerraMinestomPlatform extends AbstractPlatform { private final WorldHandle worldHandle; private final ItemHandle itemHandle; private final TypeLoader biomeTypeLoader; + private final ArrayList platformAddons = new ArrayList<>(List.of(new MinestomAddon(this))); - public TerraMinestomPlatform(WorldHandle worldHandle, ItemHandle itemHandle, TypeLoader biomeTypeLoader) { + public TerraMinestomPlatform(WorldHandle worldHandle, ItemHandle itemHandle, TypeLoader biomeTypeLoader, BaseAddon... extraAddons) { this.worldHandle = worldHandle; this.itemHandle = itemHandle; this.biomeTypeLoader = biomeTypeLoader; + this.platformAddons.addAll(List.of(extraAddons)); load(); getEventManager().callEvent(new PlatformInitializationEvent()); } @@ -115,6 +118,11 @@ public final class TerraMinestomPlatform extends AbstractPlatform { return file; } + @Override + protected Iterable platformAddon() { + return platformAddons; + } + public TerraMinestomWorldBuilder worldBuilder(Instance instance) { return new TerraMinestomWorldBuilder(this, instance); } @@ -122,9 +130,4 @@ public final class TerraMinestomPlatform extends AbstractPlatform { public TerraMinestomWorldBuilder worldBuilder() { return new TerraMinestomWorldBuilder(this, MinecraftServer.getInstanceManager().createInstanceContainer()); } - - @Override - protected Iterable platformAddon() { - return List.of(new MinestomAddon(this)); - } } \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/BiomeFactory.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/BiomeFactory.java new file mode 100644 index 000000000..ee59f29d5 --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/BiomeFactory.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.minestom.api; + +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.minestom.biome.UserDefinedBiome; + + +/** + * BiomeFactory serves as a contract for creating custom user-defined biomes in Terra. + * Implementations of this interface are responsible for defining the logic to convert + * configured biomes and source biome data into instances of UserDefinedBiome. + */ +public interface BiomeFactory { + UserDefinedBiome create(ConfigPack pack, Biome source); +} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java similarity index 85% rename from platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java rename to platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java index 1983bdee9..a3f3354d3 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java @@ -1,18 +1,15 @@ -package com.dfsek.terra.minestom.world; +package com.dfsek.terra.minestom.api; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.minestom.TerraMinestomPlatform; -import com.dfsek.terra.minestom.api.BlockEntityFactory; -import com.dfsek.terra.minestom.api.EntityFactory; -import com.dfsek.terra.minestom.biome.BiomeFactory; -import com.dfsek.terra.minestom.biome.MinestomCustomBiomeFactory; +import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomeFactory; import com.dfsek.terra.minestom.block.DefaultBlockEntityFactory; import com.dfsek.terra.minestom.entity.DefaultEntityFactory; -import net.minestom.server.MinecraftServer; +import com.dfsek.terra.minestom.world.TerraMinestomWorld; import net.minestom.server.instance.Instance; import java.util.Random; @@ -26,7 +23,7 @@ public class TerraMinestomWorldBuilder { private long seed = new Random().nextLong(); private EntityFactory entityFactory = new DefaultEntityFactory(); private BlockEntityFactory blockEntityFactory = new DefaultBlockEntityFactory(); - private BiomeFactory biomeFactory = new MinestomCustomBiomeFactory(); + private BiomeFactory biomeFactory = new MinestomUserDefinedBiomeFactory(); public TerraMinestomWorldBuilder(TerraMinestomPlatform platform, Instance instance) { this.platform = platform; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/BiomeFactory.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/BiomeFactory.java deleted file mode 100644 index 832305e3a..000000000 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/BiomeFactory.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.dfsek.terra.minestom.biome; - -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.world.biome.Biome; - - -public interface BiomeFactory { - NativeBiome create(ConfigPack pack, Biome source); -} diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomeFactory.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomeFactory.java similarity index 92% rename from platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomeFactory.java rename to platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomeFactory.java index f33c5c9a2..51d1fc07e 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomeFactory.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomeFactory.java @@ -1,7 +1,7 @@ package com.dfsek.terra.minestom.biome; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.registry.key.RegistryKey; +import com.dfsek.terra.minestom.api.BiomeFactory; import com.dfsek.terra.minestom.config.VanillaBiomeProperties; import net.kyori.adventure.key.Key; @@ -17,12 +17,12 @@ import java.util.Locale; import java.util.Objects; -public class MinestomCustomBiomeFactory implements BiomeFactory { +public class MinestomUserDefinedBiomeFactory implements BiomeFactory { private final DynamicRegistry biomeRegistry = MinecraftServer.getBiomeRegistry(); private final @NotNull Biome plainsBiome = Objects.requireNonNull(biomeRegistry.get(Key.key("minecraft:plains"))); @Override - public NativeBiome create(ConfigPack pack, com.dfsek.terra.api.world.biome.Biome source) { + public UserDefinedBiome create(ConfigPack pack, com.dfsek.terra.api.world.biome.Biome source) { VanillaBiomeProperties properties = source.getContext().get(VanillaBiomeProperties.class); DynamicRegistry.Key parentKey = ((MinestomBiome) source.getPlatformBiome()).getHandle(); Biome parent = mergeNullable(biomeRegistry.get(parentKey), plainsBiome); @@ -58,7 +58,7 @@ public class MinestomCustomBiomeFactory implements BiomeFactory { .build(); DynamicRegistry.Key registryKey = MinecraftServer.getBiomeRegistry().register(key, target); - return new NativeBiome(key, registryKey, source.getID(), target); + return new UserDefinedBiome(key, registryKey, source.getID(), target); } private static T mergeNullable(T first, T second) { diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomePool.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java similarity index 51% rename from platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomePool.java rename to platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java index db0e48be6..9eff185b3 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomCustomBiomePool.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java @@ -6,22 +6,22 @@ import com.dfsek.terra.api.world.biome.Biome; import java.util.HashMap; -public class MinestomCustomBiomePool { - private final HashMap biomes = new HashMap<>(); - private final MinestomCustomBiomeFactory factory; +public class MinestomUserDefinedBiomePool { + private final HashMap biomes = new HashMap<>(); + private final MinestomUserDefinedBiomeFactory factory; private final ConfigPack configPack; - public MinestomCustomBiomePool(ConfigPack configPack, MinestomCustomBiomeFactory factory) { + public MinestomUserDefinedBiomePool(ConfigPack configPack, MinestomUserDefinedBiomeFactory factory) { this.configPack = configPack; this.factory = factory; } - public NativeBiome getBiome(Biome source) { - NativeBiome nativeBiome = biomes.get(source.getID()); - if(nativeBiome != null) return nativeBiome; - nativeBiome = factory.create(configPack, source); - biomes.put(source.getID(), nativeBiome); - return nativeBiome; + public UserDefinedBiome getBiome(Biome source) { + UserDefinedBiome userDefinedBiome = biomes.get(source.getID()); + if(userDefinedBiome != null) return userDefinedBiome; + userDefinedBiome = factory.create(configPack, source); + biomes.put(source.getID(), userDefinedBiome); + return userDefinedBiome; } public void preloadBiomes(Iterable biomesToLoad) { diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/NativeBiome.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/UserDefinedBiome.java similarity index 63% rename from platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/NativeBiome.java rename to platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/UserDefinedBiome.java index e01728b7d..059a0cc93 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/NativeBiome.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/UserDefinedBiome.java @@ -5,5 +5,5 @@ import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.world.biome.Biome; -public record NativeBiome(Key key, DynamicRegistry.Key registry, String id, Biome biome) { +public record UserDefinedBiome(Key key, DynamicRegistry.Key registry, String id, Biome biome) { } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java index c3eba7b34..0e2109b99 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java @@ -7,9 +7,8 @@ import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; import com.dfsek.terra.api.world.chunk.generation.util.GeneratorWrapper; -import com.dfsek.terra.minestom.biome.MinestomCustomBiomeFactory; -import com.dfsek.terra.minestom.biome.MinestomCustomBiomePool; -import com.dfsek.terra.minestom.biome.NativeBiome; +import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool; +import com.dfsek.terra.minestom.biome.UserDefinedBiome; import com.dfsek.terra.minestom.chunk.CachedChunk; import com.dfsek.terra.minestom.chunk.GeneratedChunkCache; @@ -28,14 +27,14 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe private final TerraMinestomWorld world; private final BiomeProvider biomeProvider; private ConfigPack pack; - private final MinestomCustomBiomePool biomePool; + private final MinestomUserDefinedBiomePool biomePool; public MinestomChunkGeneratorWrapper( Platform platform, ChunkGenerator generator, TerraMinestomWorld world, ConfigPack pack, - MinestomCustomBiomePool biomePool + MinestomUserDefinedBiomePool biomePool ) { this.generator = generator; this.world = world; @@ -61,8 +60,8 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe UnitModifier modifier = unit.modifier(); chunk.writeRelative(modifier); - NativeBiome nativeBiome = biomePool.getBiome(biomeProvider.getBiome(blockX, 100, blockZ, world.getSeed())); - modifier.fillBiome(nativeBiome.registry()); + UserDefinedBiome userDefinedBiome = biomePool.getBiome(biomeProvider.getBiome(blockX, 100, blockZ, world.getSeed())); + modifier.fillBiome(userDefinedBiome.registry()); unit.fork(setter -> { MinestomProtoWorld protoWorld = new MinestomProtoWorld(cache, x, z, world, setter); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java index cbc80522a..88691e362 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java @@ -16,9 +16,9 @@ import com.dfsek.terra.api.world.info.WorldProperties; import com.dfsek.terra.minestom.TerraMinestomPlatform; import com.dfsek.terra.minestom.api.BlockEntityFactory; import com.dfsek.terra.minestom.api.EntityFactory; -import com.dfsek.terra.minestom.biome.BiomeFactory; -import com.dfsek.terra.minestom.biome.MinestomCustomBiomeFactory; -import com.dfsek.terra.minestom.biome.MinestomCustomBiomePool; +import com.dfsek.terra.minestom.api.BiomeFactory; +import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomeFactory; +import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool; import com.dfsek.terra.minestom.block.MinestomBlockState; import com.dfsek.terra.minestom.entity.MinestomEntity; @@ -62,7 +62,7 @@ public final class TerraMinestomWorld implements ServerWorld, WorldProperties { pack.getGeneratorProvider().newInstance(pack), this, pack, - new MinestomCustomBiomePool(pack, new MinestomCustomBiomeFactory()) + new MinestomUserDefinedBiomePool(pack, new MinestomUserDefinedBiomeFactory()) ); this.entityFactory = entityFactory; From 28d93d158eb459884b04f2036cbb59f4eefdaf6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Tue, 3 Jun 2025 22:52:26 -0600 Subject: [PATCH 073/116] fix up --- .../mod/mixin/generalize/ServerWorldMixin.java | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java index cd096cb82..b22b3c49f 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java @@ -45,18 +45,4 @@ public abstract class ServerWorldMixin extends World { } return instance.matchesKey(tRegistryKey); } - - @Redirect(method = "", - at = @At(value = "INVOKE", - target = "Lnet/minecraft/village/raid/RaidManager;nameFor(Lnet/minecraft/registry/entry/RegistryEntry;)" + - "Ljava/lang/String;")) - public String nameForProxy(RegistryEntry dimensionTypeEntry) { - RegistryEntry entry = dimensionTypeEntry; - if(this.getRegistryKey() == World.END) { - Registry dimensionTypeRegistry = getRegistryManager().getOrThrow(RegistryKeys.DIMENSION_TYPE); - entry = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.THE_NETHER)); - - } - return RaidManager.nameFor(entry); - } } From b12fe77f32c5012842edd84217d74f332976688b Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Wed, 4 Jun 2025 21:25:35 +0200 Subject: [PATCH 074/116] feat: add fine-grained biome control to Minestom world builder Introduced a `doFineGrainedBiomes` flag to allow fine-grained biome control per chunk. This helps mitigate client disconnection issues caused by a Minestom biome encoding bug, with a plan to deprecate once the bug is resolved. Adjusted relevant classes and the example implementation to support this feature. --- .../terra/minestom/TerraMinestomExample.java | 5 +++- .../api/TerraMinestomWorldBuilder.java | 16 ++++++++++- .../biome/MinestomUserDefinedBiomePool.java | 5 ++-- .../world/MinestomChunkGeneratorWrapper.java | 27 ++++++++++++++++--- .../minestom/world/TerraMinestomWorld.java | 6 +++-- 5 files changed, 49 insertions(+), 10 deletions(-) diff --git a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java index afa1f0627..2da66d2c9 100644 --- a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java +++ b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java @@ -6,6 +6,7 @@ import net.minestom.server.command.builder.Command; import net.minestom.server.coordinate.Pos; import net.minestom.server.entity.GameMode; import net.minestom.server.event.player.AsyncPlayerConfigurationEvent; +import net.minestom.server.event.player.PlayerDisconnectEvent; import net.minestom.server.event.player.PlayerSpawnEvent; import net.minestom.server.instance.Instance; import net.minestom.server.instance.LightingChunk; @@ -23,6 +24,7 @@ public class TerraMinestomExample { private final MinecraftServer server = MinecraftServer.init(); private Instance instance; private TerraMinestomWorld world; + private final TerraMinestomPlatform platform = new TerraMinestomPlatform(); public void createNewInstance() { instance = MinecraftServer.getInstanceManager().createInstanceContainer(); @@ -30,9 +32,9 @@ public class TerraMinestomExample { } public void attachTerra() { - TerraMinestomPlatform platform = new TerraMinestomPlatform(); world = platform.worldBuilder(instance) .defaultPack() + .doFineGrainedBiomes(false) .attach(); } @@ -122,6 +124,7 @@ public class TerraMinestomExample { private void regenerate() { instance.sendMessage(Component.text("Regenerating world")); Instance oldInstance = instance; + platform.reload(); createNewInstance(); attachTerra(); preloadWorldAndMeasure(); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java index a3f3354d3..c572458b7 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java @@ -24,6 +24,7 @@ public class TerraMinestomWorldBuilder { private EntityFactory entityFactory = new DefaultEntityFactory(); private BlockEntityFactory blockEntityFactory = new DefaultBlockEntityFactory(); private BiomeFactory biomeFactory = new MinestomUserDefinedBiomeFactory(); + private boolean doFineGrainedBiomes = true; public TerraMinestomWorldBuilder(TerraMinestomPlatform platform, Instance instance) { this.platform = platform; @@ -70,7 +71,20 @@ public class TerraMinestomWorldBuilder { return this; } + /** + * Due to a current bug with the minestom biome encoder, sometimes, the client gets kicked when decoding a chunk + * packet with more than one biome. Until this is fixed in minestom, one can disable fine-grained biomes to prevent + * this issue. + * + * @deprecated Scheduled for removal once Minestom rolls out a fix + */ + @Deprecated + public TerraMinestomWorldBuilder doFineGrainedBiomes(boolean doFineGrainedBiomes) { + this.doFineGrainedBiomes = doFineGrainedBiomes; + return this; + } + public TerraMinestomWorld attach() { - return new TerraMinestomWorld(platform, instance, pack, seed, entityFactory, blockEntityFactory, biomeFactory); + return new TerraMinestomWorld(platform, instance, pack, seed, entityFactory, blockEntityFactory, biomeFactory, doFineGrainedBiomes); } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java index 9eff185b3..138d98887 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java @@ -2,16 +2,17 @@ package com.dfsek.terra.minestom.biome; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.minestom.api.BiomeFactory; import java.util.HashMap; public class MinestomUserDefinedBiomePool { private final HashMap biomes = new HashMap<>(); - private final MinestomUserDefinedBiomeFactory factory; + private final BiomeFactory factory; private final ConfigPack configPack; - public MinestomUserDefinedBiomePool(ConfigPack configPack, MinestomUserDefinedBiomeFactory factory) { + public MinestomUserDefinedBiomePool(ConfigPack configPack, BiomeFactory factory) { this.configPack = configPack; this.factory = factory; } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java index 0e2109b99..6c72a3326 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java @@ -26,6 +26,7 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe private ChunkGenerator generator; private final TerraMinestomWorld world; private final BiomeProvider biomeProvider; + private final boolean doFineGrainedBiomes; private ConfigPack pack; private final MinestomUserDefinedBiomePool biomePool; @@ -34,13 +35,15 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe ChunkGenerator generator, TerraMinestomWorld world, ConfigPack pack, - MinestomUserDefinedBiomePool biomePool + MinestomUserDefinedBiomePool biomePool, + boolean doFineGrainedBiomes ) { this.generator = generator; this.world = world; this.pack = pack; this.biomePool = biomePool; - biomeProvider = pack.getBiomeProvider().caching(platform); + this.biomeProvider = pack.getBiomeProvider(); + this.doFineGrainedBiomes = doFineGrainedBiomes; this.cache = new GeneratedChunkCache(world.getDimensionType(), generator, world, biomeProvider); preloadBiomes(); } @@ -56,12 +59,28 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe int z = start.chunkZ(); int blockX = start.blockX(); int blockZ = start.blockZ(); + int minY = world.getMinHeight(); + int maxY = world.getMaxHeight(); CachedChunk chunk = cache.at(x, z); UnitModifier modifier = unit.modifier(); chunk.writeRelative(modifier); - UserDefinedBiome userDefinedBiome = biomePool.getBiome(biomeProvider.getBiome(blockX, 100, blockZ, world.getSeed())); - modifier.fillBiome(userDefinedBiome.registry()); + if(doFineGrainedBiomes) { + for(int y = minY; y < maxY; y++) { + for(int absoluteX = blockX; absoluteX < blockX + 16; absoluteX++) { + for(int absoluteZ = blockZ; absoluteZ < blockZ + 16; absoluteZ++) { + UserDefinedBiome userDefinedBiome = biomePool.getBiome( + biomeProvider.getBiome(absoluteX, y, absoluteZ, world.getSeed()) + ); + modifier.setBiome(absoluteX, y, absoluteZ, userDefinedBiome.registry()); + } + } + } + } else { + // TODO: remove with feature flag once minestom fixed biome encoding + UserDefinedBiome userDefinedBiome = biomePool.getBiome(biomeProvider.getBiome(blockX, 100, blockZ, world.getSeed())); + modifier.fillBiome(userDefinedBiome.registry()); + } unit.fork(setter -> { MinestomProtoWorld protoWorld = new MinestomProtoWorld(cache, x, z, world, setter); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java index 88691e362..df38b5dd2 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java @@ -48,7 +48,8 @@ public final class TerraMinestomWorld implements ServerWorld, WorldProperties { long seed, EntityFactory entityFactory, BlockEntityFactory blockEntityFactory, - BiomeFactory factory + BiomeFactory factory, + boolean doFineGrainedBiomes ) { this.instance = instance; this.pack = pack; @@ -62,7 +63,8 @@ public final class TerraMinestomWorld implements ServerWorld, WorldProperties { pack.getGeneratorProvider().newInstance(pack), this, pack, - new MinestomUserDefinedBiomePool(pack, new MinestomUserDefinedBiomeFactory()) + new MinestomUserDefinedBiomePool(pack, factory), + doFineGrainedBiomes ); this.entityFactory = entityFactory; From c08e973e3e24c24e2078691f4e9eb032d5d8bd15 Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Wed, 4 Jun 2025 21:34:04 +0200 Subject: [PATCH 075/116] feat: provide default MinestomBlockEntity implementation Introduce the `MinestomBlockEntity` class to represent block entities and hook into the block system. Update `DefaultBlockEntityFactory` to create `MinestomBlockEntity` instances and adjust `TerraMinestomWorldBuilder` initialization for factory injection. These changes improve extensibility and block entity management. --- .../minestom/api/BlockEntityFactory.java | 4 +- .../api/TerraMinestomWorldBuilder.java | 3 +- .../block/DefaultBlockEntityFactory.java | 9 ++- .../minestom/block/MinestomBlockEntity.java | 59 +++++++++++++++++++ 4 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockEntity.java diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/BlockEntityFactory.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/BlockEntityFactory.java index c5fd33ca1..6ea403ddf 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/BlockEntityFactory.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/BlockEntityFactory.java @@ -8,8 +8,8 @@ import org.jetbrains.annotations.Nullable; /** * Represents a factory interface for creating instances of BlockEntity - * at a specified BlockVec position. This is not implemented directly because - * Minestom does not define a way to build block entities out of the box. + * at a specified BlockVec position. For more fine-grained control, users + * may supply their own version of this interface. */ public interface BlockEntityFactory { @Nullable BlockEntity createBlockEntity(BlockVec position); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java index c572458b7..30a04a172 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java @@ -22,13 +22,14 @@ public class TerraMinestomWorldBuilder { private ConfigPack pack; private long seed = new Random().nextLong(); private EntityFactory entityFactory = new DefaultEntityFactory(); - private BlockEntityFactory blockEntityFactory = new DefaultBlockEntityFactory(); + private BlockEntityFactory blockEntityFactory; private BiomeFactory biomeFactory = new MinestomUserDefinedBiomeFactory(); private boolean doFineGrainedBiomes = true; public TerraMinestomWorldBuilder(TerraMinestomPlatform platform, Instance instance) { this.platform = platform; this.instance = instance; + this.blockEntityFactory = new DefaultBlockEntityFactory(instance); } public TerraMinestomWorldBuilder pack(ConfigPack pack) { diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/DefaultBlockEntityFactory.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/DefaultBlockEntityFactory.java index dbcbf2833..28712a4c0 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/DefaultBlockEntityFactory.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/DefaultBlockEntityFactory.java @@ -4,11 +4,18 @@ import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.minestom.api.BlockEntityFactory; import net.minestom.server.coordinate.BlockVec; +import net.minestom.server.instance.Instance; public class DefaultBlockEntityFactory implements BlockEntityFactory { + private final Instance instance; + + public DefaultBlockEntityFactory(Instance instance) { + this.instance = instance; + } + @Override public BlockEntity createBlockEntity(BlockVec position) { - return null; + return new MinestomBlockEntity(instance, position); } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockEntity.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockEntity.java new file mode 100644 index 000000000..e96caf0d9 --- /dev/null +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockEntity.java @@ -0,0 +1,59 @@ +package com.dfsek.terra.minestom.block; + +import com.dfsek.seismic.type.vector.Vector3; + +import com.dfsek.terra.api.block.entity.BlockEntity; + +import com.dfsek.terra.api.block.state.BlockState; + +import net.minestom.server.coordinate.BlockVec; +import net.minestom.server.instance.Instance; +import net.minestom.server.instance.block.Block; + + +public class MinestomBlockEntity implements BlockEntity { + private final Instance instance; + private final BlockVec position; + private final Vector3 positionVec; + + public MinestomBlockEntity(Instance instance, BlockVec position) { + this.instance = instance; + this.position = position; + this.positionVec = Vector3.of(position.blockX(), position.blockY(), position.blockZ()); + } + + @Override + public boolean update(boolean applyPhysics) { + return false; + } + + @Override + public Vector3 getPosition() { + return positionVec; + } + + @Override + public int getX() { + return position.blockX(); + } + + @Override + public int getY() { + return position.blockY(); + } + + @Override + public int getZ() { + return position.blockZ(); + } + + @Override + public BlockState getBlockState() { + return new MinestomBlockState(instance.getBlock(position)); + } + + @Override + public Block getHandle() { + return instance.getBlock(position); + } +} From a061660e460af86c921df5a848329f43c15bd613 Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Wed, 4 Jun 2025 21:52:46 +0200 Subject: [PATCH 076/116] chore: Update Minestom version to 1_21_5-4d91778331 This commit updates the Minestom dependency to the latest tagged version. Ensures compatibility with new features and fixes in the updated Minestom release. --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 2ad818b61..10309b05b 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -87,6 +87,6 @@ object Versions { } object Minestom { - const val minestom = "187931e50b" + const val minestom = "1_21_5-4d91778331" } } From e79ea4ab825e56777023915e6a0101700af041ea Mon Sep 17 00:00:00 2001 From: kyuri <94974428+ckyuri@users.noreply.github.com> Date: Thu, 5 Jun 2025 06:38:42 +0100 Subject: [PATCH 077/116] Minestom Latest - Update (#499) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Bukkit Build Fix * remove comments * remove papermc repo from gradle settings * add back gradle shasum * fix formatting, update gradle hash * Minestom Updated to latest version as of now 4/12/2025 Updated method names to new documentation and changed minestom versioning. - Paper Build version was changed as I had issues building at all with the snapshot version. So it was changed to a generic version but everything still builds fine. * Bug Fix - Entity Type was parsing a value that was incorrect and causing issues to load the world. EntityType.fromId(Integer.parseInt(id)); to delegate = EntityType.fromKey(id); * Reverted changes to comply with build version requirements and avoiding pulling functionality out of a common existing function --------- Co-authored-by: Peter Pan Co-authored-by: Zoë Gidiere --- buildSrc/src/main/kotlin/Versions.kt | 2 +- .../terra/minestom/MinestomPlatform.java | 10 +++++--- .../minestom/biome/MinestomBiomeLoader.java | 9 +++---- .../minestom/block/MinestomBlockState.java | 8 +++--- .../minestom/entity/MinestomEntityType.java | 6 ++--- .../minestom/item/MinestomEnchantment.java | 25 +++++++++++++++---- .../terra/minestom/item/MinestomMaterial.java | 5 ++-- 7 files changed, 40 insertions(+), 25 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 2ad818b61..90dfbd92d 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -87,6 +87,6 @@ object Versions { } object Minestom { - const val minestom = "187931e50b" + const val minestom = "fb895cb899" } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java index 78ac5ff18..c63378a28 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java @@ -14,12 +14,16 @@ import com.dfsek.terra.minestom.entity.MinestomEntityType; import com.dfsek.terra.minestom.item.MinestomItemHandle; import com.dfsek.terra.minestom.world.MinestomChunkGeneratorWrapper; import com.dfsek.terra.minestom.world.MinestomWorldHandle; +import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; + import net.minestom.server.MinecraftServer; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.io.IOException; + public final class MinestomPlatform extends AbstractPlatform { @@ -51,7 +55,7 @@ public final class MinestomPlatform extends AbstractPlatform { if(world.generator() instanceof MinestomChunkGeneratorWrapper wrapper) { getConfigRegistry().get(wrapper.getPack().getRegistryKey()).ifPresent(pack -> { wrapper.setPack(pack); - LOGGER.info("Replaced pack in chunk generator for instance {}", world.getUniqueId()); + LOGGER.info("Replaced pack in chunk generator for instance {}", world.getUuid()); }); } }); @@ -59,6 +63,7 @@ public final class MinestomPlatform extends AbstractPlatform { return succeed; } + @Override public @NotNull WorldHandle getWorldHandle() { return worldHandle; @@ -83,11 +88,10 @@ public final class MinestomPlatform extends AbstractPlatform { return file; } - public static MinestomPlatform getInstance() { if(INSTANCE == null) { INSTANCE = new MinestomPlatform(); } return INSTANCE; } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java index 9cb3eb960..edaf49a50 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java @@ -7,15 +7,14 @@ import com.dfsek.tectonic.api.loader.type.TypeLoader; import com.dfsek.terra.api.world.biome.PlatformBiome; +import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.registry.DynamicRegistry; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.world.biome.Biome; import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; - public class MinestomBiomeLoader implements TypeLoader { private final DynamicRegistry biomeRegistry = MinecraftServer.getBiomeRegistry(); @@ -23,9 +22,9 @@ public class MinestomBiomeLoader implements TypeLoader { public PlatformBiome load(@NotNull AnnotatedType annotatedType, @NotNull Object o, @NotNull ConfigLoader configLoader, DepthTracker depthTracker) throws LoadException { String id = (String) o; - NamespaceID biomeID = NamespaceID.from(id); - Biome biome = biomeRegistry.get(biomeID); + Key key = Key.key(id); + Biome biome = biomeRegistry.get(key); if(biome == null) throw new LoadException("Biome %s does not exist in registry".formatted(id), depthTracker); return new MinestomBiome(biome); } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java index 01bad55fa..d26470dae 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java @@ -24,14 +24,14 @@ public class MinestomBlockState implements BlockState { public MinestomBlockState(String data) { if(!data.contains("[")) { - block = Block.fromNamespaceId(data); + block = Block.fromKey(data); return; } String[] split = data.split("\\["); String namespaceId = split[0]; String properties = split[1].substring(0, split[1].length() - 1); - Block block = Block.fromNamespaceId(namespaceId); + Block block = Block.fromKey(namespaceId); HashMap propertiesMap = new HashMap<>(); for(String property : properties.split(",")) { @@ -70,7 +70,7 @@ public class MinestomBlockState implements BlockState { @Override public String getAsString(boolean properties) { - String name = block.namespace().asString(); + String name = block.key().asString(); if(!properties || block.properties().isEmpty()) { return name; } @@ -95,4 +95,4 @@ public class MinestomBlockState implements BlockState { public int hashCode() { return Objects.hashCode(block.id()); } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java index 60fbac5d9..825fde33e 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java @@ -1,18 +1,16 @@ package com.dfsek.terra.minestom.entity; - import net.minestom.server.entity.EntityType; - public class MinestomEntityType implements com.dfsek.terra.api.entity.EntityType { private final EntityType delegate; public MinestomEntityType(String id) { - delegate = EntityType.fromNamespaceId(id); + delegate = EntityType.fromKey(id); } @Override public EntityType getHandle() { return delegate; } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java index 0ef720b31..69411571a 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java @@ -3,9 +3,10 @@ package com.dfsek.terra.minestom.item; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Enchantment; +import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.item.Material; -import net.minestom.server.utils.NamespaceID; +import net.minestom.server.registry.DynamicRegistry; import java.util.Objects; @@ -16,11 +17,13 @@ public class MinestomEnchantment implements Enchantment { public MinestomEnchantment(net.minestom.server.item.enchant.Enchantment delegate) { this.delegate = delegate; - id = Objects.requireNonNull(delegate.registry()).raw(); + DynamicRegistry registry = MinecraftServer.getEnchantmentRegistry(); + this.id = Objects.requireNonNull(registry.getKey(delegate)).toString(); } public MinestomEnchantment(String id) { - this.delegate = MinecraftServer.getEnchantmentRegistry().get(NamespaceID.from(id)); + Key key = Key.key(id); + this.delegate = MinecraftServer.getEnchantmentRegistry().get(key); this.id = id; } @@ -31,7 +34,19 @@ public class MinestomEnchantment implements Enchantment { @Override public boolean conflictsWith(Enchantment other) { - return delegate.exclusiveSet().contains(NamespaceID.from(((MinestomEnchantment) other).id)); + var otherDelegate = ((MinestomEnchantment) other).delegate; + delegate.exclusiveSet(); + + // Get the registry key for the other enchantment to use in contains + try { + DynamicRegistry registry = MinecraftServer.getEnchantmentRegistry(); + DynamicRegistry.Key otherKey = registry.getKey(otherDelegate); + return delegate.exclusiveSet().contains(otherKey); + } catch (Exception e) { + // If the key approach fails, fall back to a more basic implementation + String otherId = ((MinestomEnchantment) other).id; + return otherId.equals(this.id); + } } @Override @@ -48,4 +63,4 @@ public class MinestomEnchantment implements Enchantment { public net.minestom.server.item.enchant.Enchantment getHandle() { return delegate; } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java index 6bd0a1908..77aa8777d 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java @@ -5,7 +5,6 @@ import com.dfsek.terra.api.inventory.ItemStack; import net.minestom.server.item.Material; - public class MinestomMaterial implements Item { private final Material delegate; @@ -14,7 +13,7 @@ public class MinestomMaterial implements Item { } public MinestomMaterial(String id) { - this.delegate = Material.fromNamespaceId(id); + this.delegate = Material.fromId(Integer.parseInt(id)); } @Override @@ -31,4 +30,4 @@ public class MinestomMaterial implements Item { public Material getHandle() { return delegate; } -} +} \ No newline at end of file From 94d135c66c8c3a9dc0ab629eb688480dcae02cf6 Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Thu, 5 Jun 2025 10:35:22 +0200 Subject: [PATCH 078/116] Refactor MinestomBiomeLoader to use DynamicRegistry directly Simplified biome loading by removing dependency on MinecraftServer and using DynamicRegistry.Key directly. This improves code maintainability and aligns with updated API usage. --- .../dfsek/terra/minestom/biome/MinestomBiomeLoader.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java index 5115397d9..ccd1176c5 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java @@ -8,25 +8,19 @@ import com.dfsek.tectonic.api.loader.type.TypeLoader; import com.dfsek.terra.api.world.biome.PlatformBiome; import net.kyori.adventure.key.Key; -import net.minestom.server.MinecraftServer; import net.minestom.server.registry.DynamicRegistry; -import net.minestom.server.world.biome.Biome; import org.intellij.lang.annotations.Subst; import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; public class MinestomBiomeLoader implements TypeLoader { - private final DynamicRegistry biomeRegistry = MinecraftServer.getBiomeRegistry(); - @Override public PlatformBiome load(@NotNull AnnotatedType annotatedType, @NotNull Object o, @NotNull ConfigLoader configLoader, DepthTracker depthTracker) throws LoadException { @Subst("name:value") String id = (String) o; Key key = Key.key(id); - Biome biome = biomeRegistry.get(key); - if(biome == null) throw new LoadException("Biome %s does not exist in registry".formatted(id), depthTracker); - return new MinestomBiome(biome); + return new MinestomBiome(DynamicRegistry.Key.of(key)); } } \ No newline at end of file From 7f324bd72b5856152ba2f905406aea2d23e3878a Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Sat, 7 Jun 2025 16:28:50 +0200 Subject: [PATCH 079/116] fix: remove unused player configuration phase in biome preload The loop triggering the player configuration phase was removed as it is unnecessary and unrelated to biome preloading. This streamlines the function and avoids redundant operations during biome initialization. --- .../terra/minestom/world/MinestomChunkGeneratorWrapper.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java index 6c72a3326..418f5de0c 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java @@ -104,9 +104,6 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe private void preloadBiomes() { this.biomePool.preloadBiomes(world.getBiomeProvider().getBiomes()); - for(Player player : MinecraftServer.getConnectionManager().getOnlinePlayers()) { - player.startConfigurationPhase(); - } } public void displayStats() { From 3fe79338dba8476625bef0fbcc225236b233c5bc Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Tue, 17 Jun 2025 00:10:08 +0200 Subject: [PATCH 080/116] refactor: replace `DynamicRegistry.Key` with `RegistryKey` across Minestom components Updated all references from `DynamicRegistry.Key` to `RegistryKey` to align with the updated Minestom API. Adjusted relevant classes, methods, and object interactions to ensure compatibility and maintain consistency. Updated `Versions.kt` to the latest Minestom version. --- buildSrc/src/main/kotlin/Versions.kt | 2 +- .../com/dfsek/terra/minestom/biome/MinestomBiome.java | 8 ++++---- .../dfsek/terra/minestom/biome/MinestomBiomeLoader.java | 4 ++-- .../minestom/biome/MinestomUserDefinedBiomeFactory.java | 5 +++-- .../com/dfsek/terra/minestom/biome/UserDefinedBiome.java | 4 ++-- .../dfsek/terra/minestom/item/MinestomEnchantment.java | 3 ++- .../com/dfsek/terra/minestom/item/MinestomItemStack.java | 4 ++-- 7 files changed, 16 insertions(+), 14 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 5503b42b3..6407640a6 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -87,6 +87,6 @@ object Versions { } object Minestom { - const val minestom = "1_21_5-4d91778331" + const val minestom = "1_21_5-1e8b8693ac" } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiome.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiome.java index a050978d6..54be04180 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiome.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiome.java @@ -2,17 +2,17 @@ package com.dfsek.terra.minestom.biome; import com.dfsek.terra.api.world.biome.PlatformBiome; -import net.minestom.server.registry.DynamicRegistry; +import net.minestom.server.registry.RegistryKey; import net.minestom.server.world.biome.Biome; public class MinestomBiome implements PlatformBiome { - private final DynamicRegistry.Key biome; + private final RegistryKey biome; - public MinestomBiome(DynamicRegistry.Key biome) { this.biome = biome; } + public MinestomBiome(RegistryKey biome) { this.biome = biome; } @Override - public DynamicRegistry.Key getHandle() { + public RegistryKey getHandle() { return biome; } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java index ccd1176c5..e82e3ec10 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java @@ -8,7 +8,7 @@ import com.dfsek.tectonic.api.loader.type.TypeLoader; import com.dfsek.terra.api.world.biome.PlatformBiome; import net.kyori.adventure.key.Key; -import net.minestom.server.registry.DynamicRegistry; +import net.minestom.server.registry.RegistryKey; import org.intellij.lang.annotations.Subst; import org.jetbrains.annotations.NotNull; @@ -21,6 +21,6 @@ public class MinestomBiomeLoader implements TypeLoader { @Subst("name:value") String id = (String) o; Key key = Key.key(id); - return new MinestomBiome(DynamicRegistry.Key.of(key)); + return new MinestomBiome(RegistryKey.unsafeOf(key)); } } \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomeFactory.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomeFactory.java index 51d1fc07e..2ef3d9044 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomeFactory.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomeFactory.java @@ -8,6 +8,7 @@ import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.color.Color; import net.minestom.server.registry.DynamicRegistry; +import net.minestom.server.registry.RegistryKey; import net.minestom.server.world.biome.Biome; import net.minestom.server.world.biome.BiomeEffects; import org.intellij.lang.annotations.Subst; @@ -24,7 +25,7 @@ public class MinestomUserDefinedBiomeFactory implements BiomeFactory { @Override public UserDefinedBiome create(ConfigPack pack, com.dfsek.terra.api.world.biome.Biome source) { VanillaBiomeProperties properties = source.getContext().get(VanillaBiomeProperties.class); - DynamicRegistry.Key parentKey = ((MinestomBiome) source.getPlatformBiome()).getHandle(); + RegistryKey parentKey = ((MinestomBiome) source.getPlatformBiome()).getHandle(); Biome parent = mergeNullable(biomeRegistry.get(parentKey), plainsBiome); BiomeEffects parentEffects = parent.effects(); Key key = Key.key("terra", createBiomeID(pack, source.getID())); @@ -57,7 +58,7 @@ public class MinestomUserDefinedBiomeFactory implements BiomeFactory { .effects(effectsBuilder.build()) .build(); - DynamicRegistry.Key registryKey = MinecraftServer.getBiomeRegistry().register(key, target); + RegistryKey registryKey = MinecraftServer.getBiomeRegistry().register(key, target); return new UserDefinedBiome(key, registryKey, source.getID(), target); } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/UserDefinedBiome.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/UserDefinedBiome.java index 059a0cc93..86515d810 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/UserDefinedBiome.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/UserDefinedBiome.java @@ -1,9 +1,9 @@ package com.dfsek.terra.minestom.biome; import net.kyori.adventure.key.Key; -import net.minestom.server.registry.DynamicRegistry; +import net.minestom.server.registry.RegistryKey; import net.minestom.server.world.biome.Biome; -public record UserDefinedBiome(Key key, DynamicRegistry.Key registry, String id, Biome biome) { +public record UserDefinedBiome(Key key, RegistryKey registry, String id, Biome biome) { } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java index 69411571a..75c0006f9 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java @@ -7,6 +7,7 @@ import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.item.Material; import net.minestom.server.registry.DynamicRegistry; +import net.minestom.server.registry.RegistryKey; import java.util.Objects; @@ -40,7 +41,7 @@ public class MinestomEnchantment implements Enchantment { // Get the registry key for the other enchantment to use in contains try { DynamicRegistry registry = MinecraftServer.getEnchantmentRegistry(); - DynamicRegistry.Key otherKey = registry.getKey(otherDelegate); + RegistryKey otherKey = registry.getKey(otherDelegate); return delegate.exclusiveSet().contains(otherKey); } catch (Exception e) { // If the key approach fails, fall back to a more basic implementation diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemStack.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemStack.java index 214785016..1d90e4896 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemStack.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemStack.java @@ -10,7 +10,7 @@ import net.minestom.server.component.DataComponents; import net.minestom.server.item.ItemStack; import net.minestom.server.item.component.EnchantmentList; import net.minestom.server.registry.DynamicRegistry; -import net.minestom.server.registry.DynamicRegistry.Key; +import net.minestom.server.registry.RegistryKey; import org.jetbrains.annotations.NotNull; import java.util.HashMap; @@ -59,7 +59,7 @@ public class MinestomItemStack implements com.dfsek.terra.api.inventory.ItemStac @Override public void setItemMeta(ItemMeta meta) { - HashMap, Integer> enchantments = new HashMap<>(); + HashMap, Integer> enchantments = new HashMap<>(); DynamicRegistry registry = MinecraftServer.getEnchantmentRegistry(); meta.getEnchantments().forEach((key, value) -> { MinestomEnchantment enchantment = (MinestomEnchantment) key; From 3f77b4a975d3c9947301f5a6a1f5929e990ac700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Wed, 18 Jun 2025 11:37:50 -0600 Subject: [PATCH 081/116] Minor cleanup --- .../src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java | 1 - .../java/com/dfsek/terra/lifecycle/util/LifecycleUtil.java | 4 ---- 2 files changed, 5 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java index 7d7ec6030..1bccff4e5 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java @@ -60,7 +60,6 @@ public class DimensionUtil { private static MonsterSettings getMonsterSettings(DimensionType defaultDimension, MonsterSettingsConfig monsterSettingsConfig) { MonsterSettings defaultMonsterSettings = defaultDimension.monsterSettings(); - return new MonsterSettings( monsterSettingsConfig.getPiglinSafe() == null ? defaultMonsterSettings.piglinSafe() : monsterSettingsConfig.getPiglinSafe(), monsterSettingsConfig.getHasRaids() == null ? defaultMonsterSettings.hasRaids() : monsterSettingsConfig.getHasRaids(), diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/LifecycleUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/LifecycleUtil.java index f9427dfa5..3d896c4ab 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/LifecycleUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/LifecycleUtil.java @@ -12,10 +12,6 @@ import com.dfsek.terra.mod.CommonPlatform; public final class LifecycleUtil { - private LifecycleUtil() { - - } - public static void initialize(MutableRegistry biomeMutableRegistry, MutableRegistry worldPresetMutableRegistry) { CommonPlatform.get().getEventManager().callEvent(new PlatformInitializationEvent()); LifecycleBiomeUtil.registerBiomes(biomeMutableRegistry); From 46e603d681c4a859cdf5733d12122124647b75a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Wed, 18 Jun 2025 11:43:35 -0600 Subject: [PATCH 082/116] Reformat --- .../src/main/kotlin/DistributionConfig.kt | 3 +- .../extrusions/SamplerExtrusionTemplate.java | 2 +- .../extrusions/ReplaceExtrusion.java | 5 +- .../extrusion/extrusions/SetExtrusion.java | 5 +- .../biome/image/ImageBiomeProviderAddon.java | 4 +- .../DefinedBiomeColorMappingTemplate.java | 4 +- .../biome/pipeline/PipelineBiomeProvider.java | 5 +- .../addons/biome/pipeline/api/Pipeline.java | 4 +- .../config/BiomePipelineTemplate.java | 2 +- .../config/source/SamplerSourceTemplate.java | 2 +- .../pipeline/config/stage/StageTemplate.java | 2 +- .../biome/pipeline/pipeline/PipelineImpl.java | 3 +- .../biome/pipeline/source/SamplerSource.java | 3 +- .../stage/expander/FractalExpander.java | 3 +- .../stage/mutators/BorderListStage.java | 6 +- .../pipeline/stage/mutators/BorderStage.java | 5 +- .../stage/mutators/ReplaceListStage.java | 3 +- .../pipeline/stage/mutators/ReplaceStage.java | 3 +- .../pipeline/stage/mutators/SmoothStage.java | 3 +- .../noise/BiomeNoiseConfigTemplate.java | 2 +- .../config/noise/BiomeNoiseProperties.java | 1 + .../math/SlantCalculationMethod.java | 3 +- .../math/interpolation/Interpolator.java | 1 + .../config/SamplerDistributorTemplate.java | 2 +- .../distributors/PaddedGridDistributor.java | 7 +- .../distributors/SamplerDistributor.java | 1 + .../addons/feature/ConfiguredFeature.java | 1 + .../terra/addons/feature/FeatureTemplate.java | 2 +- .../terra/addons/flora/FloraTemplate.java | 2 +- .../addons/flora/flora/gen/TerraFlora.java | 8 +- .../config/Sampler3DLocatorTemplate.java | 2 +- .../config/SamplerLocatorTemplate.java | 2 +- .../pattern/BlockSetMatchPatternTemplate.java | 2 +- .../locator/locators/Sampler3DLocator.java | 1 + .../locator/locators/SamplerLocator.java | 3 +- .../dfsek/terra/addons/noise/NoiseAddon.java | 30 ++++--- .../config/CubicSplinePointTemplate.java | 2 +- .../config/DimensionApplicableSampler.java | 2 +- .../noise/config/sampler/CacheSampler.java | 14 ++- .../templates/BinaryArithmeticTemplate.java | 2 +- .../templates/CacheSamplerTemplate.java | 6 +- .../templates/DerivativeSamplerTemplate.java | 3 +- .../config/templates/DomainWarpTemplate.java | 2 +- .../config/templates/FunctionTemplate.java | 4 +- .../config/templates/KernelTemplate.java | 2 +- .../LinearHeightmapSamplerTemplate.java | 2 +- .../config/templates/SamplerTemplate.java | 2 +- .../templates/TranslateSamplerTemplate.java | 2 +- .../noise/CellularNoiseTemplate.java | 3 +- .../noise/ConstantNoiseTemplate.java | 2 +- .../noise/DistanceSamplerTemplate.java | 1 - .../noise/ExpressionFunctionTemplate.java | 5 +- .../templates/noise/GaborNoiseTemplate.java | 3 +- .../noise/PseudoErosionTemplate.java | 2 +- .../templates/noise/SimpleNoiseTemplate.java | 4 +- .../noise/fractal/FractalTemplate.java | 2 +- .../noise/fractal/PingPongTemplate.java | 2 +- .../normalizer/ClampNormalizerTemplate.java | 2 +- .../CubicSplineNormalizerTemplate.java | 4 +- .../ExpressionNormalizerTemplate.java | 7 +- .../LinearMapNormalizerTemplate.java | 2 +- .../normalizer/LinearNormalizerTemplate.java | 2 +- .../normalizer/NormalNormalizerTemplate.java | 2 +- .../normalizer/NormalizerTemplate.java | 2 +- .../PosterizationNormalizerTemplate.java | 2 +- .../normalizer/ScaleNormalizerTemplate.java | 2 +- .../addons/noise/paralithic/FunctionUtil.java | 11 +-- .../config-number-predicate/build.gradle.kts | 2 - .../numberpredicate/NumberPredicateAddon.java | 3 +- .../terra/addons/ore/ores/VanillaOre.java | 10 +-- .../addons/ore/ores/VanillaScatteredOre.java | 6 +- .../terra/addons/palette/PaletteTemplate.java | 2 +- .../addons/palette/palette/PaletteImpl.java | 8 +- .../palette/palette/PaletteLayerHolder.java | 2 +- .../palette/palette/PaletteLayerLoader.java | 2 +- .../addons/structure/StructureTemplate.java | 2 +- .../addons/structure/TerraStructure.java | 2 +- .../feature/FeatureGenerationStage.java | 8 +- .../feature/config/FeatureStageTemplate.java | 2 +- .../terra/addons/image/ImageLibraryAddon.java | 2 +- .../addons/image/config/image/ImageCache.java | 3 +- .../image/config/image/ImageTemplate.java | 4 +- .../sampler/ChannelSamplerTemplate.java | 2 +- .../DistanceTransformSamplerTemplate.java | 2 +- .../image/operator/DistanceTransform.java | 3 +- .../addons/image/sampler/ChannelSampler.java | 3 +- .../shortcut/block/SingletonStructure.java | 6 +- .../structure/mutator/MutatedStructure.java | 6 +- .../structure-sponge-loader/build.gradle.kts | 2 - .../addons/sponge/SpongeSchematicAddon.java | 2 +- .../terra/addons/sponge/SpongeStructure.java | 8 +- .../build.gradle.kts | 2 - .../terrascript/script/StructureScript.java | 2 +- .../script/TerraImplementationArguments.java | 8 +- .../script/functions/BiomeFunction.java | 5 +- .../script/functions/BlockFunction.java | 4 +- .../script/functions/CheckBlockFunction.java | 7 +- .../script/functions/EntityFunction.java | 5 +- .../script/functions/GetMarkFunction.java | 5 +- .../script/functions/LootFunction.java | 6 +- .../script/functions/PullFunction.java | 5 +- .../script/functions/SetMarkFunction.java | 5 +- .../script/functions/StateFunction.java | 4 +- .../script/functions/StructureFunction.java | 2 +- .../src/test/resources/test.tesf | 88 +++++++++---------- .../terrascript/check/CheckFunction.java | 5 +- .../sampler/ConstantSamplerFunction.java | 3 +- .../terrascript/sampler/SamplerFunction.java | 3 +- .../dfsek/terra/api/config/ConfigPack.java | 3 +- .../com/dfsek/terra/api/entity/Entity.java | 3 +- .../world/generation/LootPopulateEvent.java | 2 +- .../dfsek/terra/api/handle/ItemHandle.java | 4 +- .../dfsek/terra/api/structure/LootTable.java | 6 +- .../dfsek/terra/api/structure/Structure.java | 5 +- .../terra/api/structure/StructureSpawn.java | 3 +- .../configured/ConfiguredStructure.java | 2 +- .../api/structure/feature/BinaryColumn.java | 2 +- .../api/util/cache/SeededVector2Key.java | 60 ++++++------- .../api/util/cache/SeededVector3Key.java | 1 - .../collection/ProbabilityCollection.java | 10 ++- .../dfsek/terra/api/world/BufferedWorld.java | 3 +- .../dfsek/terra/api/world/ReadableWorld.java | 5 +- .../dfsek/terra/api/world/ServerWorld.java | 1 + .../dfsek/terra/api/world/WritableWorld.java | 5 +- .../world/biome/generation/BiomeProvider.java | 7 +- .../generation/CachingBiomeProvider.java | 11 +-- .../chunk/generation/ChunkGenerator.java | 4 +- .../com/dfsek/terra/AbstractPlatform.java | 87 +++++++++--------- .../dfsek/terra/config/GenericLoaders.java | 2 +- .../ExpressionParserOptionsTemplate.java | 2 +- .../loaders/ProbabilityCollectionLoader.java | 2 +- .../src/test/java/profiler/ProfilerTest.java | 4 +- .../src/test/java/registry/RegistryTest.java | 7 +- .../com/dfsek/terra/allay/AllayPlatform.java | 1 + .../com/dfsek/terra/allay/JeBlockState.java | 34 +++---- .../java/com/dfsek/terra/allay/Mapping.java | 12 ++- .../dfsek/terra/allay/TerraAllayPlugin.java | 3 +- .../terra/allay/delegate/AllayBiome.java | 1 + .../terra/allay/delegate/AllayBlockState.java | 3 +- .../terra/allay/delegate/AllayBlockType.java | 1 + .../terra/allay/delegate/AllayChunk.java | 6 +- .../allay/delegate/AllayEnchantment.java | 5 +- .../terra/allay/delegate/AllayFakeEntity.java | 4 +- .../terra/allay/delegate/AllayItemMeta.java | 3 +- .../terra/allay/delegate/AllayItemStack.java | 5 +- .../terra/allay/delegate/AllayProtoChunk.java | 4 +- .../terra/allay/delegate/AllayProtoWorld.java | 6 +- .../allay/delegate/AllayServerWorld.java | 3 +- .../generator/AllayGeneratorWrapper.java | 27 +++--- .../terra/allay/handle/AllayItemHandle.java | 1 + .../terra/allay/handle/AllayWorldHandle.java | 2 + .../com/dfsek/terra/bukkit/BukkitEntity.java | 2 +- .../com/dfsek/terra/bukkit/BukkitPlayer.java | 2 +- .../com/dfsek/terra/bukkit/PlatformImpl.java | 6 +- .../hooks/MultiverseGeneratorPluginHook.java | 7 +- .../bukkit/listeners/CommonListener.java | 6 +- .../dfsek/terra/bukkit/nms/Initializer.java | 5 +- .../terra/bukkit/world/BukkitAdapter.java | 2 +- .../world/block/BukkitBlockTypeAndItem.java | 4 +- .../world/block/state/BukkitBlockEntity.java | 2 +- .../bukkit/nms/v1_21_6/AwfulBukkitHacks.java | 39 ++++---- .../bukkit/nms/v1_21_6/NMSBiomeInjector.java | 6 +- .../bukkit/nms/v1_21_6/NMSInitializer.java | 3 +- .../terra/bukkit/nms/v1_21_6/Reflection.java | 5 ++ .../config/BiomeAdditionsSoundTemplate.java | 4 +- .../config/BiomeMoodSoundTemplate.java | 11 +-- .../config/BiomeParticleConfigTemplate.java | 6 +- .../v1_21_6/config/EntityTypeTemplate.java | 2 +- .../v1_21_6/config/MusicSoundTemplate.java | 8 +- .../v1_21_6/config/SoundEventTemplate.java | 4 +- .../nms/v1_21_6/config/SpawnCostConfig.java | 12 +-- .../nms/v1_21_6/config/SpawnEntryConfig.java | 8 +- .../v1_21_6/config/SpawnSettingsTemplate.java | 11 +-- .../nms/v1_21_6/config/SpawnTypeConfig.java | 3 +- .../config/VanillaBiomeProperties.java | 5 +- .../v1_21_6/config/VillagerTypeTemplate.java | 2 +- .../java/com/dfsek/terra/cli/TerraCLI.java | 31 ++++--- .../com/dfsek/terra/cli/world/CLIWorld.java | 6 +- .../com/dfsek/terra/forge/util/BiomeUtil.java | 3 +- .../terra/minestom/TerraMinestomExample.java | 24 ++--- .../dfsek/terra/minestom/MinestomAdapter.java | 1 - .../terra/minestom/TerraMinestomPlatform.java | 55 ++++++------ .../terra/minestom/addon/MinestomAddon.java | 8 +- .../minestom/api/BlockEntityFactory.java | 4 +- .../api/TerraMinestomWorldBuilder.java | 18 ++-- .../terra/minestom/biome/MinestomBiome.java | 4 +- .../minestom/biome/MinestomBiomeLoader.java | 6 +- .../MinestomUserDefinedBiomeFactory.java | 30 +++---- .../biome/MinestomUserDefinedBiomePool.java | 4 +- .../block/DefaultBlockEntityFactory.java | 6 +- .../minestom/block/MinestomBlockEntity.java | 8 +- .../minestom/block/MinestomBlockState.java | 8 +- .../minestom/block/MinestomBlockType.java | 4 +- .../terra/minestom/chunk/CachedChunk.java | 15 +--- .../minestom/chunk/GeneratedChunkCache.java | 11 ++- .../minestom/chunk/TerraMinestomChunk.java | 13 ++- .../terra/minestom/config/KeyLoader.java | 2 +- .../terra/minestom/config/RGBLikeLoader.java | 4 +- .../config/VanillaBiomeProperties.java | 11 ++- .../minestom/entity/DefaultEntityFactory.java | 4 +- .../entity/DeferredMinestomEntity.java | 6 +- .../terra/minestom/entity/MinestomEntity.java | 25 +++--- .../minestom/entity/MinestomEntityType.java | 1 + .../minestom/item/MinestomEnchantment.java | 8 +- .../minestom/item/MinestomItemHandle.java | 8 +- .../terra/minestom/item/MinestomItemMeta.java | 6 +- .../minestom/item/MinestomItemStack.java | 9 +- .../terra/minestom/item/MinestomMaterial.java | 3 +- .../world/MinestomChunkGeneratorWrapper.java | 19 ++-- .../minestom/world/MinestomProtoWorld.java | 13 +-- .../minestom/world/MinestomWorldHandle.java | 7 +- .../minestom/world/TerraMinestomWorld.java | 40 ++++----- .../java/com/dfsek/terra/mod/ModPlatform.java | 2 +- .../terra/mod/config/SpawnEntryConfig.java | 1 + .../mod/config/VillagerTypeTemplate.java | 1 - .../mod/generation/TerraBiomeSource.java | 1 - .../mixin/generalize/ServerWorldMixin.java | 16 ++-- .../entity/MobSpawnerBlockEntityMixin.java | 3 +- .../terra/chunk/WorldChunkMixin.java | 1 - .../terra/entity/EntityMixin.java | 2 +- .../lifecycle/DataPackContentsMixin.java | 14 +-- .../com/dfsek/terra/mod/util/BiomeUtil.java | 4 +- .../dfsek/terra/mod/util/DimensionUtil.java | 4 +- .../terra/mod/util/MinecraftAdapter.java | 2 +- .../dfsek/terra/mod/util/MinecraftUtil.java | 6 +- .../com/dfsek/terra/mod/util/PresetUtil.java | 20 +++-- .../terra/lifecycle/LifecyclePlatform.java | 11 ++- .../lifecycle/mixin/NoiseConfigMixin.java | 4 +- .../mixin/lifecycle/MinecraftServerMixin.java | 3 - .../mixin/lifecycle/RegistryLoaderMixin.java | 46 ++++------ .../mixin/lifecycle/SaveLoadingMixin.java | 8 +- .../lifecycle/util/LifecycleBiomeUtil.java | 12 +-- .../resources/terra.lifecycle.mixins.json | 38 ++++---- 233 files changed, 824 insertions(+), 818 deletions(-) diff --git a/buildSrc/src/main/kotlin/DistributionConfig.kt b/buildSrc/src/main/kotlin/DistributionConfig.kt index 65d295aba..27479b809 100644 --- a/buildSrc/src/main/kotlin/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/DistributionConfig.kt @@ -52,7 +52,8 @@ fun Project.configureDistribution() { val defaultPackUrl = URL("https://github.com/PolyhedralDev/TerraOverworldConfig/releases/download/" + Versions.Terra.overworldConfig + "/default.zip") downloadPack(defaultPackUrl, project) - } catch (_:Exception) {} + } catch (_: Exception) { + } } } diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/extrusions/SamplerExtrusionTemplate.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/extrusions/SamplerExtrusionTemplate.java index cb1a8ee14..866596c2e 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/extrusions/SamplerExtrusionTemplate.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/extrusions/SamplerExtrusionTemplate.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.biome.extrusion.config.extrusions; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.range.Range; diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/ReplaceExtrusion.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/ReplaceExtrusion.java index b67e033c8..0e062977d 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/ReplaceExtrusion.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/ReplaceExtrusion.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.biome.extrusion.extrusions; +import com.dfsek.seismic.type.sampler.Sampler; + import java.util.Collection; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -7,9 +9,8 @@ import java.util.stream.Collectors; import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome; import com.dfsek.terra.addons.biome.query.api.BiomeQueries; -import com.dfsek.seismic.type.sampler.Sampler; -import com.dfsek.terra.api.util.range.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.util.range.Range; import com.dfsek.terra.api.world.biome.Biome; diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SetExtrusion.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SetExtrusion.java index ee0a63191..53aeda03f 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SetExtrusion.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/extrusions/SetExtrusion.java @@ -1,14 +1,15 @@ package com.dfsek.terra.addons.biome.extrusion.extrusions; +import com.dfsek.seismic.type.sampler.Sampler; + import java.util.Collection; import java.util.function.Predicate; import java.util.stream.Collectors; import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome; -import com.dfsek.seismic.type.sampler.Sampler; -import com.dfsek.terra.api.util.range.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.util.range.Range; import com.dfsek.terra.api.world.biome.Biome; 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 f87628ec8..ba0e05ebf 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 @@ -9,6 +9,8 @@ package com.dfsek.terra.addons.biome.image; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import java.util.function.Supplier; + import com.dfsek.terra.addons.biome.image.config.ImageProviderTemplate; import com.dfsek.terra.addons.biome.image.config.converter.ClosestBiomeColorConverterTemplate; import com.dfsek.terra.addons.biome.image.config.converter.ExactBiomeColorConverterTemplate; @@ -27,8 +29,6 @@ import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import java.util.function.Supplier; - public class ImageBiomeProviderAddon implements AddonInitializer { public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/mapping/DefinedBiomeColorMappingTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/mapping/DefinedBiomeColorMappingTemplate.java index 17864a01f..c76cfb6d0 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/mapping/DefinedBiomeColorMappingTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/mapping/DefinedBiomeColorMappingTemplate.java @@ -3,13 +3,13 @@ package com.dfsek.terra.addons.biome.image.config.converter.mapping; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import java.util.Map; - import com.dfsek.terra.addons.image.config.ColorLoader.ColorString; import com.dfsek.terra.addons.image.converter.mapping.ColorMapping; import com.dfsek.terra.addons.image.util.MapUtil; import com.dfsek.terra.api.world.biome.Biome; +import java.util.Map; + public class DefinedBiomeColorMappingTemplate implements ObjectTemplate> { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java index c045c905a..d2e6f762b 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java @@ -7,8 +7,7 @@ package com.dfsek.terra.addons.biome.pipeline; -import com.dfsek.terra.api.util.cache.SeededVector2Key; - +import com.dfsek.seismic.type.sampler.Sampler; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; @@ -22,9 +21,9 @@ import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; import com.dfsek.terra.addons.biome.pipeline.api.Pipeline; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.registry.key.StringIdentifiable; import com.dfsek.terra.api.util.Column; +import com.dfsek.terra.api.util.cache.SeededVector2Key; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java index 2eae6cd6a..35474f495 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Pipeline.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.api; -import com.dfsek.terra.api.util.cache.SeededVector2Key; - import java.util.List; +import com.dfsek.terra.api.util.cache.SeededVector2Key; + public interface Pipeline { BiomeChunk generateChunk(SeededVector2Key worldCoordinates); 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 575487d8c..e78c3137a 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 @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.biome.pipeline.config; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; @@ -19,7 +20,6 @@ import com.dfsek.terra.addons.biome.pipeline.api.Source; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.pipeline.PipelineImpl; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java index 348e24d86..ac3ad01dc 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/source/SamplerSourceTemplate.java @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.biome.pipeline.config.source; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; @@ -14,7 +15,6 @@ import com.dfsek.terra.addons.biome.pipeline.api.Source; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.source.SamplerSource; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; 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 973f9bb5f..13906de82 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 @@ -7,13 +7,13 @@ package com.dfsek.terra.addons.biome.pipeline.config.stage; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; public abstract class StageTemplate implements ObjectTemplate { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java index 6b0977ca9..025dd4c9e 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/PipelineImpl.java @@ -1,7 +1,5 @@ package com.dfsek.terra.addons.biome.pipeline.pipeline; -import com.dfsek.terra.api.util.cache.SeededVector2Key; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,6 +10,7 @@ import com.dfsek.terra.addons.biome.pipeline.api.Expander; import com.dfsek.terra.addons.biome.pipeline.api.Pipeline; import com.dfsek.terra.addons.biome.pipeline.api.Source; import com.dfsek.terra.addons.biome.pipeline.api.Stage; +import com.dfsek.terra.api.util.cache.SeededVector2Key; public class PipelineImpl implements Pipeline { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java index ca2982fd7..31e5a0243 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/SamplerSource.java @@ -7,9 +7,10 @@ package com.dfsek.terra.addons.biome.pipeline.source; +import com.dfsek.seismic.type.sampler.Sampler; + import com.dfsek.terra.addons.biome.pipeline.api.Source; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java index a60f09f87..8c2a73182 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/expander/FractalExpander.java @@ -1,9 +1,10 @@ package com.dfsek.terra.addons.biome.pipeline.stage.expander; +import com.dfsek.seismic.type.sampler.Sampler; + import com.dfsek.terra.addons.biome.pipeline.api.Expander; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.seismic.type.sampler.Sampler; public class FractalExpander implements Expander { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java index 9beaa7ec7..dd4e64e5d 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderListStage.java @@ -7,6 +7,9 @@ package com.dfsek.terra.addons.biome.pipeline.stage.mutators; +import com.dfsek.seismic.type.sampler.Sampler; +import com.dfsek.seismic.type.vector.Vector2Int; + import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -14,12 +17,9 @@ import java.util.Map; import java.util.Set; import java.util.function.Predicate; -import com.dfsek.seismic.type.vector.Vector2Int; - import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java index f41918f3e..339fdb366 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/BorderStage.java @@ -7,6 +7,9 @@ package com.dfsek.terra.addons.biome.pipeline.stage.mutators; +import com.dfsek.seismic.type.sampler.Sampler; +import com.dfsek.seismic.type.vector.Vector2Int; + import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -16,9 +19,7 @@ import java.util.function.Predicate; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.seismic.type.vector.Vector2Int; public class BorderStage implements Stage { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java index 1c634c950..ca4f0db09 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceListStage.java @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.biome.pipeline.stage.mutators; +import com.dfsek.seismic.type.sampler.Sampler; + import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -15,7 +17,6 @@ import java.util.stream.Stream; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java index 1f4e4222a..2c7ab9bf9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/ReplaceStage.java @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.biome.pipeline.stage.mutators; +import com.dfsek.seismic.type.sampler.Sampler; + import java.util.HashSet; import java.util.Set; import java.util.stream.Stream; @@ -14,7 +16,6 @@ import java.util.stream.Stream; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java index 6c111ecdb..cbb757ba7 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stage/mutators/SmoothStage.java @@ -7,12 +7,13 @@ package com.dfsek.terra.addons.biome.pipeline.stage.mutators; +import com.dfsek.seismic.type.sampler.Sampler; + import java.util.Objects; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.pipeline.BiomeChunkImpl; -import com.dfsek.seismic.type.sampler.Sampler; public class SmoothStage implements Stage { diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseConfigTemplate.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseConfigTemplate.java index ce55469b0..609a912b7 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseConfigTemplate.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseConfigTemplate.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.chunkgenerator.config.noise; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; public class BiomeNoiseConfigTemplate implements ObjectTemplate { diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseProperties.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseProperties.java index e58978be0..d4c8aa00e 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseProperties.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/noise/BiomeNoiseProperties.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addons.chunkgenerator.config.noise; import com.dfsek.seismic.type.sampler.Sampler; + import com.dfsek.terra.api.properties.Properties; diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SlantCalculationMethod.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SlantCalculationMethod.java index d7cf84133..de524764f 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SlantCalculationMethod.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/SlantCalculationMethod.java @@ -1,8 +1,9 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math; -import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D; import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D; + public enum SlantCalculationMethod { DotProduct { 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 13f421389..62fc2d836 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 @@ -33,6 +33,7 @@ public class Interpolator { } //TODO this system is not very good, replace it wholesale + /** * 2D Bilinear interpolation between 4 points on a unit square. * diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/SamplerDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/SamplerDistributorTemplate.java index be6fa7c6f..4ceb145ed 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/SamplerDistributorTemplate.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/SamplerDistributorTemplate.java @@ -7,13 +7,13 @@ package com.dfsek.terra.addons.feature.distributor.config; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.feature.distributor.distributors.SamplerDistributor; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.feature.Distributor; diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java index d7b0b6fb0..48d67b3da 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java @@ -1,12 +1,11 @@ package com.dfsek.terra.addons.feature.distributor.distributors; +import com.dfsek.seismic.algorithms.hashing.HashingFunctions; +import com.dfsek.seismic.math.integer.IntegerFunctions; + import java.util.random.RandomGenerator; import java.util.random.RandomGeneratorFactory; -import com.dfsek.seismic.algorithms.hashing.HashingFunctions; - -import com.dfsek.seismic.math.integer.IntegerFunctions; - import com.dfsek.terra.api.structure.feature.Distributor; diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/SamplerDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/SamplerDistributor.java index 51bea61b3..01ad25b29 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/SamplerDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/SamplerDistributor.java @@ -8,6 +8,7 @@ package com.dfsek.terra.addons.feature.distributor.distributors; import com.dfsek.seismic.type.sampler.Sampler; + import com.dfsek.terra.api.structure.feature.Distributor; 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 1cc985996..6ff703652 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,6 +8,7 @@ package com.dfsek.terra.addons.feature; import com.dfsek.seismic.type.sampler.Sampler; + import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.feature.Distributor; import com.dfsek.terra.api.structure.feature.Feature; 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 791c0fc46..68e125bda 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 @@ -7,12 +7,12 @@ package com.dfsek.terra.addons.feature; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Final; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.feature.Distributor; import com.dfsek.terra.api.structure.feature.Locator; 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 a5dbfa78a..6be89444e 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,6 +7,7 @@ package com.dfsek.terra.addons.flora; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Final; import com.dfsek.tectonic.api.config.template.annotations.Value; @@ -16,7 +17,6 @@ import java.util.List; import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.MaterialSet; 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 7e8e5ee3c..26c8fbd26 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 @@ -7,21 +7,21 @@ package com.dfsek.terra.addons.flora.flora.gen; +import com.dfsek.seismic.type.Rotation; +import com.dfsek.seismic.type.sampler.Sampler; +import com.dfsek.seismic.type.vector.Vector3Int; + import java.util.ArrayList; import java.util.EnumSet; import java.util.List; import java.util.random.RandomGenerator; import java.util.random.RandomGeneratorFactory; -import com.dfsek.seismic.type.Rotation; - import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.properties.enums.Direction; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Sampler3DLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Sampler3DLocatorTemplate.java index 0382985a9..1598c969a 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Sampler3DLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Sampler3DLocatorTemplate.java @@ -7,12 +7,12 @@ package com.dfsek.terra.addons.feature.locator.config; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.locators.Sampler3DLocator; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.feature.Locator; diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SamplerLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SamplerLocatorTemplate.java index f2915f234..1e4adc33a 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SamplerLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SamplerLocatorTemplate.java @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.feature.locator.config; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; @@ -14,7 +15,6 @@ import java.util.List; import com.dfsek.terra.addons.feature.locator.locators.SamplerLocator; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.feature.Locator; 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 1bca74dc8..08116ae0c 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 @@ -13,8 +13,8 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; 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.Range; import com.dfsek.terra.api.util.collection.MaterialSet; +import com.dfsek.terra.api.util.range.Range; public class BlockSetMatchPatternTemplate implements ObjectTemplate { diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Sampler3DLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Sampler3DLocator.java index b419853d4..baa4f9f81 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Sampler3DLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Sampler3DLocator.java @@ -8,6 +8,7 @@ package com.dfsek.terra.addons.feature.locator.locators; import com.dfsek.seismic.type.sampler.Sampler; + import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.world.chunk.generation.util.Column; diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SamplerLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SamplerLocator.java index 5423e25f4..5508c4e99 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SamplerLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SamplerLocator.java @@ -7,9 +7,10 @@ package com.dfsek.terra.addons.feature.locator.locators; +import com.dfsek.seismic.type.sampler.Sampler; + import java.util.List; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.world.chunk.generation.util.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 19da4e2af..313483acd 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 @@ -8,9 +8,26 @@ package com.dfsek.terra.addons.noise; import com.dfsek.paralithic.eval.parser.Parser.ParseOptions; +import com.dfsek.seismic.algorithms.sampler.arithmetic.AdditionSampler; +import com.dfsek.seismic.algorithms.sampler.arithmetic.DivisionSampler; +import com.dfsek.seismic.algorithms.sampler.arithmetic.MaxSampler; +import com.dfsek.seismic.algorithms.sampler.arithmetic.MinSampler; +import com.dfsek.seismic.algorithms.sampler.arithmetic.MultiplicationSampler; +import com.dfsek.seismic.algorithms.sampler.arithmetic.SubtractionSampler; import com.dfsek.seismic.algorithms.sampler.noise.CellularSampler; +import com.dfsek.seismic.algorithms.sampler.noise.random.GaussianNoiseSampler; +import com.dfsek.seismic.algorithms.sampler.noise.random.PositiveWhiteNoiseSampler; +import com.dfsek.seismic.algorithms.sampler.noise.random.WhiteNoiseSampler; +import com.dfsek.seismic.algorithms.sampler.noise.simplex.OpenSimplex2SSampler; +import com.dfsek.seismic.algorithms.sampler.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.seismic.algorithms.sampler.noise.simplex.PerlinSampler; +import com.dfsek.seismic.algorithms.sampler.noise.simplex.SimplexSampler; +import com.dfsek.seismic.algorithms.sampler.noise.value.ValueCubicSampler; +import com.dfsek.seismic.algorithms.sampler.noise.value.ValueSampler; import com.dfsek.seismic.type.CubicSpline; import com.dfsek.seismic.type.DistanceFunction; +import com.dfsek.seismic.type.sampler.DerivativeSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.LinkedHashMap; @@ -52,17 +69,9 @@ import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.seismic.type.sampler.DerivativeSampler; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.seismic.algorithms.sampler.noise.*; -import com.dfsek.seismic.algorithms.sampler.noise.simplex.*; -import com.dfsek.seismic.algorithms.sampler.noise.fractal.*; -import com.dfsek.seismic.algorithms.sampler.noise.random.*; -import com.dfsek.seismic.algorithms.sampler.noise.value.*; -import com.dfsek.seismic.algorithms.sampler.normalizer.*; -import com.dfsek.seismic.algorithms.sampler.arithmetic.*; + public class NoiseAddon implements AddonInitializer { public static final TypeKey>> NOISE_SAMPLER_TOKEN = new TypeKey<>() { @@ -147,7 +156,8 @@ public class NoiseAddon implements AddonInitializer { Map packSamplers = new LinkedHashMap<>(); Map packFunctions = new LinkedHashMap<>(); - noiseRegistry.register(addon.key("EXPRESSION"), () -> new ExpressionFunctionTemplate(packSamplers, packFunctions, expressionParseOptions)); + noiseRegistry.register(addon.key("EXPRESSION"), + () -> new ExpressionFunctionTemplate(packSamplers, packFunctions, expressionParseOptions)); noiseRegistry.register(addon.key("EXPRESSION_NORMALIZER"), () -> new ExpressionNormalizerTemplate(packSamplers, packFunctions, expressionParseOptions)); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/CubicSplinePointTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/CubicSplinePointTemplate.java index 0b609ff96..34c598f6b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/CubicSplinePointTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/CubicSplinePointTemplate.java @@ -4,9 +4,9 @@ import com.dfsek.seismic.type.CubicSpline.Point; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; - import com.dfsek.terra.api.config.meta.Meta; + public class CubicSplinePointTemplate implements ObjectTemplate { @Value("from") diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableSampler.java index 38b474b3f..6a3a1d39e 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableSampler.java @@ -7,11 +7,11 @@ package com.dfsek.terra.addons.noise.config; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; public class DimensionApplicableSampler implements ObjectTemplate { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/sampler/CacheSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/sampler/CacheSampler.java index 52c7a6ea3..fb2c4090b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/sampler/CacheSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/sampler/CacheSampler.java @@ -1,18 +1,16 @@ package com.dfsek.terra.addons.noise.config.sampler; import com.dfsek.seismic.type.sampler.Sampler; - -import com.dfsek.terra.api.util.cache.DoubleSeededVector2Key; -import com.dfsek.terra.api.util.cache.DoubleSeededVector3Key; -import com.dfsek.terra.api.util.generic.pair.Pair; - -import com.dfsek.terra.api.util.generic.pair.Pair.Mutable; - import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; import com.github.benmanes.caffeine.cache.Scheduler; import org.jetbrains.annotations.ApiStatus.Experimental; +import com.dfsek.terra.api.util.cache.DoubleSeededVector2Key; +import com.dfsek.terra.api.util.cache.DoubleSeededVector3Key; +import com.dfsek.terra.api.util.generic.pair.Pair; +import com.dfsek.terra.api.util.generic.pair.Pair.Mutable; + import static com.dfsek.terra.api.util.cache.CacheUtils.CACHE_EXECUTOR; @@ -25,7 +23,7 @@ public class CacheSampler implements Sampler { public CacheSampler(Sampler sampler, int dimensions) { this.sampler = sampler; - if (dimensions == 2) { + if(dimensions == 2) { this.cache2D = ThreadLocal.withInitial(() -> { LoadingCache cache = Caffeine .newBuilder() diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/BinaryArithmeticTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/BinaryArithmeticTemplate.java index a1ff9438d..c7fd71d01 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/BinaryArithmeticTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/BinaryArithmeticTemplate.java @@ -1,12 +1,12 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.seismic.algorithms.sampler.arithmetic.BinaryArithmeticSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.function.BiFunction; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; public class BinaryArithmeticTemplate extends SamplerTemplate { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/CacheSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/CacheSamplerTemplate.java index 9af1a6462..f94af9484 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/CacheSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/CacheSamplerTemplate.java @@ -1,14 +1,12 @@ package com.dfsek.terra.addons.noise.config.templates; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; - -import com.dfsek.seismic.type.sampler.Sampler; +import org.jetbrains.annotations.ApiStatus.Experimental; import com.dfsek.terra.addons.noise.config.sampler.CacheSampler; -import org.jetbrains.annotations.ApiStatus.Experimental; - @Experimental public class CacheSamplerTemplate extends SamplerTemplate { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DerivativeSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DerivativeSamplerTemplate.java index e322d59a3..c3367de8e 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DerivativeSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DerivativeSamplerTemplate.java @@ -1,11 +1,10 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.seismic.type.sampler.DerivativeSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.exception.ValidationException; -import com.dfsek.seismic.type.sampler.Sampler; - public class DerivativeSamplerTemplate extends SamplerTemplate { 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 f1d1ed93c..067a928a9 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 @@ -8,11 +8,11 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.seismic.algorithms.sampler.DomainWarpedSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) 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 12abfa99c..578f211a9 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 @@ -12,12 +12,12 @@ import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.api.config.meta.Meta; - import java.util.LinkedHashMap; import java.util.List; import java.util.Objects; +import com.dfsek.terra.api.config.meta.Meta; + @SuppressWarnings("unused") public class FunctionTemplate implements ObjectTemplate { 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 407313b66..380ec97d4 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 @@ -8,6 +8,7 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.seismic.algorithms.sampler.KernelSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.exception.ValidationException; @@ -15,7 +16,6 @@ import com.dfsek.tectonic.api.exception.ValidationException; import java.util.List; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/LinearHeightmapSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/LinearHeightmapSamplerTemplate.java index 744c3cb46..8bc0f057e 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/LinearHeightmapSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/LinearHeightmapSamplerTemplate.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.seismic.algorithms.sampler.LinearHeightmapSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings("FieldMayBeFinal") 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 07dd2f5be..db2600348 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 @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.noise.config.templates; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.ValidatedConfigTemplate; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; @@ -14,7 +15,6 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.tectonic.api.exception.ValidationException; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings("FieldMayBeFinal") diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/TranslateSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/TranslateSamplerTemplate.java index 1a73a21b2..6d4a448db 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/TranslateSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/TranslateSamplerTemplate.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.noise.config.templates; import com.dfsek.seismic.algorithms.sampler.TranslateSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; public class TranslateSamplerTemplate extends SamplerTemplate { 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 9c4aa142d..89ff13a94 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 @@ -10,12 +10,11 @@ package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.seismic.algorithms.sampler.noise.CellularSampler; import com.dfsek.seismic.algorithms.sampler.noise.simplex.OpenSimplex2Sampler; import com.dfsek.seismic.type.DistanceFunction; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; - import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings("FieldMayBeFinal") 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 49922b07d..de23bca7c 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 @@ -8,12 +8,12 @@ package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.seismic.algorithms.sampler.noise.ConstantSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings("FieldMayBeFinal") diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java index 997661313..4692dca9b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java @@ -6,7 +6,6 @@ import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; - import com.dfsek.terra.api.config.meta.Meta; 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 273511467..c20db2d54 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 @@ -10,6 +10,7 @@ package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.paralithic.eval.parser.Parser.ParseOptions; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.paralithic.sampler.noise.ExpressionNoiseFunction; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; @@ -21,7 +22,6 @@ import com.dfsek.terra.addons.noise.config.DimensionApplicableSampler; import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; import static com.dfsek.terra.addons.noise.paralithic.FunctionUtil.convertFunctionsAndSamplers; @@ -58,7 +58,8 @@ public class ExpressionFunctionTemplate extends SamplerTemplate(globalSamplers); mergedSamplers.putAll(samplers); try { - return new ExpressionNoiseFunction(convertFunctionsAndSamplers(mergedFunctions, mergedSamplers), expression, vars, parseOptions); + return new ExpressionNoiseFunction(convertFunctionsAndSamplers(mergedFunctions, mergedSamplers), expression, vars, + parseOptions); } catch(ParseException e) { throw new RuntimeException("Failed to parse expression.", e); } 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 2347f76b7..5b1b19699 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 @@ -8,12 +8,11 @@ package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.seismic.algorithms.sampler.noise.GaborSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; - import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings("FieldMayBeFinal") diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/PseudoErosionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/PseudoErosionTemplate.java index 6cbc4a6b6..f8f90fa40 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/PseudoErosionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/PseudoErosionTemplate.java @@ -2,11 +2,11 @@ package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.seismic.algorithms.sampler.noise.PseudoErosionSampler; import com.dfsek.seismic.algorithms.sampler.noise.simplex.OpenSimplex2Sampler; +import com.dfsek.seismic.type.sampler.DerivativeSampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.DerivativeSampler; public class PseudoErosionTemplate extends NoiseTemplate { 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 d93569aa8..8a6f4c52f 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 @@ -7,11 +7,11 @@ package com.dfsek.terra.addons.noise.config.templates.noise; -import java.util.function.Supplier; - import com.dfsek.seismic.algorithms.sampler.noise.NoiseFunction; import com.dfsek.seismic.type.sampler.Sampler; +import java.util.function.Supplier; + public class SimpleNoiseTemplate extends NoiseTemplate { private final Supplier samplerSupplier; 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 02587ebe4..9314cd42a 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 @@ -8,12 +8,12 @@ package com.dfsek.terra.addons.noise.config.templates.noise.fractal; import com.dfsek.seismic.algorithms.sampler.noise.fractal.FractalNoiseFunction; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; public abstract class FractalTemplate extends SamplerTemplate { 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 3913d0930..87e06cd91 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 @@ -8,11 +8,11 @@ package com.dfsek.terra.addons.noise.config.templates.noise.fractal; import com.dfsek.seismic.algorithms.sampler.noise.fractal.PingPongSampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) 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 91d764909..a6b0658d9 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 @@ -8,10 +8,10 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.seismic.algorithms.sampler.normalizer.ClampNormalizer; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/CubicSplineNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/CubicSplineNormalizerTemplate.java index 3ff448bc2..2174b0ee0 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/CubicSplineNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/CubicSplineNormalizerTemplate.java @@ -4,13 +4,13 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.seismic.algorithms.sampler.normalizer.CubicSplineNormalizer; import com.dfsek.seismic.type.CubicSpline; import com.dfsek.seismic.type.CubicSpline.Point; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.List; -import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; + public class CubicSplineNormalizerTemplate extends NormalizerTemplate { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ExpressionNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ExpressionNormalizerTemplate.java index a5f06fad8..f71ebd870 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ExpressionNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ExpressionNormalizerTemplate.java @@ -9,6 +9,8 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.paralithic.eval.parser.Parser.ParseOptions; import com.dfsek.paralithic.eval.tokenizer.ParseException; +import com.dfsek.paralithic.sampler.normalizer.ExpressionNormalizer; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; @@ -19,8 +21,6 @@ import java.util.Map; import com.dfsek.terra.addons.noise.config.DimensionApplicableSampler; import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; -import com.dfsek.paralithic.sampler.normalizer.ExpressionNormalizer; import static com.dfsek.terra.addons.noise.paralithic.FunctionUtil.convertFunctionsAndSamplers; @@ -62,7 +62,8 @@ public class ExpressionNormalizerTemplate extends NormalizerTemplate(globalSamplers); mergedSamplers.putAll(samplers); try { - return new ExpressionNormalizer(function, convertFunctionsAndSamplers(mergedFunctions, mergedSamplers), expression, vars, parseOptions); + return new ExpressionNormalizer(function, convertFunctionsAndSamplers(mergedFunctions, mergedSamplers), expression, vars, + parseOptions); } catch(ParseException e) { throw new RuntimeException("Failed to parse expression.", e); } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java index c335c914b..064efbcee 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java @@ -1,11 +1,11 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.seismic.algorithms.sampler.normalizer.LinearMapNormalizer; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; public class LinearMapNormalizerTemplate extends NormalizerTemplate { 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 b12e7f3ba..384180b64 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 @@ -8,10 +8,10 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.seismic.algorithms.sampler.normalizer.LinearNormalizer; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) 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 839d8993e..e3024d98b 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 @@ -8,11 +8,11 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.seismic.algorithms.sampler.normalizer.NormalNormalizer; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) 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 e3ffcab68..6bc1376b5 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 @@ -8,11 +8,11 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.seismic.algorithms.sampler.normalizer.Normalizer; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; public abstract class NormalizerTemplate extends SamplerTemplate { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/PosterizationNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/PosterizationNormalizerTemplate.java index 1be8b7c01..253229ff1 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/PosterizationNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/PosterizationNormalizerTemplate.java @@ -8,10 +8,10 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.seismic.algorithms.sampler.normalizer.PosterizationNormalizer; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ScaleNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ScaleNormalizerTemplate.java index 506190201..af851f44a 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ScaleNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ScaleNormalizerTemplate.java @@ -1,10 +1,10 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.seismic.algorithms.sampler.normalizer.ScaleNormalizer; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; public class ScaleNormalizerTemplate extends NormalizerTemplate { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/FunctionUtil.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/FunctionUtil.java index 4e6451193..f9754793e 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/FunctionUtil.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/FunctionUtil.java @@ -2,17 +2,14 @@ package com.dfsek.terra.addons.noise.paralithic; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.paralithic.functions.Function; +import com.dfsek.paralithic.functions.dynamic.noise.NoiseFunction2; +import com.dfsek.paralithic.functions.dynamic.noise.NoiseFunction3; +import com.dfsek.paralithic.functions.dynamic.noise.SaltedNoiseFunction2; +import com.dfsek.paralithic.functions.dynamic.noise.SaltedNoiseFunction3; import java.util.HashMap; import java.util.Map; -import com.dfsek.paralithic.functions.dynamic.noise.NoiseFunction2; - -import com.dfsek.paralithic.functions.dynamic.noise.NoiseFunction3; -import com.dfsek.paralithic.functions.dynamic.noise.SaltedNoiseFunction2; - -import com.dfsek.paralithic.functions.dynamic.noise.SaltedNoiseFunction3; - import com.dfsek.terra.addons.noise.config.DimensionApplicableSampler; import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; diff --git a/common/addons/config-number-predicate/build.gradle.kts b/common/addons/config-number-predicate/build.gradle.kts index b76b64160..3f69abb4a 100644 --- a/common/addons/config-number-predicate/build.gradle.kts +++ b/common/addons/config-number-predicate/build.gradle.kts @@ -1,5 +1,3 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar - version = version("1.0.0") dependencies { diff --git a/common/addons/config-number-predicate/src/main/java/com/dfsek/terra/addons/numberpredicate/NumberPredicateAddon.java b/common/addons/config-number-predicate/src/main/java/com/dfsek/terra/addons/numberpredicate/NumberPredicateAddon.java index fa8d84575..66594e7bd 100644 --- a/common/addons/config-number-predicate/src/main/java/com/dfsek/terra/addons/numberpredicate/NumberPredicateAddon.java +++ b/common/addons/config-number-predicate/src/main/java/com/dfsek/terra/addons/numberpredicate/NumberPredicateAddon.java @@ -30,7 +30,8 @@ public class NumberPredicateAddon implements AddonInitializer { plugin.getEventManager() .getHandler(FunctionalEventHandler.class) .register(addon, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().applyLoader(DoublePredicate.class, new DoublePredicateLoader(event.getPack().getExpressionParseOptions()))) + .then(event -> event.getPack() + .applyLoader(DoublePredicate.class, new DoublePredicateLoader(event.getPack().getExpressionParseOptions()))) .priority(50) .failThrough(); } 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 84ff59543..ebe909948 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 @@ -7,19 +7,19 @@ package com.dfsek.terra.addons.ore.ores; -import java.util.BitSet; -import java.util.Map; -import java.util.random.RandomGenerator; - import com.dfsek.seismic.math.numericanalysis.interpolation.InterpolationFunctions; import com.dfsek.seismic.math.trigonometry.TrigonometryFunctions; import com.dfsek.seismic.type.Rotation; +import com.dfsek.seismic.type.vector.Vector3Int; + +import java.util.BitSet; +import java.util.Map; +import java.util.random.RandomGenerator; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; import static com.dfsek.terra.addons.ore.utils.VanillaOreUtils.shouldPlace; diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaScatteredOre.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaScatteredOre.java index aad282294..708450a35 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaScatteredOre.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaScatteredOre.java @@ -1,14 +1,14 @@ package com.dfsek.terra.addons.ore.ores; +import com.dfsek.seismic.type.Rotation; +import com.dfsek.seismic.type.vector.Vector3Int; + import java.util.Map; import java.util.random.RandomGenerator; -import com.dfsek.seismic.type.Rotation; - 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.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; import static com.dfsek.terra.addons.ore.utils.VanillaOreUtils.shouldPlace; 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 5f0a03b0c..72cdc4d24 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 @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.palette; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Final; import com.dfsek.tectonic.api.config.template.annotations.Value; @@ -16,7 +17,6 @@ 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.seismic.type.sampler.Sampler; @SuppressWarnings({ "FieldMayBeFinal", "unused" }) 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 d70c14e92..6b5364ad5 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 @@ -7,14 +7,16 @@ package com.dfsek.terra.addons.palette.palette; +import com.dfsek.seismic.type.sampler.Sampler; + import java.util.ArrayList; import java.util.List; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.chunk.generation.util.Palette; + /** * 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. @@ -25,12 +27,12 @@ public class PaletteImpl implements Palette { public PaletteImpl(List layers, Sampler defaultSampler) { List layerArray = new ArrayList<>(); - for (PaletteLayerHolder holder : layers) { + for(PaletteLayerHolder holder : layers) { PaletteLayer layer; ProbabilityCollection materials = holder.getLayer(); Sampler sampler = holder.getSampler() == null ? defaultSampler : holder.getSampler(); layer = new PaletteLayer(materials, sampler); - for (int i = 0; i < holder.getSize(); i++) + for(int i = 0; i < holder.getSize(); i++) layerArray.add(layer); } 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 33fb7e012..02f4b01e4 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 @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.palette.palette; +import com.dfsek.seismic.type.sampler.Sampler; import org.jetbrains.annotations.NotNull; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; 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 a21885a92..be3a2f875 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 @@ -7,13 +7,13 @@ package com.dfsek.terra.addons.palette.palette; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.util.collection.ProbabilityCollection; 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 d9d0fa175..2e8680d5e 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 @@ -14,8 +14,8 @@ 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.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.util.range.Range; @SuppressWarnings({ "unused", "FieldMayBeFinal" }) 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 9b99f5b4a..741583cf4 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 @@ -10,8 +10,8 @@ package com.dfsek.terra.addons.structure; 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.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.util.range.Range; public class TerraStructure implements ConfiguredStructure { 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 5d948418c..38880e351 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,18 +7,18 @@ package com.dfsek.terra.addons.generation.feature; +import com.dfsek.seismic.type.Rotation; +import com.dfsek.seismic.type.sampler.Sampler; +import com.dfsek.seismic.type.vector.Vector3Int; + import java.util.Collections; import java.util.random.RandomGenerator; import java.util.random.RandomGeneratorFactory; -import com.dfsek.seismic.type.Rotation; - import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures; import com.dfsek.terra.api.Platform; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.properties.PropertyKey; import com.dfsek.terra.api.registry.key.StringIdentifiable; -import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; import com.dfsek.terra.api.world.chunk.generation.ProtoWorld; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/FeatureStageTemplate.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/FeatureStageTemplate.java index 0e788d585..bb8cb4854 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/FeatureStageTemplate.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/FeatureStageTemplate.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.generation.feature.config; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.ValidatedConfigTemplate; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; @@ -8,7 +9,6 @@ import com.dfsek.tectonic.api.exception.ValidationException; import com.dfsek.terra.addons.generation.feature.FeatureGenerationStage; import com.dfsek.terra.api.Platform; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.properties.PropertyKey; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java index 43a7a3221..25888e086 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.image; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.function.Supplier; @@ -26,7 +27,6 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageCache.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageCache.java index 10611b1d8..7ad72a009 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageCache.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageCache.java @@ -2,6 +2,7 @@ package com.dfsek.terra.addons.image.config.image; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; +import com.github.benmanes.caffeine.cache.Scheduler; import javax.imageio.ImageIO; import java.io.IOException; @@ -18,8 +19,6 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.properties.Properties; import com.dfsek.terra.api.util.generic.Lazy; -import com.github.benmanes.caffeine.cache.Scheduler; - import static com.dfsek.terra.api.util.cache.CacheUtils.CACHE_EXECUTOR; diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageTemplate.java index ad9fdb6e4..0ef7ee751 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageTemplate.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/image/ImageTemplate.java @@ -3,11 +3,11 @@ package com.dfsek.terra.addons.image.config.image; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import java.io.IOException; + import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.api.config.ConfigPack; -import java.io.IOException; - public class ImageTemplate implements ObjectTemplate { diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/ChannelSamplerTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/ChannelSamplerTemplate.java index 6f163db55..594c609ef 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/ChannelSamplerTemplate.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/ChannelSamplerTemplate.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.image.config.sampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; @@ -7,7 +8,6 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.image.sampler.ChannelSampler; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; -import com.dfsek.seismic.type.sampler.Sampler; public class ChannelSamplerTemplate implements ObjectTemplate { diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/DistanceTransformSamplerTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/DistanceTransformSamplerTemplate.java index 3eea5b9d9..49e9fa35f 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/DistanceTransformSamplerTemplate.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/DistanceTransformSamplerTemplate.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.image.config.sampler; +import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; @@ -9,7 +10,6 @@ import com.dfsek.terra.addons.image.operator.DistanceTransform; import com.dfsek.terra.addons.image.operator.DistanceTransform.CostFunction; import com.dfsek.terra.addons.image.operator.DistanceTransform.Normalization; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; -import com.dfsek.seismic.type.sampler.Sampler; public class DistanceTransformSamplerTemplate implements ObjectTemplate { diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java index f9818c80f..e1a2f2234 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java @@ -1,9 +1,10 @@ package com.dfsek.terra.addons.image.operator; +import com.dfsek.seismic.type.sampler.Sampler; + import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.util.ColorUtil; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; -import com.dfsek.seismic.type.sampler.Sampler; import static com.dfsek.terra.addons.image.util.MathUtil.lerp; diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/ChannelSampler.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/ChannelSampler.java index 7c01e52eb..e0e020dc8 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/ChannelSampler.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/ChannelSampler.java @@ -1,9 +1,10 @@ package com.dfsek.terra.addons.image.sampler; +import com.dfsek.seismic.type.sampler.Sampler; + import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.image.util.ColorUtil; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; -import com.dfsek.seismic.type.sampler.Sampler; import static com.dfsek.terra.addons.image.util.MathUtil.lerp; diff --git a/common/addons/structure-block-shortcut/src/main/java/com/dfsek/terra/addons/palette/shortcut/block/SingletonStructure.java b/common/addons/structure-block-shortcut/src/main/java/com/dfsek/terra/addons/palette/shortcut/block/SingletonStructure.java index 3d728b97d..cd371ea55 100644 --- a/common/addons/structure-block-shortcut/src/main/java/com/dfsek/terra/addons/palette/shortcut/block/SingletonStructure.java +++ b/common/addons/structure-block-shortcut/src/main/java/com/dfsek/terra/addons/palette/shortcut/block/SingletonStructure.java @@ -1,12 +1,12 @@ package com.dfsek.terra.addons.palette.shortcut.block; +import com.dfsek.seismic.type.Rotation; +import com.dfsek.seismic.type.vector.Vector3Int; + import java.util.random.RandomGenerator; -import com.dfsek.seismic.type.Rotation; - import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; diff --git a/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java index 6c482249b..eb8657a2f 100644 --- a/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java +++ b/common/addons/structure-mutator/src/main/java/com/dfsek/terra/addons/structure/mutator/MutatedStructure.java @@ -1,13 +1,13 @@ package com.dfsek.terra.addons.structure.mutator; -import java.util.random.RandomGenerator; - import com.dfsek.seismic.type.Rotation; +import com.dfsek.seismic.type.vector.Vector3Int; + +import java.util.random.RandomGenerator; import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; import com.dfsek.terra.api.world.util.ReadInterceptor; import com.dfsek.terra.api.world.util.WriteInterceptor; diff --git a/common/addons/structure-sponge-loader/build.gradle.kts b/common/addons/structure-sponge-loader/build.gradle.kts index 20c002866..31e74764b 100644 --- a/common/addons/structure-sponge-loader/build.gradle.kts +++ b/common/addons/structure-sponge-loader/build.gradle.kts @@ -1,5 +1,3 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar - version = version("1.0.0") dependencies { diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java index 2444f0d40..a5fe2d98b 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.sponge; +import com.dfsek.seismic.type.vector.Vector3Int; import net.querz.nbt.io.NBTDeserializer; import net.querz.nbt.tag.ByteArrayTag; import net.querz.nbt.tag.CompoundTag; @@ -31,7 +32,6 @@ import com.dfsek.terra.api.inject.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.FileUtil; -import com.dfsek.seismic.type.vector.Vector3Int; public class SpongeSchematicAddon implements AddonInitializer { diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java index 9dae8e27b..4a4b7b2b0 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java @@ -7,16 +7,16 @@ package com.dfsek.terra.addons.sponge; -import java.util.random.RandomGenerator; - import com.dfsek.seismic.type.Rotation; +import com.dfsek.seismic.type.vector.Vector2Int; +import com.dfsek.seismic.type.vector.Vector3Int; + +import java.util.random.RandomGenerator; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.seismic.type.vector.Vector2Int; -import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 24e3a20e9..265114f64 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -1,5 +1,3 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar - version = version("1.2.0") dependencies { 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 3600fb4e2..faf55f4b8 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 @@ -10,6 +10,7 @@ package com.dfsek.terra.addons.terrascript.script; import com.dfsek.seismic.math.algebra.AlgebraFunctions; import com.dfsek.seismic.math.trigonometry.TrigonometryFunctions; import com.dfsek.seismic.type.Rotation; +import com.dfsek.seismic.type.vector.Vector3Int; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,7 +47,6 @@ import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; 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 74c4a6a5e..70181222f 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 @@ -7,15 +7,15 @@ package com.dfsek.terra.addons.terrascript.script; +import com.dfsek.seismic.type.Rotation; +import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3Int; + import java.util.HashMap; import java.util.Map; import java.util.random.RandomGenerator; -import com.dfsek.seismic.type.Rotation; - import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.seismic.type.vector.Vector3; -import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; 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 14cb8b381..90171d4e3 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 @@ -8,6 +8,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -15,7 +16,6 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -37,8 +37,7 @@ public class BiomeFunction implements Function { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); - + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); BiomeProvider grid = arguments.getWorld().getBiomeProvider(); 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 fb8ffa22e..e1e4db321 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 @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,8 +24,6 @@ import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; public class BlockFunction implements Function { 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 fd3465c45..f1efea1f8 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 @@ -7,14 +7,15 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; + 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.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; public class CheckBlockFunction implements Function { @@ -34,7 +35,7 @@ public class CheckBlockFunction implements Function { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); String data = arguments.getWorld() 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 d1b664019..1eee2ad48 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 @@ -7,6 +7,9 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; + 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; @@ -19,8 +22,6 @@ import com.dfsek.terra.api.Platform; 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.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; public class EntityFunction implements Function { 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 b98dda159..5191f5dd9 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 @@ -7,14 +7,15 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; + 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.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; public class GetMarkFunction implements Function { 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 5fcc8e46b..bd479c4da 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 @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,8 +29,6 @@ import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; public class LootFunction implements Function { @@ -56,7 +56,7 @@ public class LootFunction implements Function { public Void apply(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), - z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); + z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); String id = data.apply(implementationArguments, scope); 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 b6cbd2bde..c88b313b8 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 @@ -7,6 +7,9 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; + 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; @@ -17,8 +20,6 @@ import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; public class PullFunction implements Function { 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 905ff23ae..3fdf98efb 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 @@ -7,14 +7,15 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; + 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.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; public class SetMarkFunction implements Function { 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 fbc9dfced..a93ecf0f0 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 @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,8 +19,6 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.block.entity.BlockEntity; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; public class StateFunction implements Function { 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 c62efde0a..4d0f0c01d 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 @@ -8,6 +8,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.type.Rotation; +import com.dfsek.seismic.type.vector.Vector2; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,7 +24,6 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; -import com.dfsek.seismic.type.vector.Vector2; public class StructureFunction implements Function { diff --git a/common/addons/structure-terrascript-loader/src/test/resources/test.tesf b/common/addons/structure-terrascript-loader/src/test/resources/test.tesf index 8bcce7177..50d5bef3a 100644 --- a/common/addons/structure-terrascript-loader/src/test/resources/test.tesf +++ b/common/addons/structure-terrascript-loader/src/test/resources/test.tesf @@ -1,84 +1,84 @@ -bool thing1 = 2 > (2+2) || false; +bool thing1 = 2 > (2 +2) || false; -if(2 > 2 || 3 + 4 <= 2 && 4 + 5 > 2 / 3) { +if (2 > 2 || 3 +4 <= 2 && 4 +5 > 2 / 3) { test("ok", 2); } -test("minecraft:green_w" + "ool", (2 * (3+1) * (2 * (1+1)))); +test("minecraft:green_w" +"ool", (2 * (3 +1) * (2 * (1 +1)))); // num testVar = 3.4; bool boolean = true; str stringVar = "hello!"; -num precedence = 3 + 2 * 2 + 3; -test("precedence: " + precedence, 2); -num precedence2 = 3 * 2 + 2 * 3; -test("precedence 2: " + precedence2, 2); +num precedence = 3 +2 * 2 +3; +test("precedence: " +precedence, 2); +num precedence2 = 3 * 2 +2 * 3; +test("precedence 2: " +precedence2, 2); bool iftest = false; bool truetest = false; num iterator = 0; -num thing = 4 - 2-2+2-2+2; -test("4 - 2 = " + thing, 2); +num thing = 4 -2 -2 +2 -2 +2; +test("4 - 2 = " +thing, 2); thing = -2; -test("-2 = " + thing, 2); +test("-2 = " +thing, 2); thing = -thing; -test("--2 = " + thing, 2); +test("--2 = " +thing, 2); -for(num i = 0; i < 5; i = i + 1) { - test("i = " + i, iterator); - if(i > 1 + 1) { +for (num i = 0; i < 5; i = i +1) { + test("i = " +i, iterator); + if (i > 1 +1) { test("more than 2", iterator); continue; } } -for(num i = 0; i < 5; i = i + 1) { - test("i = " + i, iterator); +for (num i = 0; i < 5; i = i +1) { + test("i = " +i, iterator); } -for(num j = 0; j < 5; j = j + 1) test("single statement j = " + j, iterator); +for (num j = 0; j < 5; j = j +1) test("single statement j = " +j, iterator); -if(4 + 2 == 2 + 4) { - test("new thing " + 2, iterator); +if (4 +2 == 2 +4) { + test("new thing " +2, iterator); } -while(iterator < 5) { - test("always, even after " + 2, iterator); - iterator = iterator + 1; - if(iterator > 2) { +while (iterator < 5) { + test("always, even after " +2, iterator); + iterator = iterator +1; + if (iterator > 2) { continue; } - test("not after " + 2, iterator); + test("not after " +2, iterator); } -if(true) test("single statement" + 2, iterator); -else if(true) test("another single statement" + 2, iterator); +if (true) test("single statement" +2, iterator); +else if (true) test("another single statement" +2, iterator); -if(true) { - test("true!" + 2, iterator); +if (true) { + test("true!" +2, iterator); } else { - test("false!" + 2, iterator); - } - -if(false) { - test("true!" + 2, iterator); -} else { - test("false!" + 2, iterator); + test("false!" +2, iterator); } -if(false) { - test("true again!" + 2, iterator); -} else if(true == true) { - test("false again!" + 2, iterator); +if (false) { + test("true!" +2, iterator); } else { - test("not logged!" + 2, iterator); + test("false!" +2, iterator); +} + +if (false) { + test("true again!" +2, iterator); +} else if (true == true) { + test("false again!" +2, iterator); +} else { + test("not logged!" +2, iterator); } @@ -87,11 +87,11 @@ if(false) { /* fsdfsd -*/ +* / test("fdsgdf" + 2, 1 + testVar); -if(true && !(boolean && false) && true) { - num scopedVar = 2; - test("if statement" + 2 + stringVar, 1 + testVar + scopedVar); +if (true && !(boolean && false) && true) { +num scopedVar = 2; +test("if statement" + 2 +stringVar, 1 + testVar + scopedVar); } \ No newline at end of file diff --git a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java index 0e9972fc0..119b073e6 100644 --- a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java +++ b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java @@ -7,6 +7,9 @@ package com.dfsek.terra.addon.terrascript.check; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; + import com.dfsek.terra.addons.chunkgenerator.generation.NoiseChunkGenerator3D; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.SamplerProvider; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; @@ -15,8 +18,6 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.WritableWorld; diff --git a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/ConstantSamplerFunction.java b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/ConstantSamplerFunction.java index 1cdbe0f07..a25cf6d0b 100644 --- a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/ConstantSamplerFunction.java +++ b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/ConstantSamplerFunction.java @@ -1,12 +1,13 @@ package com.dfsek.terra.addons.terrascript.sampler; +import com.dfsek.seismic.type.sampler.Sampler; + 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.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.seismic.type.sampler.Sampler; public class ConstantSamplerFunction implements Function { diff --git a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunction.java b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunction.java index c813fc13c..4f52962eb 100644 --- a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunction.java +++ b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunction.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.sampler; +import com.dfsek.seismic.type.sampler.Sampler; + import java.util.function.Supplier; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; @@ -8,7 +10,6 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.seismic.type.sampler.Sampler; public class SamplerFunction implements Function { 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 1d616d4d9..a9fd6982b 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,13 +9,12 @@ package com.dfsek.terra.api.config; import ca.solostudios.strata.version.Version; import ca.solostudios.strata.version.VersionRange; +import com.dfsek.paralithic.eval.parser.Parser.ParseOptions; import java.nio.file.Path; import java.util.List; import java.util.Map; -import com.dfsek.paralithic.eval.parser.Parser.ParseOptions; - import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.properties.PropertyHolder; import com.dfsek.terra.api.registry.key.Keyed; 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 b5e77f2b4..1489856d1 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 @@ -7,8 +7,9 @@ package com.dfsek.terra.api.entity; -import com.dfsek.terra.api.Handle; import com.dfsek.seismic.type.vector.Vector3; + +import com.dfsek.terra.api.Handle; import com.dfsek.terra.api.world.ServerWorld; 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 5a5fb2b54..43f2cf582 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 @@ -7,6 +7,7 @@ package com.dfsek.terra.api.event.events.world.generation; +import com.dfsek.seismic.type.vector.Vector3; import org.jetbrains.annotations.NotNull; import com.dfsek.terra.api.block.entity.Container; @@ -15,7 +16,6 @@ import com.dfsek.terra.api.event.events.AbstractCancellable; 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.seismic.type.vector.Vector3; /** 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 918195a40..e0993919b 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 @@ -7,11 +7,11 @@ 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 { 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 index 4d9325f05..f5090c051 100644 --- 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 @@ -7,14 +7,14 @@ package com.dfsek.terra.api.structure; +import com.dfsek.terra.api.inventory.Inventory; +import com.dfsek.terra.api.inventory.ItemStack; + import org.jetbrains.annotations.ApiStatus.Experimental; import java.util.List; import java.util.random.RandomGenerator; -import com.dfsek.terra.api.inventory.Inventory; -import com.dfsek.terra.api.inventory.ItemStack; - @Experimental public interface LootTable { 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 59f1efba6..699db6c54 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 @@ -7,10 +7,11 @@ package com.dfsek.terra.api.structure; -import java.util.random.RandomGenerator; - import com.dfsek.seismic.type.Rotation; import com.dfsek.seismic.type.vector.Vector3Int; + +import java.util.random.RandomGenerator; + import com.dfsek.terra.api.world.WritableWorld; 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 index 11d1ba001..939957d4e 100644 --- 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 @@ -7,9 +7,8 @@ package com.dfsek.terra.api.structure; -import org.jetbrains.annotations.ApiStatus.Experimental; - import com.dfsek.seismic.type.vector.Vector3; +import org.jetbrains.annotations.ApiStatus.Experimental; @Experimental 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 aa48f641d..ca5988484 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 @@ -12,8 +12,8 @@ import org.jetbrains.annotations.ApiStatus.Experimental; import com.dfsek.terra.api.registry.key.StringIdentifiable; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.StructureSpawn; -import com.dfsek.terra.api.util.range.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.util.range.Range; @Experimental 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 index 9e4afc43a..535dce508 100644 --- 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 @@ -10,9 +10,9 @@ package com.dfsek.terra.api.structure.feature; import java.util.function.BooleanSupplier; import java.util.function.IntConsumer; -import com.dfsek.terra.api.util.range.Range; import com.dfsek.terra.api.util.function.IntToBooleanFunction; import com.dfsek.terra.api.util.generic.Lazy; +import com.dfsek.terra.api.util.range.Range; /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/cache/SeededVector2Key.java b/common/api/src/main/java/com/dfsek/terra/api/util/cache/SeededVector2Key.java index 2023867a6..3c674554b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/cache/SeededVector2Key.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/cache/SeededVector2Key.java @@ -1,37 +1,35 @@ package com.dfsek.terra.api.util.cache; - - public class SeededVector2Key { - public int x; - public int z; - public long seed; + public int x; + public int z; + public long seed; - public SeededVector2Key(int x, int z, long seed) { - this.x = x; - this.z = z; - this.seed = seed; - } - - public void set(int x, int z, long seed) { - this.x = x; - this.z = z; - this.seed = seed; - } - - @Override - public boolean equals(Object obj) { - if(obj instanceof SeededVector2Key that) { - return this.z == that.z && this.x == that.x && this.seed == that.seed; - } - return false; - } - - @Override - public int hashCode() { - int code = x; - code = 31 * code + z; - return 31 * code + (Long.hashCode(seed)); - } + public SeededVector2Key(int x, int z, long seed) { + this.x = x; + this.z = z; + this.seed = seed; } + + public void set(int x, int z, long seed) { + this.x = x; + this.z = z; + this.seed = seed; + } + + @Override + public boolean equals(Object obj) { + if(obj instanceof SeededVector2Key that) { + return this.z == that.z && this.x == that.x && this.seed == that.seed; + } + return false; + } + + @Override + public int hashCode() { + int code = x; + code = 31 * code + z; + return 31 * code + (Long.hashCode(seed)); + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/cache/SeededVector3Key.java b/common/api/src/main/java/com/dfsek/terra/api/util/cache/SeededVector3Key.java index 90af87b32..8286413f0 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/cache/SeededVector3Key.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/cache/SeededVector3Key.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.util.cache; - public class SeededVector3Key { public int x; public int y; 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 aea2ec113..4e71247b4 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 @@ -9,6 +9,8 @@ package com.dfsek.terra.api.util.collection; import com.dfsek.seismic.math.normalization.NormalizationFunctions; import com.dfsek.seismic.type.sampler.Sampler; +import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3Int; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -22,8 +24,6 @@ import java.util.function.Function; import java.util.random.RandomGenerator; import com.dfsek.terra.api.util.mutable.MutableInteger; -import com.dfsek.seismic.type.vector.Vector3; -import com.dfsek.seismic.type.vector.Vector3Int; public class ProbabilityCollection implements Collection { @@ -57,14 +57,16 @@ public class ProbabilityCollection implements Collection { @SuppressWarnings("unchecked") public E get(Sampler n, Vector3Int vector3Int, long seed) { if(array.length == 0) return null; - return (E) array[(int) NormalizationFunctions.normalizeIndex(n.getSample(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), + return (E) array[(int) NormalizationFunctions.normalizeIndex( + n.getSample(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), array.length)]; } @SuppressWarnings("unchecked") public E get(Sampler n, Vector3 vector3Int, long seed) { if(array.length == 0) return null; - return (E) array[(int) NormalizationFunctions.normalizeIndex(n.getSample(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), + return (E) array[(int) NormalizationFunctions.normalizeIndex( + n.getSample(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), array.length)]; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/BufferedWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/BufferedWorld.java index 7f4647c95..7d98af75f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/BufferedWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/BufferedWorld.java @@ -1,5 +1,7 @@ package com.dfsek.terra.api.world; +import com.dfsek.seismic.type.vector.Vector3Int; + import java.util.Objects; import com.dfsek.terra.api.block.entity.BlockEntity; @@ -7,7 +9,6 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.util.Interceptors; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/ReadableWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/ReadableWorld.java index 8d5fe4437..b22f6bfa8 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/ReadableWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/ReadableWorld.java @@ -1,9 +1,10 @@ package com.dfsek.terra.api.world; +import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3Int; + import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.seismic.type.vector.Vector3; -import com.dfsek.seismic.type.vector.Vector3Int; /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/ServerWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/ServerWorld.java index 54510d34a..4d0c100c4 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/ServerWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/ServerWorld.java @@ -8,6 +8,7 @@ package com.dfsek.terra.api.world; import com.dfsek.seismic.type.vector.Vector3; + import com.dfsek.terra.api.world.chunk.Chunk; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/WritableWorld.java b/common/api/src/main/java/com/dfsek/terra/api/world/WritableWorld.java index 31b991a7e..ce83d7ac0 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/WritableWorld.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/WritableWorld.java @@ -1,10 +1,11 @@ package com.dfsek.terra.api.world; +import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3Int; + 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.seismic.type.vector.Vector3; -import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.chunk.generation.util.Column; 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 b911ff84e..eedaaa491 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 @@ -7,17 +7,16 @@ package com.dfsek.terra.api.world.biome.generation; -import com.dfsek.terra.api.Platform; - +import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3Int; import org.jetbrains.annotations.Contract; import java.util.Optional; import java.util.stream.Stream; import java.util.stream.StreamSupport; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.util.Column; -import com.dfsek.seismic.type.vector.Vector3; -import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.info.WorldProperties; diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java index 3e42ff1d1..c11775fab 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java @@ -1,11 +1,5 @@ package com.dfsek.terra.api.world.biome.generation; -import com.dfsek.terra.api.util.cache.SeededVector2Key; -import com.dfsek.terra.api.util.cache.SeededVector3Key; -import com.dfsek.terra.api.util.generic.pair.Pair; - -import com.dfsek.terra.api.util.generic.pair.Pair.Mutable; - import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; import com.github.benmanes.caffeine.cache.Scheduler; @@ -13,6 +7,10 @@ import com.github.benmanes.caffeine.cache.Scheduler; import java.util.Optional; import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.util.cache.SeededVector2Key; +import com.dfsek.terra.api.util.cache.SeededVector3Key; +import com.dfsek.terra.api.util.generic.pair.Pair; +import com.dfsek.terra.api.util.generic.pair.Pair.Mutable; import com.dfsek.terra.api.world.biome.Biome; import static com.dfsek.terra.api.util.cache.CacheUtils.CACHE_EXECUTOR; @@ -56,7 +54,6 @@ public class CachingBiomeProvider implements BiomeProvider, Handle { }); - } private Optional sampleBiome(SeededVector2Key vec) { diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/chunk/generation/ChunkGenerator.java b/common/api/src/main/java/com/dfsek/terra/api/world/chunk/generation/ChunkGenerator.java index 3609e9c7b..b86ffd5fe 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/chunk/generation/ChunkGenerator.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/chunk/generation/ChunkGenerator.java @@ -7,11 +7,11 @@ package com.dfsek.terra.api.world.chunk.generation; +import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.type.vector.Vector3Int; import org.jetbrains.annotations.NotNull; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.seismic.type.vector.Vector3; -import com.dfsek.seismic.type.vector.Vector3Int; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.util.Palette; import com.dfsek.terra.api.world.info.WorldProperties; diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java index 704ea94a6..cf966c3f4 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -88,24 +88,57 @@ public abstract class AbstractPlatform implements Platform { private static final Logger logger = LoggerFactory.getLogger(AbstractPlatform.class); private static final MutableBoolean LOADED = new MutableBoolean(false); + private static final String moonrise = "Moonrise"; private final EventManager eventManager = new EventManagerImpl(); private final ConfigRegistry configRegistry = new ConfigRegistry(); private final MetaConfigRegistry metaConfigRegistry = new MetaConfigRegistry(); - private final CheckedRegistry checkedConfigRegistry = new CheckedRegistryImpl<>(configRegistry); - private final CheckedRegistry checkedMetaConfigRegistry = new CheckedRegistryImpl<>(metaConfigRegistry); - private final Profiler profiler = new ProfilerImpl(); - private final GenericLoaders loaders = new GenericLoaders(this); - private final PluginConfigImpl config = new PluginConfigImpl(); - private final CheckedRegistry addonRegistry = new CheckedRegistryImpl<>(new OpenRegistryImpl<>(TypeKey.of(BaseAddon.class))); - private final Registry lockedAddonRegistry = new LockedRegistryImpl<>(addonRegistry); + public static int getGenerationThreadsWithReflection(String className, String fieldName, String project) { + try { + Class aClass = Class.forName(className); + int threads = aClass.getField(fieldName).getInt(null); + logger.info("{} found, setting {} generation threads.", project, threads); + return threads; + } catch(ClassNotFoundException e) { + logger.info("{} not found.", project); + } catch(NoSuchFieldException e) { + logger.warn("{} found, but {} field not found this probably means {0} has changed its code and " + + "Terra has not updated to reflect that.", project, fieldName); + } catch(IllegalAccessException e) { + logger.error("Failed to access {} field in {}, assuming 1 generation thread.", fieldName, project, e); + } + return 0; + + } + + public static int getMoonriseGenerationThreadsWithReflection() { + try { + Class prioritisedThreadPoolClazz = Class.forName("ca.spottedleaf.concurrentutil.executor.thread.PrioritisedThreadPool"); + Method getCoreThreadsMethod = prioritisedThreadPoolClazz.getDeclaredMethod("getCoreThreads"); + getCoreThreadsMethod.setAccessible(true); + Class moonriseCommonClazz = Class.forName("ca.spottedleaf.moonrise.common.util.MoonriseCommon"); + Object pool = moonriseCommonClazz.getDeclaredField("WORKER_POOL").get(null); + int threads = ((Thread[]) getCoreThreadsMethod.invoke(pool)).length; + logger.info("{} found, setting {} generation threads.", moonrise, threads); + return threads; + } catch(ClassNotFoundException e) { + logger.info("{} not found.", moonrise); + } catch(NoSuchMethodException | NoSuchFieldException e) { + logger.warn("{} found, but field/method not found this probably means {0} has changed its code and " + + "Terra has not updated to reflect that.", moonrise); + } catch(IllegalAccessException | InvocationTargetException e) { + logger.error("Failed to access thread values in {}, assuming 1 generation thread.", moonrise, e); + } + return 0; + } + public ConfigRegistry getRawConfigRegistry() { return configRegistry; } @@ -356,46 +389,6 @@ public abstract class AbstractPlatform implements Platform { } } - public static int getGenerationThreadsWithReflection(String className, String fieldName, String project) { - try { - Class aClass = Class.forName(className); - int threads = aClass.getField(fieldName).getInt(null); - logger.info("{} found, setting {} generation threads.", project, threads); - return threads; - } catch(ClassNotFoundException e) { - logger.info("{} not found.", project); - } catch(NoSuchFieldException e) { - logger.warn("{} found, but {} field not found this probably means {0} has changed its code and " + - "Terra has not updated to reflect that.", project, fieldName); - } catch(IllegalAccessException e) { - logger.error("Failed to access {} field in {}, assuming 1 generation thread.", fieldName, project, e); - } - return 0; - - } - - private static final String moonrise = "Moonrise"; - public static int getMoonriseGenerationThreadsWithReflection() { - try { - Class prioritisedThreadPoolClazz = Class.forName("ca.spottedleaf.concurrentutil.executor.thread.PrioritisedThreadPool"); - Method getCoreThreadsMethod = prioritisedThreadPoolClazz.getDeclaredMethod("getCoreThreads"); - getCoreThreadsMethod.setAccessible(true); - Class moonriseCommonClazz = Class.forName("ca.spottedleaf.moonrise.common.util.MoonriseCommon"); - Object pool = moonriseCommonClazz.getDeclaredField("WORKER_POOL").get(null); - int threads = ((Thread[]) getCoreThreadsMethod.invoke(pool)).length; - logger.info("{} found, setting {} generation threads.", moonrise, threads); - return threads; - } catch (ClassNotFoundException e) { - logger.info("{} not found.", moonrise); - } catch (NoSuchMethodException | NoSuchFieldException e) { - logger.warn("{} found, but field/method not found this probably means {0} has changed its code and " + - "Terra has not updated to reflect that.", moonrise); - } catch (IllegalAccessException | InvocationTargetException e) { - logger.error("Failed to access thread values in {}, assuming 1 generation thread.", moonrise, e); - } - return 0; - } - @Override public void register(TypeRegistry registry) { loaders.register(registry); diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 16177be56..bdb243e71 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -29,9 +29,9 @@ import com.dfsek.terra.api.addon.BaseAddon; 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.Range; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.collection.ProbabilityCollection; +import com.dfsek.terra.api.util.range.Range; import com.dfsek.terra.config.loaders.ExpressionParserOptionsTemplate; import com.dfsek.terra.config.loaders.LinkedHashMapLoader; import com.dfsek.terra.config.loaders.MaterialSetLoader; diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/ExpressionParserOptionsTemplate.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/ExpressionParserOptionsTemplate.java index caa74e402..0f81383e3 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/ExpressionParserOptionsTemplate.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/ExpressionParserOptionsTemplate.java @@ -13,7 +13,7 @@ public class ExpressionParserOptionsTemplate implements ObjectTemplate map = (Map) o; - if (map.size() == 1) { + if(map.size() == 1) { Object onlyKey = map.keySet().iterator().next(); return new ProbabilityCollection.Singleton<>(configLoader.loadType(generic, onlyKey, depthTracker)); } diff --git a/common/implementation/base/src/test/java/profiler/ProfilerTest.java b/common/implementation/base/src/test/java/profiler/ProfilerTest.java index 6c3ae486e..36989790a 100644 --- a/common/implementation/base/src/test/java/profiler/ProfilerTest.java +++ b/common/implementation/base/src/test/java/profiler/ProfilerTest.java @@ -17,11 +17,11 @@ package profiler; -import org.junit.jupiter.api.Test; - import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; +import org.junit.jupiter.api.Test; + public class ProfilerTest { private static final Profiler PROFILER = new ProfilerImpl(); diff --git a/common/implementation/base/src/test/java/registry/RegistryTest.java b/common/implementation/base/src/test/java/registry/RegistryTest.java index 01612bd7e..4ea1326fe 100644 --- a/common/implementation/base/src/test/java/registry/RegistryTest.java +++ b/common/implementation/base/src/test/java/registry/RegistryTest.java @@ -17,6 +17,8 @@ package registry; +import org.junit.jupiter.api.Test; + import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; @@ -25,10 +27,7 @@ import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.fail; +import static org.junit.jupiter.api.Assertions.*; public class RegistryTest { diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/AllayPlatform.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/AllayPlatform.java index a09b6a9e2..280331581 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/AllayPlatform.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/AllayPlatform.java @@ -21,6 +21,7 @@ import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.world.biome.PlatformBiome; + /** * @author daoge_cmd */ diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/JeBlockState.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/JeBlockState.java index 60583f22c..29abefe47 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/JeBlockState.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/JeBlockState.java @@ -14,20 +14,12 @@ public class JeBlockState { protected final TreeMap properties; protected int hash = Integer.MAX_VALUE; - public static JeBlockState fromString(String data) { - return new JeBlockState(data); - } - - public static JeBlockState create(String identifier, TreeMap properties) { - return new JeBlockState(identifier, properties); - } - private JeBlockState(String data) { String[] strings = data.replace("[", ",").replace("]", ",").replace(" ", "").split(","); this.identifier = strings[0]; this.properties = new TreeMap<>(); - if (strings.length > 1) { - for (int i = 1; i < strings.length; i++) { + if(strings.length > 1) { + for(int i = 1; i < strings.length; i++) { final String tmp = strings[i]; final int index = tmp.indexOf("="); properties.put(tmp.substring(0, index), tmp.substring(index + 1)); @@ -36,6 +28,19 @@ public class JeBlockState { completeMissingProperties(); } + private JeBlockState(String identifier, TreeMap properties) { + this.identifier = identifier; + this.properties = properties; + } + + public static JeBlockState fromString(String data) { + return new JeBlockState(data); + } + + public static JeBlockState create(String identifier, TreeMap properties) { + return new JeBlockState(identifier, properties); + } + public String getPropertyValue(String key) { return properties.get(key); } @@ -49,24 +54,19 @@ public class JeBlockState { entry -> properties.put(entry.getKey(), entry.getValue())); } - private JeBlockState(String identifier, TreeMap properties) { - this.identifier = identifier; - this.properties = properties; - } - public String toString(boolean includeProperties) { if(!includeProperties) return identifier; StringBuilder builder = new StringBuilder(identifier).append(";"); properties.forEach((k, v) -> builder.append(k).append("=").append(v).append(";")); String str = builder.toString(); - if (hash == Integer.MAX_VALUE) { + if(hash == Integer.MAX_VALUE) { hash = HashUtils.fnv1a_32(str.getBytes()); } return str; } public int getHash() { - if (hash == Integer.MAX_VALUE) { + if(hash == Integer.MAX_VALUE) { hash = HashUtils.fnv1a_32(toString(true).getBytes()); } return hash; diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/Mapping.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/Mapping.java index 222f6f53f..bb2132590 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/Mapping.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/Mapping.java @@ -104,7 +104,8 @@ public final class Mapping { return false; } - Map mappings = from(stream, new TypeToken<>() {}); + Map mappings = from(stream, new TypeToken<>() { + }); mappings.forEach((javaId, mapping) -> JE_BIOME_ID_TO_BE.put(javaId, mapping.bedrockId())); } catch(IOException e) { TerraAllayPlugin.INSTANCE.getPluginLogger().error("Failed to load biomes mapping", e); @@ -120,7 +121,8 @@ public final class Mapping { return false; } - Map mappings = from(stream, new TypeToken<>() {}); + Map mappings = from(stream, new TypeToken<>() { + }); mappings.forEach((javaId, mapping) -> { ItemType itemType = ItemTypeSafeGetter .name(mapping.bedrockId()) @@ -142,7 +144,8 @@ public final class Mapping { return false; } - Map> root = from(stream, new TypeToken<>() {}); + Map> root = from(stream, new TypeToken<>() { + }); List mappings = root.get("mappings"); mappings.forEach(mapping -> { JeBlockState jeState = createJeBlockState(mapping.javaState()); @@ -164,7 +167,8 @@ public final class Mapping { return false; } - Map> states = from(stream, new TypeToken<>() {}); + Map> states = from(stream, new TypeToken<>() { + }); JE_BLOCK_DEFAULT_PROPERTIES.putAll(states); } catch(IOException e) { throw new RuntimeException(e); diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/TerraAllayPlugin.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/TerraAllayPlugin.java index d6f5f1d14..d2e5a16a6 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/TerraAllayPlugin.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/TerraAllayPlugin.java @@ -70,6 +70,7 @@ public class TerraAllayPlugin extends Plugin { @EventHandler private void onWorldUnload(WorldUnloadEvent event) { - AllayPlatform.GENERATOR_WRAPPERS.removeIf(wrapper -> wrapper.getAllayWorldGenerator().getDimension().getWorld() == event.getWorld()); + AllayPlatform.GENERATOR_WRAPPERS.removeIf( + wrapper -> wrapper.getAllayWorldGenerator().getDimension().getWorld() == event.getWorld()); } } diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayBiome.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayBiome.java index d9607fcb7..84be41ce5 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayBiome.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayBiome.java @@ -4,6 +4,7 @@ import org.allaymc.api.world.biome.BiomeType; import com.dfsek.terra.api.world.biome.PlatformBiome; + /** * @author daoge_cmd */ diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayBlockState.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayBlockState.java index be8988400..29f0c3825 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayBlockState.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayBlockState.java @@ -7,6 +7,7 @@ import com.dfsek.terra.allay.JeBlockState; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.properties.Property; + /** * @author daoge_cmd */ @@ -68,7 +69,7 @@ public final class AllayBlockState implements com.dfsek.terra.api.block.state.Bl public BlockState allayBlockState() { return allayBlockState; } - public boolean containsWater() { return containsWater; } + public boolean containsWater() { return containsWater; } public JeBlockState jeBlockState() { return jeBlockState; } } diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayBlockType.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayBlockType.java index 901f04ee3..dc6811735 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayBlockType.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayBlockType.java @@ -6,6 +6,7 @@ import org.allaymc.api.block.type.BlockType; import com.dfsek.terra.allay.Mapping; import com.dfsek.terra.api.block.state.BlockState; + /** * @author daoge_cmd */ diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayChunk.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayChunk.java index c67ed2d88..e7ebec7fb 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayChunk.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayChunk.java @@ -10,18 +10,20 @@ import com.dfsek.terra.allay.Mapping; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.world.ServerWorld; + /** * @author daoge_cmd */ public record AllayChunk(ServerWorld world, Chunk allayChunk) implements com.dfsek.terra.api.world.chunk.Chunk { - private static final org.allaymc.api.block.type.BlockState WATER = BlockTypes.WATER.ofState(BlockPropertyTypes.LIQUID_DEPTH.createValue(0)); + private static final org.allaymc.api.block.type.BlockState WATER = BlockTypes.WATER.ofState( + BlockPropertyTypes.LIQUID_DEPTH.createValue(0)); @Override public void setBlock(int x, int y, int z, BlockState data, boolean physics) { AllayBlockState allayBlockState = (AllayBlockState) data; allayChunk.setBlockState(x, y, z, allayBlockState.allayBlockState()); - if (allayBlockState.containsWater() || allayChunk.getBlockState(x, y, z).getBlockType().hasBlockTag(BlockTags.WATER)) { + if(allayBlockState.containsWater() || allayChunk.getBlockState(x, y, z).getBlockType().hasBlockTag(BlockTags.WATER)) { allayChunk.setBlockState(x, y, z, WATER, 1); } } diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayEnchantment.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayEnchantment.java index b41fa7b75..0bae9a9a1 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayEnchantment.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayEnchantment.java @@ -6,18 +6,19 @@ import com.dfsek.terra.allay.Mapping; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Enchantment; + /** * @author daoge_cmd */ public record AllayEnchantment(EnchantmentType allayEnchantment) implements Enchantment { @Override public boolean canEnchantItem(ItemStack itemStack) { - return ((AllayItemStack)itemStack).allayItemStack().checkEnchantmentCompatibility(allayEnchantment); + return ((AllayItemStack) itemStack).allayItemStack().checkEnchantmentCompatibility(allayEnchantment); } @Override public boolean conflictsWith(Enchantment other) { - return ((AllayEnchantment)other).allayEnchantment.isIncompatibleWith(allayEnchantment); + return ((AllayEnchantment) other).allayEnchantment.isIncompatibleWith(allayEnchantment); } @Override diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayFakeEntity.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayFakeEntity.java index fc792270c..7ac5cc113 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayFakeEntity.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayFakeEntity.java @@ -1,9 +1,11 @@ package com.dfsek.terra.allay.delegate; -import com.dfsek.terra.api.entity.Entity; import com.dfsek.seismic.type.vector.Vector3; + +import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.world.ServerWorld; + /** * NOTICE: Entity is not supported currently, and this is a fake implementation. * diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayItemMeta.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayItemMeta.java index 857f0af6d..38a2257c7 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayItemMeta.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayItemMeta.java @@ -10,6 +10,7 @@ import java.util.Map; import com.dfsek.terra.api.inventory.item.Enchantment; import com.dfsek.terra.api.inventory.item.ItemMeta; + /** * @author daoge_cmd */ @@ -23,7 +24,7 @@ public record AllayItemMeta(ItemStack allayItemStack) implements ItemMeta { @Override public Map getEnchantments() { Map results = new HashMap<>(); - for (EnchantmentInstance allayEnchantmentInstance : allayItemStack.getEnchantments()) { + for(EnchantmentInstance allayEnchantmentInstance : allayItemStack.getEnchantments()) { results.put(new AllayEnchantment(allayEnchantmentInstance.getType()), allayEnchantmentInstance.getLevel()); } return results; diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayItemStack.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayItemStack.java index bf7e59479..18df86224 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayItemStack.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayItemStack.java @@ -6,10 +6,11 @@ import org.allaymc.api.item.enchantment.EnchantmentInstance; import com.dfsek.terra.api.inventory.Item; import com.dfsek.terra.api.inventory.item.ItemMeta; + /** * @author daoge_cmd */ -public record AllayItemStack(ItemStack allayItemStack) implements com.dfsek.terra.api.inventory.ItemStack{ +public record AllayItemStack(ItemStack allayItemStack) implements com.dfsek.terra.api.inventory.ItemStack { @Override public int getAmount() { return allayItemStack.getCount(); @@ -34,7 +35,7 @@ public record AllayItemStack(ItemStack allayItemStack) implements com.dfsek.terr public void setItemMeta(ItemMeta meta) { ItemStack targetItem = ((AllayItemMeta) meta).allayItemStack(); allayItemStack.removeAllEnchantments(); - for (EnchantmentInstance enchantment : targetItem.getEnchantments()) { + for(EnchantmentInstance enchantment : targetItem.getEnchantments()) { allayItemStack.addEnchantment(enchantment.getType(), enchantment.getLevel()); } allayItemStack.setLore(targetItem.getLore()); diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayProtoChunk.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayProtoChunk.java index 5b67727fb..9b587febc 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayProtoChunk.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayProtoChunk.java @@ -10,12 +10,14 @@ import com.dfsek.terra.allay.Mapping; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.world.chunk.generation.ProtoChunk; + /** * @author daoge_cmd */ public record AllayProtoChunk(UnsafeChunk allayChunk) implements ProtoChunk { - private static final org.allaymc.api.block.type.BlockState WATER = BlockTypes.WATER.ofState(BlockPropertyTypes.LIQUID_DEPTH.createValue(0)); + private static final org.allaymc.api.block.type.BlockState WATER = BlockTypes.WATER.ofState( + BlockPropertyTypes.LIQUID_DEPTH.createValue(0)); @Override public int getMaxHeight() { diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayProtoWorld.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayProtoWorld.java index 82ecb2839..2b6dd59aa 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayProtoWorld.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayProtoWorld.java @@ -1,5 +1,6 @@ package com.dfsek.terra.allay.delegate; +import com.dfsek.seismic.type.vector.Vector3; import org.allaymc.api.block.property.type.BlockPropertyTypes; import org.allaymc.api.block.tag.BlockTags; import org.allaymc.api.block.type.BlockTypes; @@ -11,18 +12,19 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.ProtoWorld; + /** * @author daoge_cmd */ public record AllayProtoWorld(AllayServerWorld allayServerWorld, OtherChunkAccessibleContext context) implements ProtoWorld { - private static final org.allaymc.api.block.type.BlockState WATER = BlockTypes.WATER.ofState(BlockPropertyTypes.LIQUID_DEPTH.createValue(0)); + private static final org.allaymc.api.block.type.BlockState WATER = BlockTypes.WATER.ofState( + BlockPropertyTypes.LIQUID_DEPTH.createValue(0)); @Override public int centerChunkX() { diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayServerWorld.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayServerWorld.java index 3a24422b0..5225c3e5e 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayServerWorld.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/delegate/AllayServerWorld.java @@ -1,5 +1,6 @@ package com.dfsek.terra.allay.delegate; +import com.dfsek.seismic.type.vector.Vector3; import org.allaymc.api.world.Dimension; import com.dfsek.terra.allay.Mapping; @@ -9,12 +10,12 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; + /** * @author daoge_cmd */ diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/generator/AllayGeneratorWrapper.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/generator/AllayGeneratorWrapper.java index 20422b831..b1382b1cb 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/generator/AllayGeneratorWrapper.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/generator/AllayGeneratorWrapper.java @@ -24,6 +24,7 @@ import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; import com.dfsek.terra.api.world.chunk.generation.util.GeneratorWrapper; import com.dfsek.terra.api.world.info.WorldProperties; + /** * @author daoge_cmd */ @@ -86,6 +87,18 @@ public class AllayGeneratorWrapper implements GeneratorWrapper { .build(); } + protected static ConfigPack getConfigPack(String packName) { + Optional byId = TerraAllayPlugin.PLATFORM.getConfigRegistry().getByID(packName); + return byId.orElseGet( + () -> TerraAllayPlugin.PLATFORM.getConfigRegistry().getByID(packName.toUpperCase(Locale.ENGLISH)) + .orElseThrow(() -> new IllegalArgumentException("Cant find terra config pack named " + packName)) + ); + } + + protected static ChunkGenerator createGenerator(ConfigPack configPack) { + return configPack.getGeneratorProvider().newInstance(configPack); + } + @Override public ChunkGenerator getHandle() { return chunkGenerator; @@ -112,6 +125,7 @@ public class AllayGeneratorWrapper implements GeneratorWrapper { return this.allayWorldGenerator; } + protected class AllayNoiser implements Noiser { @Override @@ -145,6 +159,7 @@ public class AllayGeneratorWrapper implements GeneratorWrapper { } } + protected class AllayPopulator implements Populator { @Override @@ -165,16 +180,4 @@ public class AllayGeneratorWrapper implements GeneratorWrapper { return "TERRA_POPULATOR"; } } - - protected static ConfigPack getConfigPack(String packName) { - Optional byId = TerraAllayPlugin.PLATFORM.getConfigRegistry().getByID(packName); - return byId.orElseGet( - () -> TerraAllayPlugin.PLATFORM.getConfigRegistry().getByID(packName.toUpperCase(Locale.ENGLISH)) - .orElseThrow(() -> new IllegalArgumentException("Cant find terra config pack named " + packName)) - ); - } - - protected static ChunkGenerator createGenerator(ConfigPack configPack) { - return configPack.getGeneratorProvider().newInstance(configPack); - } } diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/handle/AllayItemHandle.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/handle/AllayItemHandle.java index f85f001bb..21a4baa54 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/handle/AllayItemHandle.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/handle/AllayItemHandle.java @@ -13,6 +13,7 @@ import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.inventory.Item; import com.dfsek.terra.api.inventory.item.Enchantment; + /** * @author daoge_cmd */ diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/handle/AllayWorldHandle.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/handle/AllayWorldHandle.java index 37e84425f..fd4d643bc 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/handle/AllayWorldHandle.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/handle/AllayWorldHandle.java @@ -9,6 +9,7 @@ import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.handle.WorldHandle; + /** * @author daoge_cmd */ @@ -29,6 +30,7 @@ public class AllayWorldHandle implements WorldHandle { public @NotNull EntityType getEntity(@NotNull String id) { return new EntityType() { private final Object fakeEntityType = new Object(); + @Override public Object getHandle() { return fakeEntityType; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java index 5306bc3e3..7303e09fc 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java @@ -17,11 +17,11 @@ package com.dfsek.terra.bukkit; +import com.dfsek.seismic.type.vector.Vector3; import io.papermc.lib.PaperLib; import org.bukkit.Location; import com.dfsek.terra.api.entity.Entity; -import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java index 2b90e73d8..cdcd1efd7 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java @@ -17,11 +17,11 @@ package com.dfsek.terra.bukkit; +import com.dfsek.seismic.type.vector.Vector3; import io.papermc.lib.PaperLib; import org.bukkit.Location; import com.dfsek.terra.api.entity.Player; -import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.bukkit.world.BukkitAdapter; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java index 08be0766b..876585f5f 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java @@ -20,9 +20,6 @@ package com.dfsek.terra.bukkit; import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; - -import com.dfsek.terra.bukkit.nms.Initializer; - import org.bukkit.Bukkit; import org.bukkit.entity.EntityType; import org.jetbrains.annotations.NotNull; @@ -42,6 +39,7 @@ import com.dfsek.terra.api.world.biome.PlatformBiome; 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.nms.Initializer; import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; @@ -58,7 +56,7 @@ public class PlatformImpl extends AbstractPlatform { public PlatformImpl(TerraBukkitPlugin plugin) { generationThreads = getMoonriseGenerationThreadsWithReflection(); - if (generationThreads == 0) { + if(generationThreads == 0) { generationThreads = 1; } this.plugin = plugin; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java index a4a81d7f8..e0bba8e9d 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java @@ -1,14 +1,15 @@ package com.dfsek.terra.bukkit.hooks; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.registry.key.Keyed; - import org.mvplugins.multiverse.core.world.generators.GeneratorPlugin; import org.mvplugins.multiverse.external.jetbrains.annotations.NotNull; import org.mvplugins.multiverse.external.jetbrains.annotations.Nullable; import java.util.Collection; +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.registry.key.Keyed; + + public final class MultiverseGeneratorPluginHook implements GeneratorPlugin { private final Platform platform; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 522a6aa2a..8551fc2c0 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -17,9 +17,6 @@ package com.dfsek.terra.bukkit.listeners; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.bukkit.hooks.MultiverseGeneratorPluginHook; - import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.server.PluginEnableEvent; @@ -27,6 +24,9 @@ import org.mvplugins.multiverse.core.MultiverseCoreApi; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.bukkit.hooks.MultiverseGeneratorPluginHook; + /** * Listener for events on all implementations. diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java index 923c73df0..9d2eae560 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java @@ -1,10 +1,9 @@ package com.dfsek.terra.bukkit.nms; -import com.dfsek.terra.bukkit.BukkitAddon; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.dfsek.terra.bukkit.BukkitAddon; import com.dfsek.terra.bukkit.PlatformImpl; import com.dfsek.terra.bukkit.util.VersionUtil; @@ -54,7 +53,7 @@ public interface Initializer { private static Initializer constructInitializer() { try { String packageVersion = NMS; - if (NMS.equals("v1_21_5")) { + if(NMS.equals("v1_21_5")) { packageVersion = "v1_21_6"; } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index fcc244504..ef7d2c535 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -18,6 +18,7 @@ package com.dfsek.terra.bukkit.world; +import com.dfsek.seismic.type.vector.Vector3; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -34,7 +35,6 @@ import com.dfsek.terra.api.command.CommandSender; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Enchantment; -import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.info.WorldProperties; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java index 6d442343b..38a9735ad 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java @@ -17,14 +17,14 @@ package com.dfsek.terra.bukkit.world.block; -import org.bukkit.Material; - 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; +import org.bukkit.Material; + public class BukkitBlockTypeAndItem implements BlockType, Item { private final Material delegate; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java index 080b57146..56bd045fc 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java @@ -17,13 +17,13 @@ package com.dfsek.terra.bukkit.world.block.state; +import com.dfsek.seismic.type.vector.Vector3; import org.bukkit.block.Container; import org.bukkit.block.CreatureSpawner; import org.bukkit.block.Sign; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/AwfulBukkitHacks.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/AwfulBukkitHacks.java index 980194f92..30973af29 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/AwfulBukkitHacks.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/AwfulBukkitHacks.java @@ -1,7 +1,5 @@ package com.dfsek.terra.bukkit.nms.v1_21_6; -import com.dfsek.terra.bukkit.nms.v1_21_6.config.VanillaBiomeProperties; - import net.minecraft.core.Holder; import net.minecraft.core.Holder.Reference; import net.minecraft.core.HolderSet; @@ -25,6 +23,7 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import com.dfsek.terra.bukkit.nms.v1_21_6.config.VanillaBiomeProperties; import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; import com.dfsek.terra.registry.master.ConfigRegistry; @@ -52,7 +51,8 @@ public class AwfulBukkitHacks { VanillaBiomeProperties vanillaBiomeProperties = biome.getContext().get(VanillaBiomeProperties.class); - Biome platform = NMSBiomeInjector.createBiome(biomeRegistry.get(vanillaMinecraftKey).orElseThrow().value(), vanillaBiomeProperties); + Biome platform = NMSBiomeInjector.createBiome(biomeRegistry.get(vanillaMinecraftKey).orElseThrow().value(), + vanillaBiomeProperties); ResourceKey delegateKey = ResourceKey.create( Registries.BIOME, @@ -112,39 +112,42 @@ public class AwfulBukkitHacks { Map, List>> map = new IdentityHashMap<>(); Reflection.MAPPED_REGISTRY.getByKey(registry).values().forEach(entry -> map.put(entry, new ArrayList<>())); tagEntries.forEach((tag, entries) -> { - for (Holder holder : entries) { -// if (!holder.canSerializeIn(registry.asLookup())) { -// throw new IllegalStateException("Can't create named set " + tag + " containing value " + holder + " from outside registry " + this); -// } + for(Holder holder : entries) { + // if (!holder.canSerializeIn(registry.asLookup())) { + // throw new IllegalStateException("Can't create named set " + tag + " containing value " + holder + " + // from outside registry " + this); + // } - if (!(holder instanceof Holder.Reference reference)) { + if(!(holder instanceof Holder.Reference reference)) { throw new IllegalStateException("Found direct holder " + holder + " value in tag " + tag); } map.get(reference).add(tag); } }); -// Set> set = Sets.difference(registry.tags.keySet(), tagEntries.keySet()); -// if (!set.isEmpty()) { -// LOGGER.warn( -// "Not all defined tags for registry {} are present in data pack: {}", -// registry.key(), -// set.stream().map(tag -> tag.location().toString()).sorted().collect(Collectors.joining(", ")) -// ); -// } + // Set> set = Sets.difference(registry.tags.keySet(), tagEntries.keySet()); + // if (!set.isEmpty()) { + // LOGGER.warn( + // "Not all defined tags for registry {} are present in data pack: {}", + // registry.key(), + // set.stream().map(tag -> tag.location().toString()).sorted().collect(Collectors.joining(", ")) + // ); + // } Map, HolderSet.Named> map2 = new IdentityHashMap<>(registry.getTags().collect(Collectors.toMap( Named::key, (named) -> named ))); - tagEntries.forEach((tag, entries) -> Reflection.HOLDER_SET.invokeBind(map2.computeIfAbsent(tag, key -> Reflection.MAPPED_REGISTRY.invokeCreateTag(registry, key)), entries)); + tagEntries.forEach((tag, entries) -> Reflection.HOLDER_SET.invokeBind( + map2.computeIfAbsent(tag, key -> Reflection.MAPPED_REGISTRY.invokeCreateTag(registry, key)), entries)); map.forEach(Reflection.HOLDER_REFERENCE::invokeBindTags); Reflection.MAPPED_REGISTRY.setAllTags(registry, Reflection.MAPPED_REGISTRY_TAG_SET.invokeFromMap(map2)); } private static void resetTags(MappedRegistry registry) { registry.getTags().forEach(entryList -> Reflection.HOLDER_SET.invokeBind(entryList, List.of())); - Reflection.MAPPED_REGISTRY.getByKey(registry).values().forEach(entry -> Reflection.HOLDER_REFERENCE.invokeBindTags(entry, Set.of())); + Reflection.MAPPED_REGISTRY.getByKey(registry).values().forEach( + entry -> Reflection.HOLDER_REFERENCE.invokeBindTags(entry, Set.of())); } } diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/NMSBiomeInjector.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/NMSBiomeInjector.java index dd2f2790b..a4bb5c1dc 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/NMSBiomeInjector.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/NMSBiomeInjector.java @@ -33,7 +33,8 @@ public class NMSBiomeInjector { .waterColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterColor(), vanilla.getWaterColor())) .waterFogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterFogColor(), vanilla.getWaterFogColor())) .skyColor(Objects.requireNonNullElse(vanillaBiomeProperties.getSkyColor(), vanilla.getSkyColor())) - .grassColorModifier(Objects.requireNonNullElse(vanillaBiomeProperties.getGrassColorModifier(), vanilla.getSpecialEffects().getGrassColorModifier())) + .grassColorModifier(Objects.requireNonNullElse(vanillaBiomeProperties.getGrassColorModifier(), + vanilla.getSpecialEffects().getGrassColorModifier())) .backgroundMusicVolume(Objects.requireNonNullElse(vanillaBiomeProperties.getMusicVolume(), vanilla.getBackgroundMusicVolume())); if(vanillaBiomeProperties.getGrassColor() == null) { @@ -84,7 +85,8 @@ public class NMSBiomeInjector { builder.downfall(Objects.requireNonNullElse(vanillaBiomeProperties.getDownfall(), vanilla.climateSettings.downfall())); - builder.temperatureAdjustment(Objects.requireNonNullElse(vanillaBiomeProperties.getTemperatureModifier(), vanilla.climateSettings.temperatureModifier())); + builder.temperatureAdjustment( + Objects.requireNonNullElse(vanillaBiomeProperties.getTemperatureModifier(), vanilla.climateSettings.temperatureModifier())); builder.mobSpawnSettings(Objects.requireNonNullElse(vanillaBiomeProperties.getSpawnSettings(), vanilla.getMobSettings())); diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/NMSInitializer.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/NMSInitializer.java index cdf8a0902..80515cf7c 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/NMSInitializer.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/NMSInitializer.java @@ -1,9 +1,8 @@ package com.dfsek.terra.bukkit.nms.v1_21_6; -import com.dfsek.terra.bukkit.BukkitAddon; - import org.bukkit.Bukkit; +import com.dfsek.terra.bukkit.BukkitAddon; import com.dfsek.terra.bukkit.PlatformImpl; import com.dfsek.terra.bukkit.nms.Initializer; diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/Reflection.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/Reflection.java index e7a93da04..b565476c5 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/Reflection.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/Reflection.java @@ -68,6 +68,7 @@ public class Reflection { HolderSet.Named invokeCreateTag(MappedRegistry instance, TagKey tag); } + @Proxies(className = "net.minecraft.core.MappedRegistry$TagSet") public interface MappedRegistryTagSetProxy { @MethodName("fromMap") @@ -92,6 +93,7 @@ public class Reflection { void invokeBindTags(Reference instance, Collection> tags); } + @Proxies(ChunkMap.class) public interface ChunkMapProxy { @FieldGetter("worldGenContext") @@ -101,12 +103,14 @@ public class Reflection { void setWorldGenContext(ChunkMap instance, WorldGenContext worldGenContext); } + @Proxies(Holder.Reference.class) public interface HolderReferenceProxy { @MethodName("bindTags") void invokeBindTags(Holder.Reference instance, Collection> tags); } + @Proxies(HolderSet.Named.class) public interface HolderSetNamedProxy { @MethodName("bind") @@ -116,6 +120,7 @@ public class Reflection { List> invokeContents(HolderSet.Named instance); } + @Proxies(Biome.class) public interface BiomeProxy { @MethodName("getGrassColorFromTexture") diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/BiomeAdditionsSoundTemplate.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/BiomeAdditionsSoundTemplate.java index e328bf9b0..c1c44615a 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/BiomeAdditionsSoundTemplate.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/BiomeAdditionsSoundTemplate.java @@ -12,11 +12,11 @@ public class BiomeAdditionsSoundTemplate implements ObjectTemplate> { @Value("id") @Default private ResourceLocation id = null; - + @Override public EntityType get() { return BuiltInRegistries.ENTITY_TYPE.get(id).orElseThrow().value(); diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/MusicSoundTemplate.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/MusicSoundTemplate.java index e55b47783..e54a6d671 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/MusicSoundTemplate.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/MusicSoundTemplate.java @@ -12,19 +12,19 @@ public class MusicSoundTemplate implements ObjectTemplate { @Value("sound") @Default private SoundEvent sound = null; - + @Value("min-delay") @Default private Integer minDelay = null; - + @Value("max-delay") @Default private Integer maxDelay = null; - + @Value("replace-current-music") @Default private Boolean replaceCurrentMusic = null; - + @Override public Music get() { if(sound == null || minDelay == null || maxDelay == null || replaceCurrentMusic == null) { diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SoundEventTemplate.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SoundEventTemplate.java index 9598d5913..96dd5ae4b 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SoundEventTemplate.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SoundEventTemplate.java @@ -11,11 +11,11 @@ public class SoundEventTemplate implements ObjectTemplate { @Value("id") @Default private ResourceLocation id = null; - + @Value("distance-to-travel") @Default private Float distanceToTravel = null; - + @Override public SoundEvent get() { if(id == null) { diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnCostConfig.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnCostConfig.java index 0f98b1529..4c6b2002d 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnCostConfig.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnCostConfig.java @@ -10,27 +10,27 @@ public class SpawnCostConfig implements ObjectTemplate { @Value("type") @Default private EntityType type = null; - + @Value("mass") @Default private Double mass = null; - + @Value("gravity") @Default private Double gravity = null; - + public EntityType getType() { return type; } - + public Double getMass() { return mass; } - + public Double getGravity() { return gravity; } - + @Override public SpawnCostConfig get() { return this; diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnEntryConfig.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnEntryConfig.java index a78b809d2..467cd3188 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnEntryConfig.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnEntryConfig.java @@ -11,15 +11,15 @@ public class SpawnEntryConfig implements ObjectTemplate { @Value("type") @Default private EntityType type = null; - + @Value("weight") @Default private Integer weight = null; - + @Value("min-group-size") @Default private Integer minGroupSize = null; - + @Value("max-group-size") @Default private Integer maxGroupSize = null; @@ -31,7 +31,7 @@ public class SpawnEntryConfig implements ObjectTemplate { public SpawnerData getSpawnerData() { return new SpawnerData(type, minGroupSize, maxGroupSize); } - + @Override public SpawnEntryConfig get() { return this; diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnSettingsTemplate.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnSettingsTemplate.java index 850f80075..386dba7cf 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnSettingsTemplate.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnSettingsTemplate.java @@ -3,12 +3,13 @@ package com.dfsek.terra.bukkit.nms.v1_21_6.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import java.util.List; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.level.biome.MobSpawnSettings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.List; + public class SpawnSettingsTemplate implements ObjectTemplate { @@ -18,15 +19,15 @@ public class SpawnSettingsTemplate implements ObjectTemplate { @Value("spawns") @Default private List spawns = null; - + @Value("costs") @Default private List costs = null; - + @Value("probability") @Default private Float probability = null; - + @Override public MobSpawnSettings get() { MobSpawnSettings.Builder builder = new MobSpawnSettings.Builder(); @@ -42,7 +43,7 @@ public class SpawnSettingsTemplate implements ObjectTemplate { if(probability != null) { builder.creatureGenerationProbability(probability); } - + return builder.build(); } } diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnTypeConfig.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnTypeConfig.java index ce865d1d6..45f698c40 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnTypeConfig.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/SpawnTypeConfig.java @@ -3,9 +3,10 @@ package com.dfsek.terra.bukkit.nms.v1_21_6.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import java.util.List; import net.minecraft.world.entity.MobCategory; +import java.util.List; + public class SpawnTypeConfig implements ObjectTemplate { @Value("group") diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/VanillaBiomeProperties.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/VanillaBiomeProperties.java index 8eec35bf1..530779dbc 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/VanillaBiomeProperties.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/VanillaBiomeProperties.java @@ -3,9 +3,6 @@ package com.dfsek.terra.bukkit.nms.v1_21_6.config; import com.dfsek.tectonic.api.config.template.ConfigTemplate; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; - -import com.dfsek.terra.api.properties.Properties; - import net.minecraft.sounds.Music; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.entity.npc.VillagerType; @@ -16,6 +13,8 @@ import net.minecraft.world.level.biome.Biome.TemperatureModifier; import net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier; import net.minecraft.world.level.biome.MobSpawnSettings; +import com.dfsek.terra.api.properties.Properties; + public class VanillaBiomeProperties implements ConfigTemplate, Properties { @Value("colors.grass") diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/VillagerTypeTemplate.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/VillagerTypeTemplate.java index e38aebb5c..b354bb933 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/VillagerTypeTemplate.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/config/VillagerTypeTemplate.java @@ -12,7 +12,7 @@ public class VillagerTypeTemplate implements ObjectTemplate { @Value("id") @Default private ResourceLocation id = null; - + @Override public VillagerType get() { return BuiltInRegistries.VILLAGER_TYPE.get(id).orElseThrow().value(); diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java index 363a54dbc..c271f98cf 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java @@ -1,44 +1,48 @@ package com.dfsek.terra.cli; +import com.dfsek.seismic.type.vector.Vector2Int; import net.querz.mca.MCAUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import picocli.CommandLine; +import picocli.CommandLine.Command; +import picocli.CommandLine.Option; import java.io.IOException; import java.util.concurrent.Callable; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; -import com.dfsek.seismic.type.vector.Vector2Int; import com.dfsek.terra.cli.world.CLIWorld; -import picocli.CommandLine; -import picocli.CommandLine.Command; -import picocli.CommandLine.Option; - //TODO auto pull in version @Command(name = "TerraCLI", mixinStandardHelpOptions = true, version = "6.6.0", description = "Generates a Terra World and saves it in minecraft region format.") public final class TerraCLI implements Callable { - @Option(names = { "-s", "--size"}, description = "Number of regions to generate.") + @Option(names = { "-s", "--size" }, description = "Number of regions to generate.") private int size = 2; - @Option(names = { "-p", "--pack"}, description = "Config pack to use.") + @Option(names = { "-p", "--pack" }, description = "Config pack to use.") private String pack = "OVERWORLD"; - @Option(names = { "--seed"}, description = "Seed for world generation.") + @Option(names = { "--seed" }, description = "Seed for world generation.") private long seed = 0; - @Option(names = { "--max-height"}, description = "Maximum height of the world.") + @Option(names = { "--max-height" }, description = "Maximum height of the world.") private int maxHeight = 320; - @Option(names = { "--min-height"}, description = "Minimum height of the world.") + @Option(names = { "--min-height" }, description = "Minimum height of the world.") private int minHeight = -64; - @Option(names = { "--no-save"}, description = "Don't save the world to disk.") + @Option(names = { "--no-save" }, description = "Don't save the world to disk.") private boolean noSave = false; + public static void main(String... args) { + int exitCode = new CommandLine(new TerraCLI()).execute(args); + System.exit(exitCode); + } + @Override public Integer call() { Logger LOGGER = LoggerFactory.getLogger(TerraCLI.class); @@ -70,9 +74,4 @@ public final class TerraCLI implements Callable { LOGGER.info("Done."); return 0; } - - public static void main(String... args) { - int exitCode = new CommandLine(new TerraCLI()).execute(args); - System.exit(exitCode); - } } diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java index 4c01a8f0e..5fdf266ad 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java @@ -1,5 +1,7 @@ package com.dfsek.terra.cli.world; +import com.dfsek.seismic.type.vector.Vector2Int; +import com.dfsek.seismic.type.vector.Vector3; import com.google.common.collect.Streams; import net.querz.mca.MCAFile; import org.slf4j.Logger; @@ -22,8 +24,6 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.seismic.type.vector.Vector2Int; -import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; @@ -87,7 +87,7 @@ public class CLIWorld implements ServerWorld, NBTSerializable new ArrayList<>()).add( + com.dfsek.terra.mod.util.BiomeUtil.TERRA_BIOME_MAP.computeIfAbsent(vanilla.getKey().orElseThrow().getValue(), + i -> new ArrayList<>()).add( identifier); } } diff --git a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java index 2da66d2c9..69bcb1680 100644 --- a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java +++ b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java @@ -6,7 +6,6 @@ import net.minestom.server.command.builder.Command; import net.minestom.server.coordinate.Pos; import net.minestom.server.entity.GameMode; import net.minestom.server.event.player.AsyncPlayerConfigurationEvent; -import net.minestom.server.event.player.PlayerDisconnectEvent; import net.minestom.server.event.player.PlayerSpawnEvent; import net.minestom.server.instance.Instance; import net.minestom.server.instance.LightingChunk; @@ -22,9 +21,20 @@ import com.dfsek.terra.minestom.world.TerraMinestomWorld; public class TerraMinestomExample { private static final Logger logger = LoggerFactory.getLogger(TerraMinestomExample.class); private final MinecraftServer server = MinecraftServer.init(); + private final TerraMinestomPlatform platform = new TerraMinestomPlatform(); private Instance instance; private TerraMinestomWorld world; - private final TerraMinestomPlatform platform = new TerraMinestomPlatform(); + + public static void main(String[] args) { + TerraMinestomExample example = new TerraMinestomExample(); + example.createNewInstance(); + example.attachTerra(); + example.preloadWorldAndMeasure(); + example.addScheduler(); + example.addListeners(); + example.addCommands(); + example.bind(); + } public void createNewInstance() { instance = MinecraftServer.getInstanceManager().createInstanceContainer(); @@ -104,16 +114,6 @@ public class TerraMinestomExample { server.start("localhost", 25565); } - public static void main(String[] args) { - TerraMinestomExample example = new TerraMinestomExample(); - example.createNewInstance(); - example.attachTerra(); - example.preloadWorldAndMeasure(); - example.addScheduler(); - example.addListeners(); - example.addCommands(); - example.bind(); - } public class RegenerateCommand extends Command { public RegenerateCommand() { diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomAdapter.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomAdapter.java index 27c70b253..54d74ec10 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomAdapter.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomAdapter.java @@ -1,7 +1,6 @@ package com.dfsek.terra.minestom; import com.dfsek.seismic.type.vector.Vector3; - import net.minestom.server.coordinate.Point; import net.minestom.server.coordinate.Pos; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java index 527eb85be..c1c59076c 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java @@ -2,30 +2,6 @@ package com.dfsek.terra.minestom; import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.loader.type.TypeLoader; - -import com.dfsek.terra.AbstractPlatform; -import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; -import com.dfsek.terra.api.handle.ItemHandle; -import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.api.world.biome.PlatformBiome; -import com.dfsek.terra.minestom.addon.MinestomAddon; -import com.dfsek.terra.minestom.config.BiomeAdditionsSoundTemplate; -import com.dfsek.terra.minestom.config.BiomeParticleConfigTemplate; -import com.dfsek.terra.minestom.biome.MinestomBiomeLoader; -import com.dfsek.terra.minestom.config.KeyLoader; -import com.dfsek.terra.minestom.config.BiomeMoodSoundTemplate; -import com.dfsek.terra.minestom.config.RGBLikeLoader; -import com.dfsek.terra.minestom.config.SoundEventTemplate; -import com.dfsek.terra.minestom.entity.MinestomEntityType; -import com.dfsek.terra.minestom.item.MinestomItemHandle; -import com.dfsek.terra.minestom.world.MinestomChunkGeneratorWrapper; -import com.dfsek.terra.minestom.world.MinestomWorldHandle; - -import com.dfsek.terra.minestom.api.TerraMinestomWorldBuilder; - import net.kyori.adventure.key.Key; import net.kyori.adventure.util.RGBLike; import net.minestom.server.MinecraftServer; @@ -40,6 +16,28 @@ import java.io.File; import java.util.ArrayList; import java.util.List; +import com.dfsek.terra.AbstractPlatform; +import com.dfsek.terra.api.addon.BaseAddon; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.world.biome.PlatformBiome; +import com.dfsek.terra.minestom.addon.MinestomAddon; +import com.dfsek.terra.minestom.api.TerraMinestomWorldBuilder; +import com.dfsek.terra.minestom.biome.MinestomBiomeLoader; +import com.dfsek.terra.minestom.config.BiomeAdditionsSoundTemplate; +import com.dfsek.terra.minestom.config.BiomeMoodSoundTemplate; +import com.dfsek.terra.minestom.config.BiomeParticleConfigTemplate; +import com.dfsek.terra.minestom.config.KeyLoader; +import com.dfsek.terra.minestom.config.RGBLikeLoader; +import com.dfsek.terra.minestom.config.SoundEventTemplate; +import com.dfsek.terra.minestom.entity.MinestomEntityType; +import com.dfsek.terra.minestom.item.MinestomItemHandle; +import com.dfsek.terra.minestom.world.MinestomChunkGeneratorWrapper; +import com.dfsek.terra.minestom.world.MinestomWorldHandle; + public final class TerraMinestomPlatform extends AbstractPlatform { private static final Logger LOGGER = LoggerFactory.getLogger(TerraMinestomPlatform.class); @@ -48,7 +46,8 @@ public final class TerraMinestomPlatform extends AbstractPlatform { private final TypeLoader biomeTypeLoader; private final ArrayList platformAddons = new ArrayList<>(List.of(new MinestomAddon(this))); - public TerraMinestomPlatform(WorldHandle worldHandle, ItemHandle itemHandle, TypeLoader biomeTypeLoader, BaseAddon... extraAddons) { + public TerraMinestomPlatform(WorldHandle worldHandle, ItemHandle itemHandle, TypeLoader biomeTypeLoader, + BaseAddon... extraAddons) { this.worldHandle = worldHandle; this.itemHandle = itemHandle; this.biomeTypeLoader = biomeTypeLoader; @@ -68,8 +67,10 @@ public final class TerraMinestomPlatform extends AbstractPlatform { .registerLoader(PlatformBiome.class, biomeTypeLoader) .registerLoader(RGBLike.class, new RGBLikeLoader()) .registerLoader(Key.class, new KeyLoader()) - .registerLoader(EntityType.class, (TypeLoader) (annotatedType, o, configLoader, depthTracker) -> new MinestomEntityType((String) o)) - .registerLoader(BlockState.class, (TypeLoader) (annotatedType, o, configLoader, depthTracker) -> worldHandle.createBlockState((String) o)) + .registerLoader(EntityType.class, + (TypeLoader) (annotatedType, o, configLoader, depthTracker) -> new MinestomEntityType((String) o)) + .registerLoader(BlockState.class, + (TypeLoader) (annotatedType, o, configLoader, depthTracker) -> worldHandle.createBlockState((String) o)) .registerLoader(BiomeEffects.Particle.class, BiomeParticleConfigTemplate::new) .registerLoader(BiomeEffects.MoodSound.class, BiomeMoodSoundTemplate::new) .registerLoader(BiomeEffects.AdditionsSound.class, BiomeAdditionsSoundTemplate::new) diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/addon/MinestomAddon.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/addon/MinestomAddon.java index 4d4adc4b8..1dc3bc0cc 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/addon/MinestomAddon.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/addon/MinestomAddon.java @@ -2,20 +2,16 @@ package com.dfsek.terra.minestom.addon; import ca.solostudios.strata.Versions; import ca.solostudios.strata.version.Version; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.dfsek.terra.api.addon.BaseAddon; - import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.world.biome.Biome; - import com.dfsek.terra.minestom.TerraMinestomPlatform; - import com.dfsek.terra.minestom.config.VanillaBiomeProperties; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class MinestomAddon implements BaseAddon { private static final Version VERSION = Versions.getVersion(1, 0, 0); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/BlockEntityFactory.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/BlockEntityFactory.java index 6ea403ddf..83746ff55 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/BlockEntityFactory.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/BlockEntityFactory.java @@ -1,10 +1,10 @@ package com.dfsek.terra.minestom.api; -import com.dfsek.terra.api.block.entity.BlockEntity; - import net.minestom.server.coordinate.BlockVec; import org.jetbrains.annotations.Nullable; +import com.dfsek.terra.api.block.entity.BlockEntity; + /** * Represents a factory interface for creating instances of BlockEntity diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java index 30a04a172..7652a2473 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java @@ -1,20 +1,18 @@ package com.dfsek.terra.minestom.api; -import com.dfsek.terra.api.config.ConfigPack; - -import com.dfsek.terra.api.registry.CheckedRegistry; - -import com.dfsek.terra.minestom.TerraMinestomPlatform; -import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomeFactory; -import com.dfsek.terra.minestom.block.DefaultBlockEntityFactory; -import com.dfsek.terra.minestom.entity.DefaultEntityFactory; - -import com.dfsek.terra.minestom.world.TerraMinestomWorld; import net.minestom.server.instance.Instance; import java.util.Random; import java.util.function.Function; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.minestom.TerraMinestomPlatform; +import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomeFactory; +import com.dfsek.terra.minestom.block.DefaultBlockEntityFactory; +import com.dfsek.terra.minestom.entity.DefaultEntityFactory; +import com.dfsek.terra.minestom.world.TerraMinestomWorld; + public class TerraMinestomWorldBuilder { private final TerraMinestomPlatform platform; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiome.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiome.java index 54be04180..eb4a121a1 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiome.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiome.java @@ -1,10 +1,10 @@ package com.dfsek.terra.minestom.biome; -import com.dfsek.terra.api.world.biome.PlatformBiome; - import net.minestom.server.registry.RegistryKey; import net.minestom.server.world.biome.Biome; +import com.dfsek.terra.api.world.biome.PlatformBiome; + public class MinestomBiome implements PlatformBiome { private final RegistryKey biome; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java index e82e3ec10..21e4645b4 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java @@ -4,9 +4,6 @@ import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; import com.dfsek.tectonic.api.loader.ConfigLoader; import com.dfsek.tectonic.api.loader.type.TypeLoader; - -import com.dfsek.terra.api.world.biome.PlatformBiome; - import net.kyori.adventure.key.Key; import net.minestom.server.registry.RegistryKey; import org.intellij.lang.annotations.Subst; @@ -14,6 +11,9 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; +import com.dfsek.terra.api.world.biome.PlatformBiome; + + public class MinestomBiomeLoader implements TypeLoader { @Override public PlatformBiome load(@NotNull AnnotatedType annotatedType, @NotNull Object o, @NotNull ConfigLoader configLoader, diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomeFactory.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomeFactory.java index 2ef3d9044..644350d49 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomeFactory.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomeFactory.java @@ -1,9 +1,5 @@ package com.dfsek.terra.minestom.biome; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.minestom.api.BiomeFactory; -import com.dfsek.terra.minestom.config.VanillaBiomeProperties; - import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.color.Color; @@ -17,11 +13,25 @@ import org.jetbrains.annotations.NotNull; import java.util.Locale; import java.util.Objects; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.minestom.api.BiomeFactory; +import com.dfsek.terra.minestom.config.VanillaBiomeProperties; + public class MinestomUserDefinedBiomeFactory implements BiomeFactory { private final DynamicRegistry biomeRegistry = MinecraftServer.getBiomeRegistry(); private final @NotNull Biome plainsBiome = Objects.requireNonNull(biomeRegistry.get(Key.key("minecraft:plains"))); + private static T mergeNullable(T first, T second) { + if(first == null) return second; + return first; + } + + @Subst("value") + protected static String createBiomeID(ConfigPack pack, String biomeId) { + return pack.getID().toLowerCase() + "/" + biomeId.toLowerCase(Locale.ROOT); + } + @Override public UserDefinedBiome create(ConfigPack pack, com.dfsek.terra.api.world.biome.Biome source) { VanillaBiomeProperties properties = source.getContext().get(VanillaBiomeProperties.class); @@ -46,7 +56,7 @@ public class MinestomUserDefinedBiomeFactory implements BiomeFactory { .music(parentEffects.music()) .musicVolume(parentEffects.musicVolume()); - if (effectsBuilder.build().equals(BiomeEffects.PLAINS_EFFECTS)) { + if(effectsBuilder.build().equals(BiomeEffects.PLAINS_EFFECTS)) { effectsBuilder.fogColor(new Color(0xC0D8FE)); // circumvent a minestom bug } @@ -61,14 +71,4 @@ public class MinestomUserDefinedBiomeFactory implements BiomeFactory { RegistryKey registryKey = MinecraftServer.getBiomeRegistry().register(key, target); return new UserDefinedBiome(key, registryKey, source.getID(), target); } - - private static T mergeNullable(T first, T second) { - if (first == null) return second; - return first; - } - - @Subst("value") - protected static String createBiomeID(ConfigPack pack, String biomeId) { - return pack.getID().toLowerCase() + "/" + biomeId.toLowerCase(Locale.ROOT); - } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java index 138d98887..f5aee7fb8 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java @@ -1,11 +1,11 @@ package com.dfsek.terra.minestom.biome; +import java.util.HashMap; + import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.minestom.api.BiomeFactory; -import java.util.HashMap; - public class MinestomUserDefinedBiomePool { private final HashMap biomes = new HashMap<>(); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/DefaultBlockEntityFactory.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/DefaultBlockEntityFactory.java index 28712a4c0..a816ba441 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/DefaultBlockEntityFactory.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/DefaultBlockEntityFactory.java @@ -1,11 +1,11 @@ package com.dfsek.terra.minestom.block; -import com.dfsek.terra.api.block.entity.BlockEntity; -import com.dfsek.terra.minestom.api.BlockEntityFactory; - import net.minestom.server.coordinate.BlockVec; import net.minestom.server.instance.Instance; +import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.minestom.api.BlockEntityFactory; + public class DefaultBlockEntityFactory implements BlockEntityFactory { private final Instance instance; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockEntity.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockEntity.java index e96caf0d9..059bcf7f4 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockEntity.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockEntity.java @@ -1,15 +1,13 @@ package com.dfsek.terra.minestom.block; import com.dfsek.seismic.type.vector.Vector3; - -import com.dfsek.terra.api.block.entity.BlockEntity; - -import com.dfsek.terra.api.block.state.BlockState; - import net.minestom.server.coordinate.BlockVec; import net.minestom.server.instance.Instance; import net.minestom.server.instance.block.Block; +import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.state.BlockState; + public class MinestomBlockEntity implements BlockEntity { private final Instance instance; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java index d26470dae..f0a97590d 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java @@ -1,15 +1,15 @@ package com.dfsek.terra.minestom.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 net.minestom.server.instance.block.Block; import java.util.HashMap; import java.util.Objects; import java.util.stream.Collectors; +import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.block.state.properties.Property; + public class MinestomBlockState implements BlockState { private final Block block; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockType.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockType.java index 803f13bc3..e8602306f 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockType.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockType.java @@ -1,10 +1,10 @@ package com.dfsek.terra.minestom.block; +import net.minestom.server.instance.block.Block; + import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; -import net.minestom.server.instance.block.Block; - public class MinestomBlockType implements BlockType { private final Block block; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/CachedChunk.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/CachedChunk.java index c56336b20..5c0f030e4 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/CachedChunk.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/CachedChunk.java @@ -1,23 +1,16 @@ package com.dfsek.terra.minestom.chunk; -import com.dfsek.terra.api.block.state.BlockState; - -import com.dfsek.terra.api.util.Column; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.chunk.generation.ProtoChunk; -import com.dfsek.terra.minestom.biome.MinestomBiome; -import com.dfsek.terra.minestom.block.MinestomBlockState; - -import net.minestom.server.coordinate.Point; import net.minestom.server.instance.block.Block; -import net.minestom.server.instance.generator.GenerationUnit; import net.minestom.server.instance.generator.UnitModifier; import org.jetbrains.annotations.NotNull; import java.util.Arrays; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.world.chunk.generation.ProtoChunk; +import com.dfsek.terra.minestom.block.MinestomBlockState; + public class CachedChunk implements ProtoChunk { private final int minHeight; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/GeneratedChunkCache.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/GeneratedChunkCache.java index 38064b86f..a84477fef 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/GeneratedChunkCache.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/GeneratedChunkCache.java @@ -1,11 +1,5 @@ package com.dfsek.terra.minestom.chunk; -import com.dfsek.terra.api.util.generic.pair.Pair; - -import com.dfsek.terra.api.world.ServerWorld; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; - import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; import com.github.benmanes.caffeine.cache.stats.CacheStats; @@ -13,6 +7,11 @@ import net.minestom.server.world.DimensionType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.dfsek.terra.api.util.generic.pair.Pair; +import com.dfsek.terra.api.world.ServerWorld; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; + public class GeneratedChunkCache { private static final Logger log = LoggerFactory.getLogger(GeneratedChunkCache.class); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/TerraMinestomChunk.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/TerraMinestomChunk.java index fdcf01aa7..4056f9bf9 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/TerraMinestomChunk.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/chunk/TerraMinestomChunk.java @@ -1,18 +1,17 @@ package com.dfsek.terra.minestom.chunk; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.world.ServerWorld; -import com.dfsek.terra.api.world.chunk.Chunk; - -import com.dfsek.terra.minestom.block.MinestomBlockState; - import net.minestom.server.instance.block.Block; import org.jetbrains.annotations.NotNull; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.world.ServerWorld; +import com.dfsek.terra.api.world.chunk.Chunk; +import com.dfsek.terra.minestom.block.MinestomBlockState; + public class TerraMinestomChunk implements Chunk { - private net.minestom.server.instance.Chunk delegate; private final ServerWorld world; + private net.minestom.server.instance.Chunk delegate; public TerraMinestomChunk(net.minestom.server.instance.Chunk delegate, ServerWorld world) { this.delegate = delegate; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/KeyLoader.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/KeyLoader.java index 406e64674..64329307a 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/KeyLoader.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/KeyLoader.java @@ -20,7 +20,7 @@ public class KeyLoader implements TypeLoader { @NotNull ConfigLoader configLoader, DepthTracker depthTracker ) throws LoadException { - if(!(o instanceof @Subst("a:o") String stringKey)) { + if(!(o instanceof @Subst("a:o")String stringKey)) { throw new LoadException("Value is not a String", depthTracker); } try { diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/RGBLikeLoader.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/RGBLikeLoader.java index de998edb5..b89507d1f 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/RGBLikeLoader.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/RGBLikeLoader.java @@ -4,8 +4,6 @@ import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; import com.dfsek.tectonic.api.loader.ConfigLoader; import com.dfsek.tectonic.api.loader.type.TypeLoader; -import net.kyori.adventure.key.InvalidKeyException; -import net.kyori.adventure.key.Key; import net.kyori.adventure.util.RGBLike; import net.minestom.server.color.Color; import org.intellij.lang.annotations.Subst; @@ -22,7 +20,7 @@ public class RGBLikeLoader implements TypeLoader { @NotNull ConfigLoader configLoader, DepthTracker depthTracker ) throws LoadException { - if(!(o instanceof @Subst("a:o") Integer value)) { + if(!(o instanceof @Subst("a:o")Integer value)) { throw new LoadException("Value is not an integer", depthTracker); } return new Color(value); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/VanillaBiomeProperties.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/VanillaBiomeProperties.java index ea82cd7e2..14b91b5c1 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/VanillaBiomeProperties.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/config/VanillaBiomeProperties.java @@ -3,15 +3,14 @@ package com.dfsek.terra.minestom.config; import com.dfsek.tectonic.api.config.template.ConfigTemplate; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; - -import com.dfsek.terra.api.properties.Properties; - import net.kyori.adventure.util.RGBLike; import net.minestom.server.sound.SoundEvent; import net.minestom.server.world.biome.Biome.TemperatureModifier; import net.minestom.server.world.biome.BiomeEffects; import net.minestom.server.world.biome.BiomeEffects.GrassColorModifier; +import com.dfsek.terra.api.properties.Properties; + public class VanillaBiomeProperties implements ConfigTemplate, Properties { @Value("colors.grass") @@ -74,9 +73,9 @@ public class VanillaBiomeProperties implements ConfigTemplate, Properties { @Default private BiomeEffects.AdditionsSound additionsSound = null; -// @Value("sound.music") -// @Default -// private MusicSound music = null; + // @Value("sound.music") + // @Default + // private MusicSound music = null; public RGBLike getGrassColor() { return grassColor; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/DefaultEntityFactory.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/DefaultEntityFactory.java index 23226fc99..c25e86cf5 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/DefaultEntityFactory.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/DefaultEntityFactory.java @@ -1,10 +1,10 @@ package com.dfsek.terra.minestom.entity; -import com.dfsek.terra.minestom.api.EntityFactory; - import net.minestom.server.entity.Entity; import net.minestom.server.entity.EntityType; +import com.dfsek.terra.minestom.api.EntityFactory; + public class DefaultEntityFactory implements EntityFactory { @Override diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/DeferredMinestomEntity.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/DeferredMinestomEntity.java index 43179f730..965ab2050 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/DeferredMinestomEntity.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/DeferredMinestomEntity.java @@ -1,13 +1,13 @@ package com.dfsek.terra.minestom.entity; +import com.dfsek.seismic.type.vector.Vector3; +import net.minestom.server.coordinate.Pos; + import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.minestom.world.TerraMinestomWorld; -import net.minestom.server.coordinate.Pos; - public class DeferredMinestomEntity implements Entity { private final EntityType type; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntity.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntity.java index 055d16153..0818b19fa 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntity.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntity.java @@ -1,16 +1,15 @@ package com.dfsek.terra.minestom.entity; -import com.dfsek.terra.api.entity.EntityType; import com.dfsek.seismic.type.vector.Vector3; -import com.dfsek.terra.api.world.ServerWorld; - -import com.dfsek.terra.minestom.MinestomAdapter; -import com.dfsek.terra.minestom.world.TerraMinestomWorld; - import net.minestom.server.coordinate.Pos; import net.minestom.server.entity.Entity; import net.minestom.server.instance.Instance; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.world.ServerWorld; +import com.dfsek.terra.minestom.MinestomAdapter; +import com.dfsek.terra.minestom.world.TerraMinestomWorld; + public class MinestomEntity implements com.dfsek.terra.api.entity.Entity { private final Entity delegate; @@ -21,6 +20,13 @@ public class MinestomEntity implements com.dfsek.terra.api.entity.Entity { this.world = world; } + public static MinestomEntity spawn(double x, double y, double z, EntityType type, TerraMinestomWorld world) { + Instance instance = world.getHandle(); + Entity entity = world.getEntityFactory().createEntity(((MinestomEntityType) type).getHandle()); + entity.setInstance(instance, new Pos(x, y, z)); + return new MinestomEntity(entity, world); + } + @Override public Vector3 position() { return MinestomAdapter.adapt(delegate.getPosition()); @@ -45,11 +51,4 @@ public class MinestomEntity implements com.dfsek.terra.api.entity.Entity { public Object getHandle() { return delegate; } - - public static MinestomEntity spawn(double x, double y, double z, EntityType type, TerraMinestomWorld world) { - Instance instance = world.getHandle(); - Entity entity = world.getEntityFactory().createEntity(((MinestomEntityType) type).getHandle()); - entity.setInstance(instance, new Pos(x, y, z)); - return new MinestomEntity(entity, world); - } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java index 825fde33e..1efa1cbd5 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java @@ -2,6 +2,7 @@ package com.dfsek.terra.minestom.entity; import net.minestom.server.entity.EntityType; + public class MinestomEntityType implements com.dfsek.terra.api.entity.EntityType { private final EntityType delegate; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java index 75c0006f9..26ab94cac 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java @@ -1,8 +1,5 @@ package com.dfsek.terra.minestom.item; -import com.dfsek.terra.api.inventory.ItemStack; -import com.dfsek.terra.api.inventory.item.Enchantment; - import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.item.Material; @@ -11,6 +8,9 @@ import net.minestom.server.registry.RegistryKey; import java.util.Objects; +import com.dfsek.terra.api.inventory.ItemStack; +import com.dfsek.terra.api.inventory.item.Enchantment; + public class MinestomEnchantment implements Enchantment { private final net.minestom.server.item.enchant.Enchantment delegate; @@ -43,7 +43,7 @@ public class MinestomEnchantment implements Enchantment { DynamicRegistry registry = MinecraftServer.getEnchantmentRegistry(); RegistryKey otherKey = registry.getKey(otherDelegate); return delegate.exclusiveSet().contains(otherKey); - } catch (Exception e) { + } catch(Exception e) { // If the key approach fails, fall back to a more basic implementation String otherId = ((MinestomEnchantment) other).id; return otherId.equals(this.id); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemHandle.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemHandle.java index c31983ed3..dddc4c738 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemHandle.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemHandle.java @@ -1,14 +1,14 @@ package com.dfsek.terra.minestom.item; -import com.dfsek.terra.api.handle.ItemHandle; -import com.dfsek.terra.api.inventory.Item; -import com.dfsek.terra.api.inventory.item.Enchantment; - import net.minestom.server.MinecraftServer; import java.util.Set; import java.util.stream.Collectors; +import com.dfsek.terra.api.handle.ItemHandle; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.item.Enchantment; + public class MinestomItemHandle implements ItemHandle { @Override diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemMeta.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemMeta.java index 861a9549c..c239527ef 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemMeta.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemMeta.java @@ -1,11 +1,11 @@ package com.dfsek.terra.minestom.item; -import com.dfsek.terra.api.inventory.item.Enchantment; -import com.dfsek.terra.api.inventory.item.ItemMeta; - import java.util.HashMap; import java.util.Map; +import com.dfsek.terra.api.inventory.item.Enchantment; +import com.dfsek.terra.api.inventory.item.ItemMeta; + public class MinestomItemMeta implements ItemMeta { private final HashMap enchantments; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemStack.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemStack.java index 1d90e4896..04256c4c0 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemStack.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomItemStack.java @@ -1,10 +1,5 @@ package com.dfsek.terra.minestom.item; -import com.dfsek.terra.api.inventory.Item; - -import com.dfsek.terra.api.inventory.item.Enchantment; -import com.dfsek.terra.api.inventory.item.ItemMeta; - import net.minestom.server.MinecraftServer; import net.minestom.server.component.DataComponents; import net.minestom.server.item.ItemStack; @@ -16,6 +11,10 @@ import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.Objects; +import com.dfsek.terra.api.inventory.Item; +import com.dfsek.terra.api.inventory.item.Enchantment; +import com.dfsek.terra.api.inventory.item.ItemMeta; + public class MinestomItemStack implements com.dfsek.terra.api.inventory.ItemStack { private ItemStack base; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java index 77aa8777d..805fd3f6a 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java @@ -1,9 +1,10 @@ package com.dfsek.terra.minestom.item; +import net.minestom.server.item.Material; + import com.dfsek.terra.api.inventory.Item; import com.dfsek.terra.api.inventory.ItemStack; -import net.minestom.server.item.Material; public class MinestomMaterial implements Item { private final Material delegate; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java index 418f5de0c..4f20d6ec2 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java @@ -1,10 +1,15 @@ package com.dfsek.terra.minestom.world; +import net.minestom.server.coordinate.Point; +import net.minestom.server.instance.generator.GenerationUnit; +import net.minestom.server.instance.generator.Generator; +import net.minestom.server.instance.generator.UnitModifier; +import org.jetbrains.annotations.NotNull; + import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; - import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; import com.dfsek.terra.api.world.chunk.generation.util.GeneratorWrapper; import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool; @@ -12,23 +17,15 @@ import com.dfsek.terra.minestom.biome.UserDefinedBiome; import com.dfsek.terra.minestom.chunk.CachedChunk; import com.dfsek.terra.minestom.chunk.GeneratedChunkCache; -import net.minestom.server.MinecraftServer; -import net.minestom.server.coordinate.Point; -import net.minestom.server.entity.Player; -import net.minestom.server.instance.generator.GenerationUnit; -import net.minestom.server.instance.generator.Generator; -import net.minestom.server.instance.generator.UnitModifier; -import org.jetbrains.annotations.NotNull; - public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrapper { private final GeneratedChunkCache cache; - private ChunkGenerator generator; private final TerraMinestomWorld world; private final BiomeProvider biomeProvider; private final boolean doFineGrainedBiomes; - private ConfigPack pack; private final MinestomUserDefinedBiomePool biomePool; + private ChunkGenerator generator; + private ConfigPack pack; public MinestomChunkGeneratorWrapper( Platform platform, diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomProtoWorld.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomProtoWorld.java index e29cc5d76..44afc9353 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomProtoWorld.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomProtoWorld.java @@ -1,28 +1,21 @@ package com.dfsek.terra.minestom.world; +import net.minestom.server.instance.block.Block; +import net.minestom.server.instance.block.Block.Setter; + import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.ProtoWorld; import com.dfsek.terra.minestom.chunk.CachedChunk; import com.dfsek.terra.minestom.chunk.GeneratedChunkCache; - import com.dfsek.terra.minestom.entity.DeferredMinestomEntity; -import net.minestom.server.instance.block.Block; -import net.minestom.server.instance.block.Block.Setter; - -import java.lang.ref.WeakReference; -import java.util.HashMap; -import java.util.HashSet; -import java.util.WeakHashMap; - public class MinestomProtoWorld implements ProtoWorld { private final GeneratedChunkCache cache; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomWorldHandle.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomWorldHandle.java index 98429ab6d..777850952 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomWorldHandle.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomWorldHandle.java @@ -1,15 +1,14 @@ package com.dfsek.terra.minestom.world; +import net.minestom.server.instance.block.Block; +import org.jetbrains.annotations.NotNull; + 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.minestom.block.MinestomBlockState; import com.dfsek.terra.minestom.entity.MinestomEntityType; -import net.minestom.server.instance.block.Block; -import org.jetbrains.annotations.NotNull; - public class MinestomWorldHandle implements WorldHandle { private static final MinestomBlockState AIR = new MinestomBlockState(Block.AIR); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java index df38b5dd2..9e1529d90 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java @@ -1,27 +1,5 @@ package com.dfsek.terra.minestom.world; -import com.dfsek.terra.api.block.entity.BlockEntity; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.entity.Entity; -import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.world.ServerWorld; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.chunk.Chunk; - -import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; - -import com.dfsek.terra.api.world.info.WorldProperties; - -import com.dfsek.terra.minestom.TerraMinestomPlatform; -import com.dfsek.terra.minestom.api.BlockEntityFactory; -import com.dfsek.terra.minestom.api.EntityFactory; -import com.dfsek.terra.minestom.api.BiomeFactory; -import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomeFactory; -import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool; -import com.dfsek.terra.minestom.block.MinestomBlockState; -import com.dfsek.terra.minestom.entity.MinestomEntity; - import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.BlockVec; import net.minestom.server.coordinate.Point; @@ -31,6 +9,24 @@ import net.minestom.server.world.DimensionType; import java.util.function.Consumer; +import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.api.world.ServerWorld; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.chunk.Chunk; +import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; +import com.dfsek.terra.api.world.info.WorldProperties; +import com.dfsek.terra.minestom.TerraMinestomPlatform; +import com.dfsek.terra.minestom.api.BiomeFactory; +import com.dfsek.terra.minestom.api.BlockEntityFactory; +import com.dfsek.terra.minestom.api.EntityFactory; +import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool; +import com.dfsek.terra.minestom.block.MinestomBlockState; +import com.dfsek.terra.minestom.entity.MinestomEntity; + public final class TerraMinestomWorld implements ServerWorld, WorldProperties { private final Instance instance; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index e44230f61..8e27b67ff 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -67,7 +67,7 @@ public abstract class ModPlatform extends AbstractPlatform { }); getRawConfigRegistry() .forEach(pack -> { - PresetUtil.createDefault(pack, this, configPacksInMetaPack.contains(pack.getID())).apply(registerFunction); + PresetUtil.createDefault(pack, this, configPacksInMetaPack.contains(pack.getID())).apply(registerFunction); }); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryConfig.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryConfig.java index acc6b1784..79eebc357 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryConfig.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryConfig.java @@ -8,6 +8,7 @@ import net.minecraft.world.biome.SpawnSettings.SpawnEntry; import com.dfsek.terra.api.util.range.Range; + public class SpawnEntryConfig implements ObjectTemplate { @Value("type") @Default diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java index 66a8951f2..14ac01df9 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java @@ -3,7 +3,6 @@ package com.dfsek.terra.mod.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import net.minecraft.registry.Registries; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.util.Identifier; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/TerraBiomeSource.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/TerraBiomeSource.java index 97be6fc49..1d5910082 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/TerraBiomeSource.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/generation/TerraBiomeSource.java @@ -21,7 +21,6 @@ import com.mojang.serialization.MapCodec; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.source.BiomeSource; -import net.minecraft.world.biome.source.util.MultiNoiseUtil; import net.minecraft.world.biome.source.util.MultiNoiseUtil.MultiNoiseSampler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java index b22b3c49f..364f6fbb6 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java @@ -1,21 +1,14 @@ package com.dfsek.terra.mod.mixin.generalize; -import net.minecraft.registry.DynamicRegistryManager; -import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.server.MinecraftServer; import net.minecraft.server.WorldGenerationProgressListener; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.random.RandomSequencesState; -import net.minecraft.util.profiler.Profiler; -import net.minecraft.village.raid.RaidManager; -import net.minecraft.world.MutableWorldProperties; import net.minecraft.world.World; import net.minecraft.world.dimension.DimensionOptions; -import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionTypes; import net.minecraft.world.level.ServerWorldProperties; import net.minecraft.world.level.storage.LevelStorage; @@ -27,13 +20,16 @@ import org.spongepowered.asm.mixin.injection.Redirect; import java.util.List; import java.util.concurrent.Executor; -import java.util.function.Supplier; @Mixin(ServerWorld.class) public abstract class ServerWorldMixin extends World { - public ServerWorldMixin(MinecraftServer server, Executor workerExecutor, LevelStorage.Session session, ServerWorldProperties properties, RegistryKey worldKey, DimensionOptions dimensionOptions, WorldGenerationProgressListener worldGenerationProgressListener, boolean debugWorld, long seed, List spawners, boolean shouldTickTime, @Nullable RandomSequencesState randomSequencesState) { - super(properties, worldKey, server.getRegistryManager(), dimensionOptions.dimensionTypeEntry(), false, debugWorld, seed, server.getMaxChainedNeighborUpdates()); + public ServerWorldMixin(MinecraftServer server, Executor workerExecutor, LevelStorage.Session session, ServerWorldProperties properties, + RegistryKey worldKey, DimensionOptions dimensionOptions, + WorldGenerationProgressListener worldGenerationProgressListener, boolean debugWorld, long seed, + List spawners, boolean shouldTickTime, @Nullable RandomSequencesState randomSequencesState) { + super(properties, worldKey, server.getRegistryManager(), dimensionOptions.dimensionTypeEntry(), false, debugWorld, seed, + server.getMaxChainedNeighborUpdates()); } @Redirect(method = "", diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java index 10271cf33..002759eb4 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java @@ -55,7 +55,8 @@ public abstract class MobSpawnerBlockEntityMixin extends BlockEntity { public EntityType terra$getSpawnedType() { return (EntityType) Registries.ENTITY_TYPE.getEntry( - Identifier.tryParse(((MobSpawnerLogicAccessor) getLogic()).getSpawnEntry().getNbt().getString("id").orElseThrow())).orElseThrow(); + Identifier.tryParse(((MobSpawnerLogicAccessor) getLogic()).getSpawnEntry().getNbt().getString("id").orElseThrow())) + .orElseThrow(); } public void terra$setSpawnedType(@NotNull EntityType creatureType) { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/WorldChunkMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/WorldChunkMixin.java index 53317b7f5..4e92d76b2 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/WorldChunkMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/WorldChunkMixin.java @@ -18,7 +18,6 @@ package com.dfsek.terra.mod.mixin.implementations.terra.chunk; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.chunk.Chunk.TickSchedulers; import net.minecraft.world.chunk.WorldChunk; import net.minecraft.world.tick.OrderedTick; import org.jetbrains.annotations.NotNull; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/entity/EntityMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/entity/EntityMixin.java index dfe6d8d96..7bc47dc62 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/entity/EntityMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/entity/EntityMixin.java @@ -17,6 +17,7 @@ package com.dfsek.terra.mod.mixin.implementations.terra.entity; +import com.dfsek.seismic.type.vector.Vector3; import net.minecraft.entity.Entity; import net.minecraft.util.math.BlockPos; import org.spongepowered.asm.mixin.Implements; @@ -24,7 +25,6 @@ import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.mod.util.MinecraftAdapter; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java index 0fa4006cc..ee7864d3b 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/lifecycle/DataPackContentsMixin.java @@ -17,17 +17,15 @@ 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 com.dfsek.terra.mod.util.MinecraftUtil; -import com.dfsek.terra.mod.util.TagUtil; - import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; +import com.dfsek.terra.mod.util.MinecraftUtil; +import com.dfsek.terra.mod.util.TagUtil; + @Mixin(DataPackContents.class) public class DataPackContentsMixin { @@ -38,7 +36,11 @@ public class DataPackContentsMixin { /* * #refresh populates all tags in the registries */ - @Inject(method = "reload(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/registry/CombinedDynamicRegistries;Ljava/util/List;Lnet/minecraft/resource/featuretoggle/FeatureSet;Lnet/minecraft/server/command/CommandManager$RegistrationEnvironment;ILjava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;", at = @At("RETURN")) + @Inject(method = "reload(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/registry/CombinedDynamicRegistries;Ljava/util/List;" + + "Lnet/minecraft/resource/featuretoggle/FeatureSet;" + + "Lnet/minecraft/server/command/CommandManager$RegistrationEnvironment;ILjava/util/concurrent/Executor;" + + "Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;", + at = @At("RETURN")) private static void injectReload(ResourceManager resourceManager, CombinedDynamicRegistries dynamicRegistries, List> pendingTagLoads, FeatureSet enabledFeatures, diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/BiomeUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/BiomeUtil.java index b3ee4c774..fc8304d09 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/BiomeUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/BiomeUtil.java @@ -5,6 +5,7 @@ import net.minecraft.util.Identifier; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome.Builder; import net.minecraft.world.biome.BiomeEffects; +import net.minecraft.world.biome.GenerationSettings; import java.util.HashMap; import java.util.List; @@ -15,9 +16,6 @@ import java.util.Objects; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.mod.config.VanillaBiomeProperties; import com.dfsek.terra.mod.mixin.access.BiomeAccessor; -import com.dfsek.terra.mod.mixin.invoke.BiomeInvoker; - -import net.minecraft.world.biome.GenerationSettings; public class BiomeUtil { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java index 1bccff4e5..2704d5f59 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/DimensionUtil.java @@ -51,7 +51,9 @@ public class DimensionUtil { : TagKey.of(RegistryKeys.BLOCK, vanillaWorldProperties.getInfiniburn()), vanillaWorldProperties.getEffects() == null ? defaultDimension.effects() : vanillaWorldProperties.getEffects(), vanillaWorldProperties.getAmbientLight() == null ? defaultDimension.ambientLight() : vanillaWorldProperties.getAmbientLight(), - vanillaWorldProperties.getCloudHeight() == null ? defaultDimension.cloudHeight() : vanillaWorldProperties.getCloudHeight().describeConstable(), + vanillaWorldProperties.getCloudHeight() == null + ? defaultDimension.cloudHeight() + : vanillaWorldProperties.getCloudHeight().describeConstable(), monsterSettings ); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java index 24ab38971..cb6f5c52c 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftAdapter.java @@ -17,13 +17,13 @@ package com.dfsek.terra.mod.util; +import com.dfsek.seismic.type.vector.Vector3; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.random.Random; import net.minecraft.world.HeightLimitView; import java.util.random.RandomGenerator; -import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.api.world.info.WorldProperties; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java index cef3c33c5..822e7cd89 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/MinecraftUtil.java @@ -43,7 +43,7 @@ public final class MinecraftUtil { public static Optional> getEntry(Registry registry, Identifier identifier) { return registry.getOptionalValue(identifier) - .flatMap(id -> Optional.ofNullable(registry.getEntry(id))); + .flatMap(id -> Optional.ofNullable(registry.getEntry(id))); } public static BlockEntity createState(WorldAccess worldAccess, BlockPos pos) { @@ -79,8 +79,8 @@ public final class MinecraftUtil { } private static void registerFlora(com.dfsek.terra.api.world.biome.Biome biome, ConfigPack pack, - com.dfsek.terra.api.registry.key.RegistryKey id, - Registry biomeRegistry) { + com.dfsek.terra.api.registry.key.RegistryKey id, + Registry biomeRegistry) { RegistryKey vanillaKey = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(biomeRegistry); biomeRegistry.getOptionalValue(vanillaKey) .ifPresentOrElse(vanillaBiome -> { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index f18c93632..0b5b5401f 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -27,8 +27,8 @@ import java.util.Locale; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.MetaPack; -import com.dfsek.terra.api.util.range.ConstantRange; import com.dfsek.terra.api.util.generic.pair.Pair; +import com.dfsek.terra.api.util.range.ConstantRange; import com.dfsek.terra.mod.ModPlatform; import com.dfsek.terra.mod.config.VanillaWorldProperties; import com.dfsek.terra.mod.generation.GenerationSettings; @@ -146,13 +146,15 @@ public class PresetUtil { Registry multiNoiseBiomeSourceParameterLists, Registry biomeRegistry, HashMap, DimensionOptions> map) { if(!map.containsKey(DimensionOptions.OVERWORLD)) { - RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.OVERWORLD)); + RegistryEntry overworldDimensionType = dimensionTypeRegistry.getEntry( + dimensionTypeRegistry.get(DimensionTypes.OVERWORLD)); RegistryEntry overworldChunkBiomeReference = multiNoiseBiomeSourceParameterLists.getEntry(multiNoiseBiomeSourceParameterLists.get( MultiNoiseBiomeSourceParameterLists.OVERWORLD)); - RegistryEntry overworldChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get( + RegistryEntry overworldChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry( + chunkGeneratorSettingsRegistry.get( ChunkGeneratorSettings.OVERWORLD)); @@ -161,13 +163,15 @@ public class PresetUtil { map.put(DimensionOptions.OVERWORLD, overworldDimensionOptions); } if(!map.containsKey(DimensionOptions.NETHER)) { - RegistryEntry netherDimensionType = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.THE_NETHER)); + RegistryEntry netherDimensionType = dimensionTypeRegistry.getEntry( + dimensionTypeRegistry.get(DimensionTypes.THE_NETHER)); RegistryEntry netherChunkBiomeReference = multiNoiseBiomeSourceParameterLists.getEntry(multiNoiseBiomeSourceParameterLists.get( MultiNoiseBiomeSourceParameterLists.NETHER)); - RegistryEntry netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get( + RegistryEntry netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry( + chunkGeneratorSettingsRegistry.get( ChunkGeneratorSettings.NETHER)); DimensionOptions overworldDimensionOptions = new DimensionOptions(netherDimensionType, @@ -175,9 +179,11 @@ public class PresetUtil { map.put(DimensionOptions.NETHER, overworldDimensionOptions); } if(!map.containsKey(DimensionOptions.END)) { - RegistryEntry endDimensionType = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.THE_END)); + RegistryEntry endDimensionType = dimensionTypeRegistry.getEntry( + dimensionTypeRegistry.get(DimensionTypes.THE_END)); - RegistryEntry endChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get( + RegistryEntry endChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry( + chunkGeneratorSettingsRegistry.get( ChunkGeneratorSettings.END)); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java index be5af0133..9fc1ab71d 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java @@ -3,9 +3,6 @@ package com.dfsek.terra.lifecycle; import ca.solostudios.strata.Versions; import ca.solostudios.strata.parser.tokenizer.ParseException; import ca.solostudios.strata.version.Version; - -import com.dfsek.terra.api.util.reflection.ReflectionUtil; - import net.minecraft.MinecraftVersion; import net.minecraft.enchantment.Enchantment; import net.minecraft.registry.DynamicRegistryManager; @@ -45,10 +42,12 @@ public abstract class LifecyclePlatform extends ModPlatform { private int generationThreads; public LifecyclePlatform() { - generationThreads = getGenerationThreadsWithReflection("com.ishland.c2me.base.common.GlobalExecutors", "GLOBAL_EXECUTOR_PARALLELISM", "C2ME"); - if (generationThreads == 0) { + generationThreads = getGenerationThreadsWithReflection("com.ishland.c2me.base.common.GlobalExecutors", + "GLOBAL_EXECUTOR_PARALLELISM", "C2ME"); + if(generationThreads == 0) { generationThreads = getMoonriseGenerationThreadsWithReflection(); - } if (generationThreads == 0) { + } + if(generationThreads == 0) { generationThreads = 1; } CommonPlatform.initialize(this); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java index 47fe9a9ca..8e9c02086 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java @@ -1,5 +1,7 @@ package com.dfsek.terra.lifecycle.mixin; +import com.dfsek.terra.mod.util.SeedHack; + import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.util.math.noise.DoublePerlinNoiseSampler; import net.minecraft.world.biome.source.util.MultiNoiseUtil.MultiNoiseSampler; @@ -12,8 +14,6 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import com.dfsek.terra.mod.util.SeedHack; - /** * Hack to map noise sampler to seeds diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/MinecraftServerMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/MinecraftServerMixin.java index e52b0fdab..25ac340d0 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/MinecraftServerMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/MinecraftServerMixin.java @@ -1,8 +1,5 @@ package com.dfsek.terra.lifecycle.mixin.lifecycle; -import com.dfsek.terra.mod.CommonPlatform; -import com.dfsek.terra.mod.ModPlatform; - import com.mojang.datafixers.DataFixer; import net.minecraft.resource.ResourcePackManager; import net.minecraft.server.MinecraftServer; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java index 625aa3e88..d0a50afea 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java @@ -1,16 +1,15 @@ package com.dfsek.terra.lifecycle.mixin.lifecycle; -import com.dfsek.terra.mod.CommonPlatform; -import com.dfsek.terra.mod.ModPlatform; - +import com.llamalad7.mixinextras.sugar.Local; import net.minecraft.enchantment.Enchantment; +import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.registry.MutableRegistry; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryLoader; -import net.minecraft.registry.RegistryLoader.Loader; import net.minecraft.registry.RegistryWrapper; +import net.minecraft.resource.ResourceManager; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList; import net.minecraft.world.dimension.DimensionType; @@ -24,57 +23,50 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Coerce; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; - -import com.llamalad7.mixinextras.sugar.Local; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Coerce; -import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import net.minecraft.registry.DynamicRegistryManager; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.RegistryLoader; -import net.minecraft.registry.RegistryWrapper; -import net.minecraft.resource.ResourceManager; - import java.util.List; import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.function.Consumer; import com.dfsek.terra.lifecycle.LifecyclePlatform; import com.dfsek.terra.lifecycle.util.LifecycleUtil; import com.dfsek.terra.lifecycle.util.RegistryHack; +import com.dfsek.terra.mod.CommonPlatform; +import com.dfsek.terra.mod.ModPlatform; @Mixin(RegistryLoader.class) public class RegistryLoaderMixin { + @Unique + private static final AtomicBoolean LOADING_DYNAMIC_REGISTRIES = new AtomicBoolean(false); @Shadow @Final private static Logger LOGGER; - @Unique - private static final AtomicBoolean LOADING_DYNAMIC_REGISTRIES = new AtomicBoolean(false); - - @Inject(method = "loadFromResource(Lnet/minecraft/resource/ResourceManager;Ljava/util/List;Ljava/util/List;)Lnet/minecraft/registry/DynamicRegistryManager$Immutable;", at = @At("HEAD")) - private static void loadFromResources(ResourceManager resourceManager, List> registries, List> entries, CallbackInfoReturnable cir) { + @Inject(method = "loadFromResource(Lnet/minecraft/resource/ResourceManager;Ljava/util/List;Ljava/util/List;)" + + "Lnet/minecraft/registry/DynamicRegistryManager$Immutable;", + at = @At("HEAD")) + private static void loadFromResources(ResourceManager resourceManager, List> registries, + List> entries, + CallbackInfoReturnable cir) { LOADING_DYNAMIC_REGISTRIES.set(entries.stream().anyMatch(entry -> entry.key() == RegistryKeys.BIOME)); } @Inject( - method = "load(Lnet/minecraft/registry/RegistryLoader$RegistryLoadable;Ljava/util/List;Ljava/util/List;)Lnet/minecraft/registry/DynamicRegistryManager$Immutable;", + method = "load(Lnet/minecraft/registry/RegistryLoader$RegistryLoadable;Ljava/util/List;Ljava/util/List;)" + + "Lnet/minecraft/registry/DynamicRegistryManager$Immutable;", at = @At( value = "INVOKE", target = "Ljava/util/List;forEach(Ljava/util/function/Consumer;)V", ordinal = 1 ) ) - private static void beforeFreeze(@Coerce Object loadable, List> wrappers, List> entries, CallbackInfoReturnable cir, @Local(ordinal = 2) List> registriesList) { - if (LOADING_DYNAMIC_REGISTRIES.getAndSet(false)) { + private static void beforeFreeze(@Coerce Object loadable, List> wrappers, List> entries, + CallbackInfoReturnable cir, + @Local(ordinal = 2) List> registriesList) { + if(LOADING_DYNAMIC_REGISTRIES.getAndSet(false)) { ModPlatform platform = CommonPlatform.get(); platform.getRawConfigRegistry().clear(); MutableRegistry biomes = extractRegistry(registriesList, RegistryKeys.BIOME).orElseThrow(); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java index 98aa4d27f..a7bf93453 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java @@ -19,10 +19,14 @@ public class SaveLoadingMixin { "Ljava/util/concurrent/CompletableFuture;", at = @At( value = "INVOKE", - target = "Lnet/minecraft/server/DataPackContents;reload(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/registry/CombinedDynamicRegistries;Ljava/util/List;Lnet/minecraft/resource/featuretoggle/FeatureSet;Lnet/minecraft/server/command/CommandManager$RegistrationEnvironment;ILjava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"), + target = "Lnet/minecraft/server/DataPackContents;reload(Lnet/minecraft/resource/ResourceManager;" + + "Lnet/minecraft/registry/CombinedDynamicRegistries;Ljava/util/List;Lnet/minecraft/resource/featuretoggle/FeatureSet;" + + "Lnet/minecraft/server/command/CommandManager$RegistrationEnvironment;ILjava/util/concurrent/Executor;" + + "Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"), index = 1 ) - private static CombinedDynamicRegistries grabManager(CombinedDynamicRegistries dynamicRegistries) { + private static CombinedDynamicRegistries grabManager( + CombinedDynamicRegistries dynamicRegistries) { MinecraftUtil.registerFlora(dynamicRegistries.getCombinedRegistryManager().getOrThrow(RegistryKeys.BIOME)); return dynamicRegistries; } diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/LifecycleBiomeUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/LifecycleBiomeUtil.java index 27fb08f27..f9fcd0f72 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/LifecycleBiomeUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/LifecycleBiomeUtil.java @@ -1,7 +1,5 @@ package com.dfsek.terra.lifecycle.util; -import com.dfsek.terra.mod.util.BiomeUtil; - import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; @@ -21,6 +19,7 @@ import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; import com.dfsek.terra.mod.config.ProtoPlatformBiome; import com.dfsek.terra.mod.config.VanillaBiomeProperties; import com.dfsek.terra.mod.mixin.access.VillagerTypeAccessor; +import com.dfsek.terra.mod.util.BiomeUtil; import com.dfsek.terra.mod.util.MinecraftUtil; @@ -51,7 +50,7 @@ public final class LifecycleBiomeUtil { Registry registry) { RegistryKey vanilla = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(registry); - if (vanilla == null) { + if(vanilla == null) { logger.error(""" Failed to get Vanilla Biome Regiestry key! Terra Biome ID: {} @@ -65,9 +64,9 @@ public final class LifecycleBiomeUtil { net.minecraft.world.biome.Biome vanilaBiome = registry.get(vanilla); - if (vanilaBiome == null) { + if(vanilaBiome == null) { String vanillaBiomeName; - if (vanilla != null ) { + if(vanilla != null) { vanillaBiomeName = vanilla.getValue().toString(); } else { vanillaBiomeName = "NULL"; @@ -94,7 +93,8 @@ public final class LifecycleBiomeUtil { minecraftBiome)); } - Map, RegistryKey> villagerMap = VillagerTypeAccessor.getBiomeTypeToIdMap(); + Map, RegistryKey> villagerMap = + VillagerTypeAccessor.getBiomeTypeToIdMap(); villagerMap.put(RegistryKey.of(RegistryKeys.BIOME, identifier), Objects.requireNonNullElse(vanillaBiomeProperties.getVillagerType(), diff --git a/platforms/mixin-lifecycle/src/main/resources/terra.lifecycle.mixins.json b/platforms/mixin-lifecycle/src/main/resources/terra.lifecycle.mixins.json index 26e9f9006..29f4f61a6 100644 --- a/platforms/mixin-lifecycle/src/main/resources/terra.lifecycle.mixins.json +++ b/platforms/mixin-lifecycle/src/main/resources/terra.lifecycle.mixins.json @@ -1,21 +1,21 @@ { - "required": true, - "minVersion": "0.8", - "package": "com.dfsek.terra.lifecycle.mixin", - "compatibilityLevel": "JAVA_21", - "mixins": [ - "NoiseConfigMixin", - "RegistryEntryReferenceInvoker", - "RegistryMixin", - "SimpleRegistryMixin", - "lifecycle.MinecraftServerMixin", - "lifecycle.RegistryLoaderMixin", - "lifecycle.SaveLoadingMixin" - ], - "server": [ - ], - "injectors": { - "defaultRequire": 1 - }, - "refmap": "terra.lifecycle.refmap.json" + "required": true, + "minVersion": "0.8", + "package": "com.dfsek.terra.lifecycle.mixin", + "compatibilityLevel": "JAVA_21", + "mixins": [ + "NoiseConfigMixin", + "RegistryEntryReferenceInvoker", + "RegistryMixin", + "SimpleRegistryMixin", + "lifecycle.MinecraftServerMixin", + "lifecycle.RegistryLoaderMixin", + "lifecycle.SaveLoadingMixin" + ], + "server": [ + ], + "injectors": { + "defaultRequire": 1 + }, + "refmap": "terra.lifecycle.refmap.json" } \ No newline at end of file From a79a34776576a7172a524ae602ea5390519173e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Wed, 18 Jun 2025 13:10:38 -0600 Subject: [PATCH 083/116] temp fix tesf test file --- .../src/test/resources/test.tesf | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/common/addons/structure-terrascript-loader/src/test/resources/test.tesf b/common/addons/structure-terrascript-loader/src/test/resources/test.tesf index 50d5bef3a..8bcce7177 100644 --- a/common/addons/structure-terrascript-loader/src/test/resources/test.tesf +++ b/common/addons/structure-terrascript-loader/src/test/resources/test.tesf @@ -1,84 +1,84 @@ -bool thing1 = 2 > (2 +2) || false; +bool thing1 = 2 > (2+2) || false; -if (2 > 2 || 3 +4 <= 2 && 4 +5 > 2 / 3) { +if(2 > 2 || 3 + 4 <= 2 && 4 + 5 > 2 / 3) { test("ok", 2); } -test("minecraft:green_w" +"ool", (2 * (3 +1) * (2 * (1 +1)))); +test("minecraft:green_w" + "ool", (2 * (3+1) * (2 * (1+1)))); // num testVar = 3.4; bool boolean = true; str stringVar = "hello!"; -num precedence = 3 +2 * 2 +3; -test("precedence: " +precedence, 2); -num precedence2 = 3 * 2 +2 * 3; -test("precedence 2: " +precedence2, 2); +num precedence = 3 + 2 * 2 + 3; +test("precedence: " + precedence, 2); +num precedence2 = 3 * 2 + 2 * 3; +test("precedence 2: " + precedence2, 2); bool iftest = false; bool truetest = false; num iterator = 0; -num thing = 4 -2 -2 +2 -2 +2; -test("4 - 2 = " +thing, 2); +num thing = 4 - 2-2+2-2+2; +test("4 - 2 = " + thing, 2); thing = -2; -test("-2 = " +thing, 2); +test("-2 = " + thing, 2); thing = -thing; -test("--2 = " +thing, 2); +test("--2 = " + thing, 2); -for (num i = 0; i < 5; i = i +1) { - test("i = " +i, iterator); - if (i > 1 +1) { +for(num i = 0; i < 5; i = i + 1) { + test("i = " + i, iterator); + if(i > 1 + 1) { test("more than 2", iterator); continue; } } -for (num i = 0; i < 5; i = i +1) { - test("i = " +i, iterator); +for(num i = 0; i < 5; i = i + 1) { + test("i = " + i, iterator); } -for (num j = 0; j < 5; j = j +1) test("single statement j = " +j, iterator); +for(num j = 0; j < 5; j = j + 1) test("single statement j = " + j, iterator); -if (4 +2 == 2 +4) { - test("new thing " +2, iterator); +if(4 + 2 == 2 + 4) { + test("new thing " + 2, iterator); } -while (iterator < 5) { - test("always, even after " +2, iterator); - iterator = iterator +1; - if (iterator > 2) { +while(iterator < 5) { + test("always, even after " + 2, iterator); + iterator = iterator + 1; + if(iterator > 2) { continue; } - test("not after " +2, iterator); + test("not after " + 2, iterator); } -if (true) test("single statement" +2, iterator); -else if (true) test("another single statement" +2, iterator); +if(true) test("single statement" + 2, iterator); +else if(true) test("another single statement" + 2, iterator); -if (true) { - test("true!" +2, iterator); +if(true) { + test("true!" + 2, iterator); } else { - test("false!" +2, iterator); + test("false!" + 2, iterator); + } + +if(false) { + test("true!" + 2, iterator); +} else { + test("false!" + 2, iterator); } -if (false) { - test("true!" +2, iterator); +if(false) { + test("true again!" + 2, iterator); +} else if(true == true) { + test("false again!" + 2, iterator); } else { - test("false!" +2, iterator); -} - -if (false) { - test("true again!" +2, iterator); -} else if (true == true) { - test("false again!" +2, iterator); -} else { - test("not logged!" +2, iterator); + test("not logged!" + 2, iterator); } @@ -87,11 +87,11 @@ if (false) { /* fsdfsd -* / +*/ test("fdsgdf" + 2, 1 + testVar); -if (true && !(boolean && false) && true) { -num scopedVar = 2; -test("if statement" + 2 +stringVar, 1 + testVar + scopedVar); +if(true && !(boolean && false) && true) { + num scopedVar = 2; + test("if statement" + 2 + stringVar, 1 + testVar + scopedVar); } \ No newline at end of file From 46f533ca9d273aa265cb58be8f02c50784fdd865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Wed, 25 Jun 2025 00:38:24 -0600 Subject: [PATCH 084/116] Perf opts --- .../biome/extrusion/BiomeExtrusionProvider.java | 8 ++++---- .../com/dfsek/terra/api/properties/Context.java | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java index 621c2d37a..bc658c8ca 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java @@ -14,14 +14,14 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class BiomeExtrusionProvider implements BiomeProvider { private final BiomeProvider delegate; private final Set biomes; - private final List extrusions; + private final Extrusion[] extrusions; private final int resolution; public BiomeExtrusionProvider(BiomeProvider delegate, List extrusions, int resolution) { this.delegate = delegate; this.biomes = delegate.stream().collect(Collectors.toSet()); extrusions.forEach(e -> biomes.addAll(e.getBiomes())); - this.extrusions = extrusions; + this.extrusions = extrusions.toArray(new Extrusion[0]); this.resolution = resolution; } @@ -33,8 +33,8 @@ public class BiomeExtrusionProvider implements BiomeProvider { } public Biome extrude(Biome original, int x, int y, int z, long seed) { - for(Extrusion extrusion : extrusions) { - original = extrusion.extrude(original, x, y, z, seed); + for(int i = 0; i < extrusions.length; i++) { + original = extrusions[i].extrude(original, x, y, z, seed); } return original; } 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 index b840711f0..e5660d537 100644 --- 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 @@ -17,7 +17,7 @@ public class Context { private static final AtomicInteger size = new AtomicInteger(0); private static final Map, PropertyKey> properties = new HashMap<>(); private final Map, Properties> map = new HashMap<>(); - private final AtomicReference list = new AtomicReference<>(new Properties[size.get()]); + private Properties[] list = new Properties[size.get()]; @SuppressWarnings("unchecked") public static PropertyKey create(Class clazz) { @@ -38,19 +38,19 @@ public class Context { return this; } - public Context put(PropertyKey key, T properties) { - list.updateAndGet(p -> { - if(p.length == size.get()) return p; + public synchronized Context put(PropertyKey key, T properties) { + if(list.length != size.get()) { Properties[] p2 = new Properties[size.get()]; - System.arraycopy(p, 0, p2, 0, p.length); - return p2; - })[key.key] = properties; + System.arraycopy(list, 0, p2, 0, list.length); + list = p2; + } + list[key.key] = properties; return this; } @SuppressWarnings("unchecked") public T get(PropertyKey key) { - return (T) list.get()[key.key]; + return (T) list[key.key]; } public boolean has(Class test) { From a06c6fd9804959271115b5e437da2c681b318e40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Sat, 28 Jun 2025 15:46:28 -0600 Subject: [PATCH 085/116] Use Seismic function for perf --- .../addons/biome/pipeline/PipelineBiomeProvider.java | 4 ++-- .../addons/biome/pipeline/pipeline/BiomeChunkImpl.java | 4 +++- .../math/interpolation/LazilyEvaluatedInterpolator.java | 5 +++-- .../java/com/dfsek/terra/addons/ore/ores/VanillaOre.java | 7 ++++++- .../terra/addons/image/operator/DistanceTransform.java | 4 ++-- .../terrascript/script/functions/GetMarkFunction.java | 7 +++---- .../terrascript/script/functions/SetMarkFunction.java | 9 ++++----- 7 files changed, 23 insertions(+), 17 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java index d2e6f762b..5344cf8fe 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java @@ -82,8 +82,8 @@ public class PipelineBiomeProvider implements BiomeProvider { public Biome getBiome(int x, int z, long seed) { - x += mutator.getSample(seed + 1, x, z) * noiseAmp; - z += mutator.getSample(seed + 2, x, z) * noiseAmp; + x += (int) (mutator.getSample(seed + 1, x, z) * noiseAmp); + z += (int) (mutator.getSample(seed + 2, x, z) * noiseAmp); x /= resolution; z /= resolution; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java index 678190896..8fa8ab651 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java @@ -2,6 +2,8 @@ package com.dfsek.terra.addons.biome.pipeline.pipeline; import java.util.List; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; + import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; import com.dfsek.terra.addons.biome.pipeline.api.Expander; import com.dfsek.terra.addons.biome.pipeline.api.Stage; @@ -98,7 +100,7 @@ public class BiomeChunkImpl implements BiomeChunk { // chunk samples points on the same overall grid. // Without this, shared chunk borders (required because of adjacent cell reads) will not be identical // because points would be sampled on grids at different offsets, resulting in artifacts at borders. - return (int) Math.ceil((double) finalGridOrigin / initialGridInterval) * initialGridInterval; + return FloatingPointFunctions.ceil((double) finalGridOrigin / initialGridInterval) * initialGridInterval; } private static int calculateFinalGridOrigin(int totalExpanderCount, List stages) { diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java index dcab4df14..947387298 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.seismic.math.numericanalysis.interpolation.InterpolationFunctions; import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties; @@ -28,8 +29,8 @@ public class LazilyEvaluatedInterpolator { PropertyKey noisePropertiesKey, int min, int horizontalRes, int verticalRes, long seed) { this.noisePropertiesKey = noisePropertiesKey; - int hSamples = (int) Math.ceil(16.0 / horizontalRes); - int vSamples = (int) Math.ceil((double) (max - min) / verticalRes); + int hSamples = FloatingPointFunctions.ceil(16.0 / horizontalRes); + int vSamples = FloatingPointFunctions.ceil((double) (max - min) / verticalRes); this.zMul = (hSamples + 1); this.yMul = zMul * zMul; samples = new Double[yMul * (vSamples + 1)]; 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 ebe909948..4a84ca0cc 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 @@ -7,6 +7,11 @@ package com.dfsek.terra.addons.ore.ores; +import java.util.BitSet; +import java.util.Map; +import java.util.random.RandomGenerator; + +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.seismic.math.numericanalysis.interpolation.InterpolationFunctions; import com.dfsek.seismic.math.trigonometry.TrigonometryFunctions; import com.dfsek.seismic.type.Rotation; @@ -104,7 +109,7 @@ public class VanillaOre implements Structure { } } - int outset = (int) Math.ceil((size / 16.0F * 2.0F + 1.0F) / 2.0F); + int outset = FloatingPointFunctions.ceil((size / 16.0F * 2.0F + 1.0F) / 2.0F); int x = (int) (location.getX() - Math.ceil(eighthSize) - outset); int y = location.getY() - 2 - outset; int z = (int) (location.getZ() - Math.ceil(eighthSize) - outset); diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java index e1a2f2234..c57cd9d5c 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.image.operator; -import com.dfsek.seismic.type.sampler.Sampler; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.util.ColorUtil; @@ -233,7 +233,7 @@ public class DistanceTransform { @Override public double getSample(long seed, double x, double y) { if(x < 0 || y < 0 || x >= transform.width || y >= transform.height) return transform.minDistance; - return transform.distances[(int) Math.floor(x)][(int) Math.floor(y)]; + return transform.distances[FloatingPointFunctions.floor(x)][FloatingPointFunctions.floor(y)]; } @Override 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 5191f5dd9..17d65ecd3 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 @@ -7,8 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -35,9 +34,9 @@ public class GetMarkFunction implements Function { Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); - String mark = arguments.getMark(Vector3.of((int) Math.floor(xz.getX()), (int) Math.floor( + String mark = arguments.getMark(Vector3.of(FloatingPointFunctions.floor(xz.getX()), FloatingPointFunctions.floor( y.apply(implementationArguments, scope).doubleValue()), - (int) Math.floor(xz.getZ())) + FloatingPointFunctions.floor(xz.getZ())) .mutable() .add(arguments.getOrigin().toFloat()) .immutable()); 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 3fdf98efb..09a0fa147 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 @@ -7,8 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -38,10 +37,10 @@ public class SetMarkFunction implements Function { z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); - arguments.setMark(Vector3.of((int) Math.floor(xz.getX()), - (int) Math.floor( + arguments.setMark(Vector3.of(FloatingPointFunctions.floor(xz.getX()), + FloatingPointFunctions.floor( y.apply(implementationArguments, scope).doubleValue()), - (int) Math.floor(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(), + FloatingPointFunctions.floor(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(), mark.apply(implementationArguments, scope)); return null; } From 77b196075788810b142e3422c450b03776eceab2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Sat, 28 Jun 2025 15:47:02 -0600 Subject: [PATCH 086/116] Use seismic func for perf 2 --- .../generation/math/samplers/Sampler3D.java | 4 +++- .../terrascript/script/functions/BiomeFunction.java | 5 +++-- .../terrascript/script/functions/BlockFunction.java | 7 +++---- .../terrascript/script/functions/CheckBlockFunction.java | 7 +++---- .../terrascript/script/functions/LootFunction.java | 7 +++---- .../terrascript/script/functions/PullFunction.java | 7 +++---- .../terrascript/script/functions/StateFunction.java | 7 +++---- .../terrascript/script/functions/StructureFunction.java | 9 +++++---- .../terra/addon/terrascript/check/CheckFunction.java | 7 +++---- 9 files changed, 29 insertions(+), 31 deletions(-) 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 90d69461a..cdab4e40a 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 @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.samplers; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; + import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties; import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ChunkInterpolator; import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ElevationInterpolator; @@ -26,7 +28,7 @@ public class Sampler3D { } public double sample(double x, double y, double z) { - return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation((int) Math.round(x), (int) Math.round(z)); + return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation(FloatingPointFunctions.round(x), FloatingPointFunctions.round(z)); } public double sample(int x, int y, int 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 90171d4e3..2fbd47654 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 @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.seismic.type.vector.Vector2; import com.dfsek.seismic.type.vector.Vector3; @@ -44,9 +45,9 @@ public class BiomeFunction implements Function { return grid.getBiome(arguments.getOrigin().toFloat() .mutable() - .add(Vector3.of((int) Math.round(xz.getX()), + .add(Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - (int) Math.round(xz.getZ()))).immutable(), arguments.getWorld().getSeed()).getID(); + FloatingPointFunctions.round(xz.getZ()))).immutable(), arguments.getWorld().getSeed()).getID(); } @Override 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 e1e4db321..8d79a4e59 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 @@ -7,8 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -71,9 +70,9 @@ public class BlockFunction implements Function { Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); try { - Vector3.Mutable set = Vector3.of((int) Math.round(xz.getX()), + Vector3.Mutable set = Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).doubleValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()); + FloatingPointFunctions.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()); BlockState current = arguments.getWorld().getBlockState(set); if(overwrite.apply(implementationArguments, scope) || current.isAir()) { arguments.getWorld().setBlockState(set, rot, physics.apply(implementationArguments, scope)); 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 f1efea1f8..ce16cf3b4 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 @@ -7,8 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -41,9 +40,9 @@ public class CheckBlockFunction implements Function { String data = arguments.getWorld() .getBlockState(arguments.getOrigin().toFloat() .mutable() - .add(Vector3.of((int) Math.round(xz.getX()), + .add(Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope) - .doubleValue(), (int) Math.round(xz.getZ())))) + .doubleValue(), FloatingPointFunctions.round(xz.getZ())))) .getAsString(); if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties else return data; 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 bd479c4da..d992338d2 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 @@ -7,8 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -64,10 +63,10 @@ public class LootFunction implements Function { registry.get(RegistryKey.parse(id)) .ifPresentOrElse(table -> { - Vector3 apply = Vector3.of((int) Math.round(xz.getX()), + Vector3 apply = Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope) .intValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(); + FloatingPointFunctions.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(); try { BlockEntity data = arguments.getWorld().getBlockEntity(apply); 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 c88b313b8..30ae4b62d 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 @@ -7,8 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; @@ -44,8 +43,8 @@ public class PullFunction implements Function { Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); - Vector3.Mutable mutable = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()); + Vector3.Mutable mutable = Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), + FloatingPointFunctions.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()); while(mutable.getY() > arguments.getWorld().getMinHeight()) { if(!arguments.getWorld().getBlockState(mutable).isAir()) { arguments.getWorld().setBlockState(mutable, data); 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 a93ecf0f0..5e41ea994 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 @@ -7,8 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,8 +42,8 @@ public class StateFunction implements Function { z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); - Vector3 origin = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(); + Vector3 origin = Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), + FloatingPointFunctions.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(); try { BlockEntity state = arguments.getWorld().getBlockEntity(origin); state.applyState(data.apply(implementationArguments, scope)); 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 4d0f0c01d..4fe8b45af 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 @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.seismic.type.Rotation; import com.dfsek.seismic.type.vector.Vector2; import org.slf4j.Logger; @@ -77,17 +78,17 @@ public class StructureFunction implements Function { if(script instanceof StructureScript structureScript) { return structureScript.generate(arguments.getOrigin(), arguments.getWorld() - .buffer((int) Math.round(xz.getX()), + .buffer(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - (int) Math.round(xz.getZ())), + FloatingPointFunctions.round(xz.getZ())), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); } return script.generate(arguments.getOrigin(), arguments.getWorld() - .buffer((int) Math.round(xz.getX()), + .buffer(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - (int) Math.round(xz.getZ())), + FloatingPointFunctions.round(xz.getZ())), arguments.getRandom(), arguments.getRotation().rotate(rotation1)); }).orElseGet(() -> { diff --git a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java index 119b073e6..a91634ef6 100644 --- a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java +++ b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java @@ -7,8 +7,7 @@ package com.dfsek.terra.addon.terrascript.check; -import com.dfsek.seismic.type.vector.Vector2; -import com.dfsek.seismic.type.vector.Vector3; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.terra.addons.chunkgenerator.generation.NoiseChunkGenerator3D; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.SamplerProvider; @@ -45,8 +44,8 @@ public class CheckFunction implements Function { z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); Vector3 location = arguments.getOrigin().toFloat().mutable().add( - Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).doubleValue(), - (int) Math.round(xz.getZ()))).immutable(); + Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).doubleValue(), + FloatingPointFunctions.round(xz.getZ()))).immutable(); return apply(location, arguments.getWorld()); } From 21ef8c0dc418ce7d72ee9c3e57519bbbafb30d8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Sat, 28 Jun 2025 15:45:02 -0600 Subject: [PATCH 087/116] Update Seismic --- buildSrc/src/main/kotlin/Versions.kt | 4 ++-- .../dfsek/terra/addons/noise/NoiseAddon.java | 18 +++++++++--------- .../config/templates/KernelTemplate.java | 3 +-- .../noise/CellularNoiseTemplate.java | 11 ++--------- .../noise/DistanceSamplerTemplate.java | 4 ++-- .../templates/noise/GaborNoiseTemplate.java | 13 +++++-------- .../noise/PseudoErosionTemplate.java | 6 ++---- .../templates/noise/SimpleNoiseTemplate.java | 19 ++++++++++++------- .../noise/fractal/BrownianMotionTemplate.java | 6 +----- .../noise/fractal/FractalTemplate.java | 3 ++- .../noise/fractal/PingPongTemplate.java | 7 +------ .../noise/fractal/RidgedFractalTemplate.java | 6 +----- 12 files changed, 40 insertions(+), 60 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 2ee5a9b42..e0ec343e3 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -5,9 +5,9 @@ object Versions { object Libraries { const val tectonic = "4.2.1" - const val paralithic = "1.0.3" + const val paralithic = "2.0.0" const val strata = "1.3.2" - const val seismic = "0.3.4" + const val seismic = "2.0.1" const val cloud = "2.0.0" 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 313483acd..f714dfc47 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 @@ -119,21 +119,21 @@ public class NoiseAddon implements AddonInitializer { noiseRegistry.register(addon.key("PING_PONG"), PingPongTemplate::new); noiseRegistry.register(addon.key("RIDGED"), RidgedFractalTemplate::new); - noiseRegistry.register(addon.key("OPEN_SIMPLEX_2"), () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); - noiseRegistry.register(addon.key("OPEN_SIMPLEX_2S"), () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); - noiseRegistry.register(addon.key("PERLIN"), () -> new SimpleNoiseTemplate(PerlinSampler::new)); - noiseRegistry.register(addon.key("SIMPLEX"), () -> new SimpleNoiseTemplate(SimplexSampler::new)); + noiseRegistry.register(addon.key("OPEN_SIMPLEX_2"), () -> new SimpleNoiseTemplate<>(OpenSimplex2Sampler.class)); + noiseRegistry.register(addon.key("OPEN_SIMPLEX_2S"), () -> new SimpleNoiseTemplate<>(OpenSimplex2SSampler.class)); + noiseRegistry.register(addon.key("PERLIN"), () -> new SimpleNoiseTemplate<>(PerlinSampler.class)); + noiseRegistry.register(addon.key("SIMPLEX"), () -> new SimpleNoiseTemplate<>(SimplexSampler.class)); noiseRegistry.register(addon.key("GABOR"), GaborNoiseTemplate::new); noiseRegistry.register(addon.key("PSEUDOEROSION"), PseudoErosionTemplate::new); - noiseRegistry.register(addon.key("VALUE"), () -> new SimpleNoiseTemplate(ValueSampler::new)); - noiseRegistry.register(addon.key("VALUE_CUBIC"), () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); + noiseRegistry.register(addon.key("VALUE"), () -> new SimpleNoiseTemplate<>(ValueSampler.class)); + noiseRegistry.register(addon.key("VALUE_CUBIC"), () -> new SimpleNoiseTemplate<>(ValueCubicSampler.class)); noiseRegistry.register(addon.key("CELLULAR"), CellularNoiseTemplate::new); - noiseRegistry.register(addon.key("WHITE_NOISE"), () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); - noiseRegistry.register(addon.key("POSITIVE_WHITE_NOISE"), () -> new SimpleNoiseTemplate(PositiveWhiteNoiseSampler::new)); - noiseRegistry.register(addon.key("GAUSSIAN"), () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); + noiseRegistry.register(addon.key("WHITE_NOISE"), () -> new SimpleNoiseTemplate<>(WhiteNoiseSampler.class)); + noiseRegistry.register(addon.key("POSITIVE_WHITE_NOISE"), () -> new SimpleNoiseTemplate<>(PositiveWhiteNoiseSampler.class)); + noiseRegistry.register(addon.key("GAUSSIAN"), () -> new SimpleNoiseTemplate<>(GaussianNoiseSampler.class)); noiseRegistry.register(addon.key("DISTANCE"), DistanceSamplerTemplate::new); 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 380ec97d4..75ad7edbe 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 @@ -45,8 +45,7 @@ public class KernelTemplate extends SamplerTemplate { } } - KernelSampler sampler = new KernelSampler(k, function); - sampler.setFrequency(frequency); + KernelSampler sampler = new KernelSampler(frequency, k, function); 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 89ff13a94..3307a600e 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 @@ -34,7 +34,7 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Value("lookup") @Default - private @Meta Sampler lookup = new OpenSimplex2Sampler(); + private @Meta Sampler lookup = new OpenSimplex2Sampler(0.02d, 0); @Value("salt-lookup") @Default @@ -42,14 +42,7 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Override public Sampler get() { - CellularSampler sampler = new CellularSampler(); - sampler.setNoiseLookup(lookup); - sampler.setFrequency(frequency); - sampler.setJitterModifier(cellularJitter); - sampler.setReturnType(cellularReturnType); - sampler.setDistanceFunction(cellularDistanceFunction); - sampler.setSalt(salt); - sampler.setSaltLookup(saltLookup); + CellularSampler sampler = new CellularSampler(frequency, salt, lookup, cellularDistanceFunction, cellularReturnType, cellularJitter, saltLookup); return sampler; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java index 4692dca9b..4d6393803 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java @@ -9,7 +9,7 @@ import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.api.config.meta.Meta; -public class DistanceSamplerTemplate extends SamplerTemplate { +public class DistanceSamplerTemplate extends NoiseTemplate { @Value("distance-function") @Default @@ -37,6 +37,6 @@ public class DistanceSamplerTemplate extends SamplerTemplate { @Override public DistanceSampler get() { - return new DistanceSampler(distanceFunction, x, y, z, normalize, normalizeRadius); + return new DistanceSampler(salt, distanceFunction, x, y, z, normalize, normalizeRadius); } } 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 5b1b19699..e8bda1c5f 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 @@ -37,16 +37,13 @@ public class GaborNoiseTemplate extends NoiseTemplate { @Default private @Meta double f0 = 0.625; + @Value("a") + @Default + private @Meta double a = 0.1; + @Override public Sampler get() { - GaborSampler gaborSampler = new GaborSampler(); - gaborSampler.setFrequency(frequency); - gaborSampler.setRotation(rotation); - gaborSampler.setIsotropic(isotropic); - gaborSampler.setDeviation(deviation); - gaborSampler.setImpulsesPerKernel(impulses); - gaborSampler.setFrequency0(f0); - gaborSampler.setSalt(salt); + GaborSampler gaborSampler = new GaborSampler(frequency, salt, f0, deviation, rotation, impulses, a, isotropic); return gaborSampler; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/PseudoErosionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/PseudoErosionTemplate.java index f8f90fa40..508dc7874 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/PseudoErosionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/PseudoErosionTemplate.java @@ -45,7 +45,7 @@ public class PseudoErosionTemplate extends NoiseTemplate { @Value("sampler") @Default - private DerivativeSampler heightSampler = new OpenSimplex2Sampler(); + private DerivativeSampler heightSampler = new OpenSimplex2Sampler(0.02d, 0); @Value("slope-mask.enable") @Default @@ -69,11 +69,9 @@ public class PseudoErosionTemplate extends NoiseTemplate { @Override public PseudoErosionSampler get() { - PseudoErosionSampler pseudoErosion = new PseudoErosionSampler(octaves, gain, lacunarity, + PseudoErosionSampler pseudoErosion = new PseudoErosionSampler(frequency, salt, octaves, gain, lacunarity, slopeStrength, branchStrength, strength, erosionFrequency, heightSampler, slopeMask, slopeMaskFull, slopeMaskNone, jitterModifier, averageErosionImpulses); - pseudoErosion.setFrequency(frequency); - pseudoErosion.setSalt(salt); return pseudoErosion; } } 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 8a6f4c52f..0ffdf8397 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 @@ -10,21 +10,26 @@ package com.dfsek.terra.addons.noise.config.templates.noise; import com.dfsek.seismic.algorithms.sampler.noise.NoiseFunction; import com.dfsek.seismic.type.sampler.Sampler; +import java.lang.reflect.InvocationTargetException; import java.util.function.Supplier; -public class SimpleNoiseTemplate extends NoiseTemplate { - private final Supplier samplerSupplier; +public class SimpleNoiseTemplate extends NoiseTemplate { + private final Class samplerClass; - public SimpleNoiseTemplate(Supplier samplerSupplier) { - this.samplerSupplier = samplerSupplier; + public SimpleNoiseTemplate(Class samplerClass) { + this.samplerClass = samplerClass; } @Override public Sampler get() { - NoiseFunction sampler = samplerSupplier.get(); - sampler.setFrequency(frequency); - sampler.setSalt(salt); + NoiseFunction sampler = null; + try { + sampler = samplerClass.getConstructor(double.class, long.class) + .newInstance(frequency, salt); + } catch(InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { + throw new RuntimeException(e); + } 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 2ca2fd047..6ccb0e630 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 @@ -15,11 +15,7 @@ import com.dfsek.seismic.type.sampler.Sampler; public class BrownianMotionTemplate extends FractalTemplate { @Override public Sampler get() { - BrownianMotionSampler sampler = new BrownianMotionSampler(function); - sampler.setGain(fractalGain); - sampler.setLacunarity(fractalLacunarity); - sampler.setOctaves(octaves); - sampler.setWeightedStrength(weightedStrength); + BrownianMotionSampler sampler = new BrownianMotionSampler(salt, function, fractalGain, fractalLacunarity, weightedStrength, octaves); return sampler; } } 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 9314cd42a..2f8c438f2 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 @@ -13,10 +13,11 @@ import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; +import com.dfsek.terra.addons.noise.config.templates.noise.NoiseTemplate; import com.dfsek.terra.api.config.meta.Meta; -public abstract class FractalTemplate extends SamplerTemplate { +public abstract class FractalTemplate extends NoiseTemplate { @Value("octaves") @Default protected @Meta int octaves = 3; 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 87e06cd91..6d98e44a6 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 @@ -23,12 +23,7 @@ public class PingPongTemplate extends FractalTemplate { @Override public Sampler get() { - PingPongSampler sampler = new PingPongSampler(function); - sampler.setGain(fractalGain); - sampler.setLacunarity(fractalLacunarity); - sampler.setOctaves(octaves); - sampler.setWeightedStrength(weightedStrength); - sampler.setPingPongStrength(pingPong); + PingPongSampler sampler = new PingPongSampler(salt, function, fractalGain, fractalLacunarity, weightedStrength, octaves, pingPong); return sampler; } } 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 fa447ca9b..e7900e537 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 @@ -15,11 +15,7 @@ import com.dfsek.seismic.type.sampler.Sampler; public class RidgedFractalTemplate extends FractalTemplate { @Override public Sampler get() { - RidgedFractalSampler sampler = new RidgedFractalSampler(function); - sampler.setGain(fractalGain); - sampler.setLacunarity(fractalLacunarity); - sampler.setOctaves(octaves); - sampler.setWeightedStrength(weightedStrength); + RidgedFractalSampler sampler = new RidgedFractalSampler(salt, function, fractalGain, fractalLacunarity, weightedStrength, octaves); return sampler; } } From 923cb08b37540a3341310dd7a3e3f975b6fa90db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Sat, 28 Jun 2025 15:52:19 -0600 Subject: [PATCH 088/116] fix build --- .../dfsek/terra/addons/image/operator/DistanceTransform.java | 2 ++ .../addons/terrascript/script/functions/BlockFunction.java | 2 ++ .../terrascript/script/functions/CheckBlockFunction.java | 4 ++++ .../addons/terrascript/script/functions/GetMarkFunction.java | 4 ++++ .../addons/terrascript/script/functions/LootFunction.java | 2 ++ .../addons/terrascript/script/functions/PullFunction.java | 4 ++++ .../addons/terrascript/script/functions/SetMarkFunction.java | 4 ++++ .../addons/terrascript/script/functions/StateFunction.java | 2 ++ .../dfsek/terra/addon/terrascript/check/CheckFunction.java | 3 +++ 9 files changed, 27 insertions(+) diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java index c57cd9d5c..91dea6222 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java @@ -2,6 +2,8 @@ package com.dfsek.terra.addons.image.operator; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; +import com.dfsek.seismic.type.sampler.Sampler; + import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.util.ColorUtil; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; 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 8d79a4e59..128647bd3 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 @@ -8,6 +8,8 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 ce16cf3b4..d6d657897 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 @@ -9,6 +9,10 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; +import com.dfsek.seismic.type.vector.Vector2; + +import com.dfsek.seismic.type.vector.Vector3; + 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.Scope; 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 17d65ecd3..77e060d54 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 @@ -9,6 +9,10 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; +import com.dfsek.seismic.type.vector.Vector2; + +import com.dfsek.seismic.type.vector.Vector3; + 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.Scope; 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 d992338d2..5176116f8 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 @@ -8,6 +8,8 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 30ae4b62d..9855b92fd 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 @@ -9,6 +9,10 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; +import com.dfsek.seismic.type.vector.Vector2; + +import com.dfsek.seismic.type.vector.Vector3; + 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; 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 09a0fa147..b91298dc0 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 @@ -9,6 +9,10 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; +import com.dfsek.seismic.type.vector.Vector2; + +import com.dfsek.seismic.type.vector.Vector3; + 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.Scope; 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 5e41ea994..a69a6036c 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 @@ -8,6 +8,8 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java index a91634ef6..afda60d4a 100644 --- a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java +++ b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java @@ -9,6 +9,9 @@ package com.dfsek.terra.addon.terrascript.check; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; +import com.dfsek.seismic.type.vector.Vector2; +import com.dfsek.seismic.type.vector.Vector3; + import com.dfsek.terra.addons.chunkgenerator.generation.NoiseChunkGenerator3D; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.SamplerProvider; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; From 71953c90a2474d6e217cf2be99e305919b4c4ab8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Sat, 28 Jun 2025 19:05:20 -0600 Subject: [PATCH 089/116] optimize imports --- .../mapping/DefinedBiomeColorMappingTemplate.java | 4 ++-- .../biome/pipeline/pipeline/BiomeChunkImpl.java | 4 ++-- .../templates/noise/DistanceSamplerTemplate.java | 1 - .../templates/noise/SimpleNoiseTemplate.java | 1 - .../templates/noise/fractal/FractalTemplate.java | 1 - .../dfsek/terra/addons/ore/ores/VanillaOre.java | 4 ---- .../addons/image/operator/DistanceTransform.java | 1 - .../script/functions/BlockFunction.java | 11 ++++++----- .../script/functions/CheckBlockFunction.java | 2 -- .../script/functions/GetMarkFunction.java | 2 -- .../script/functions/PullFunction.java | 2 -- .../script/functions/SetMarkFunction.java | 2 -- .../addon/terrascript/check/CheckFunction.java | 1 - .../com/dfsek/terra/api/handle/ItemHandle.java | 4 ++-- .../com/dfsek/terra/api/properties/Context.java | 1 - .../com/dfsek/terra/api/structure/LootTable.java | 6 +++--- .../base/src/test/java/profiler/ProfilerTest.java | 4 ++-- .../java/com/dfsek/terra/bukkit/PlatformImpl.java | 3 --- .../hooks/MultiverseGeneratorPluginHook.java | 3 --- .../terra/bukkit/listeners/CommonListener.java | 15 +++++++-------- .../dfsek/terra/bukkit/world/BukkitBiomeInfo.java | 4 ++-- .../world/block/BukkitBlockTypeAndItem.java | 4 ++-- .../bukkit/nms/v1_21_6/AwfulBukkitHacks.java | 5 +---- .../terra/lifecycle/mixin/NoiseConfigMixin.java | 4 ++-- 24 files changed, 31 insertions(+), 58 deletions(-) diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/mapping/DefinedBiomeColorMappingTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/mapping/DefinedBiomeColorMappingTemplate.java index c76cfb6d0..17864a01f 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/mapping/DefinedBiomeColorMappingTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/converter/mapping/DefinedBiomeColorMappingTemplate.java @@ -3,13 +3,13 @@ package com.dfsek.terra.addons.biome.image.config.converter.mapping; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import java.util.Map; + import com.dfsek.terra.addons.image.config.ColorLoader.ColorString; import com.dfsek.terra.addons.image.converter.mapping.ColorMapping; import com.dfsek.terra.addons.image.util.MapUtil; import com.dfsek.terra.api.world.biome.Biome; -import java.util.Map; - public class DefinedBiomeColorMappingTemplate implements ObjectTemplate> { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java index 8fa8ab651..9eba36720 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.biome.pipeline.pipeline; -import java.util.List; - import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; +import java.util.List; + import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; import com.dfsek.terra.addons.biome.pipeline.api.Expander; import com.dfsek.terra.addons.biome.pipeline.api.Stage; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java index 4d6393803..2e1f0a12a 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/DistanceSamplerTemplate.java @@ -5,7 +5,6 @@ import com.dfsek.seismic.type.DistanceFunction; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.api.config.meta.Meta; 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 0ffdf8397..90206c427 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 @@ -11,7 +11,6 @@ import com.dfsek.seismic.algorithms.sampler.noise.NoiseFunction; import com.dfsek.seismic.type.sampler.Sampler; import java.lang.reflect.InvocationTargetException; -import java.util.function.Supplier; public class SimpleNoiseTemplate extends NoiseTemplate { 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 2f8c438f2..0b47c537b 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 @@ -12,7 +12,6 @@ import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.config.templates.noise.NoiseTemplate; import com.dfsek.terra.api.config.meta.Meta; 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 4a84ca0cc..a3f5b8d00 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 @@ -7,10 +7,6 @@ package com.dfsek.terra.addons.ore.ores; -import java.util.BitSet; -import java.util.Map; -import java.util.random.RandomGenerator; - import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.seismic.math.numericanalysis.interpolation.InterpolationFunctions; import com.dfsek.seismic.math.trigonometry.TrigonometryFunctions; diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java index 91dea6222..8bf7fe8f6 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java @@ -1,7 +1,6 @@ package com.dfsek.terra.addons.image.operator; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; - import com.dfsek.seismic.type.sampler.Sampler; import com.dfsek.terra.addons.image.image.Image; 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 128647bd3..279c28079 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 @@ -10,11 +10,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.seismic.type.vector.Vector2; import com.dfsek.seismic.type.vector.Vector3; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -26,6 +21,12 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + public class BlockFunction implements Function { private static final Logger logger = LoggerFactory.getLogger(BlockFunction.class); 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 d6d657897..66f2e30c5 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 @@ -8,9 +8,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; - import com.dfsek.seismic.type.vector.Vector2; - import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; 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 77e060d54..f60c6aba9 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 @@ -8,9 +8,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; - import com.dfsek.seismic.type.vector.Vector2; - import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; 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 9855b92fd..49141a658 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 @@ -8,9 +8,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; - import com.dfsek.seismic.type.vector.Vector2; - import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; 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 b91298dc0..0a7f9a38f 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 @@ -8,9 +8,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; - import com.dfsek.seismic.type.vector.Vector2; - import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; diff --git a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java index afda60d4a..8cdbebe65 100644 --- a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java +++ b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java @@ -8,7 +8,6 @@ package com.dfsek.terra.addon.terrascript.check; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; - import com.dfsek.seismic.type.vector.Vector2; import com.dfsek.seismic.type.vector.Vector3; 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 e0993919b..918195a40 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 @@ -7,11 +7,11 @@ 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 { 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 index e5660d537..c8f5d807f 100644 --- 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 @@ -10,7 +10,6 @@ package com.dfsek.terra.api.properties; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicReference; public class Context { 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 index f5090c051..4d9325f05 100644 --- 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 @@ -7,14 +7,14 @@ package com.dfsek.terra.api.structure; -import com.dfsek.terra.api.inventory.Inventory; -import com.dfsek.terra.api.inventory.ItemStack; - import org.jetbrains.annotations.ApiStatus.Experimental; import java.util.List; import java.util.random.RandomGenerator; +import com.dfsek.terra.api.inventory.Inventory; +import com.dfsek.terra.api.inventory.ItemStack; + @Experimental public interface LootTable { diff --git a/common/implementation/base/src/test/java/profiler/ProfilerTest.java b/common/implementation/base/src/test/java/profiler/ProfilerTest.java index 36989790a..6c3ae486e 100644 --- a/common/implementation/base/src/test/java/profiler/ProfilerTest.java +++ b/common/implementation/base/src/test/java/profiler/ProfilerTest.java @@ -17,11 +17,11 @@ package profiler; +import org.junit.jupiter.api.Test; + import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; -import org.junit.jupiter.api.Test; - public class ProfilerTest { private static final Profiler PROFILER = new ProfilerImpl(); diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java index 35b44b9be..a73e15918 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java @@ -20,9 +20,6 @@ package com.dfsek.terra.bukkit; import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; - -import com.dfsek.terra.bukkit.nms.Initializer; - import io.papermc.paper.registry.RegistryAccess; import io.papermc.paper.registry.RegistryKey; import org.bukkit.Bukkit; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java index fe2e93975..e0e8f0d52 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java @@ -1,8 +1,5 @@ package com.dfsek.terra.bukkit.hooks; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.registry.key.Keyed; - import org.mvplugins.multiverse.core.MultiverseCoreApi; import org.mvplugins.multiverse.core.world.generators.GeneratorPlugin; import org.mvplugins.multiverse.external.jetbrains.annotations.NotNull; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 4c670a7d1..b49b383f0 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -17,14 +17,6 @@ package com.dfsek.terra.bukkit.listeners; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.bukkit.generator.BukkitChunkGeneratorWrapper; -import com.dfsek.terra.bukkit.hooks.MultiverseGeneratorPluginHook; - -import com.dfsek.terra.bukkit.world.BukkitBiomeInfo; -import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; - import org.bukkit.NamespacedKey; import org.bukkit.World; import org.bukkit.entity.Wolf; @@ -39,6 +31,13 @@ import org.slf4j.LoggerFactory; import java.util.List; +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.bukkit.generator.BukkitChunkGeneratorWrapper; +import com.dfsek.terra.bukkit.hooks.MultiverseGeneratorPluginHook; +import com.dfsek.terra.bukkit.world.BukkitBiomeInfo; +import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; + /** * Listener for events on all implementations. diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeInfo.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeInfo.java index 7e0499c0c..eb59c3cb5 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeInfo.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeInfo.java @@ -1,8 +1,8 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.properties.Properties; - import org.bukkit.NamespacedKey; +import com.dfsek.terra.api.properties.Properties; + public record BukkitBiomeInfo(NamespacedKey biomeKey) implements Properties {} diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java index 38a9735ad..6d442343b 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java @@ -17,14 +17,14 @@ package com.dfsek.terra.bukkit.world.block; +import org.bukkit.Material; + 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; -import org.bukkit.Material; - public class BukkitBlockTypeAndItem implements BlockType, Item { private final Material delegate; diff --git a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/AwfulBukkitHacks.java b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/AwfulBukkitHacks.java index b9f03c029..4b8e4e907 100644 --- a/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/AwfulBukkitHacks.java +++ b/platforms/bukkit/nms/v1_21_6/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_6/AwfulBukkitHacks.java @@ -1,9 +1,5 @@ package com.dfsek.terra.bukkit.nms.v1_21_6; -import com.dfsek.terra.bukkit.nms.v1_21_6.config.VanillaBiomeProperties; - -import com.dfsek.terra.bukkit.world.BukkitBiomeInfo; - import net.minecraft.core.Holder; import net.minecraft.core.Holder.Reference; import net.minecraft.core.HolderSet; @@ -28,6 +24,7 @@ import java.util.Set; import java.util.stream.Collectors; import com.dfsek.terra.bukkit.nms.v1_21_6.config.VanillaBiomeProperties; +import com.dfsek.terra.bukkit.world.BukkitBiomeInfo; import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; import com.dfsek.terra.registry.master.ConfigRegistry; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java index 8e9c02086..47fe9a9ca 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java @@ -1,7 +1,5 @@ package com.dfsek.terra.lifecycle.mixin; -import com.dfsek.terra.mod.util.SeedHack; - import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.util.math.noise.DoublePerlinNoiseSampler; import net.minecraft.world.biome.source.util.MultiNoiseUtil.MultiNoiseSampler; @@ -14,6 +12,8 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import com.dfsek.terra.mod.util.SeedHack; + /** * Hack to map noise sampler to seeds From 89cbab071f9c976fa21303caa8611cf7e7bce8dc Mon Sep 17 00:00:00 2001 From: Christian Bergschneider Date: Mon, 30 Jun 2025 00:33:42 +0200 Subject: [PATCH 090/116] refactor: remove fine-grained biome controls and adjust biome handling Removed the deprecated `doFineGrainedBiomes` option from `TerraMinestomWorldBuilder` and associated classes. Updated biome management to use `IdentityHashMap` and added additional tracking for created biomes. Upgraded Minestom version to `1_21_6-a40d7115d4`. --- buildSrc/src/main/kotlin/Versions.kt | 2 +- .../terra/minestom/TerraMinestomExample.java | 1 - .../api/TerraMinestomWorldBuilder.java | 16 +------ .../biome/MinestomUserDefinedBiomePool.java | 16 ++++--- .../minestom/biome/UserDefinedBiome.java | 42 ++++++++++++++++- .../world/MinestomChunkGeneratorWrapper.java | 45 +++++++++++-------- .../minestom/world/TerraMinestomWorld.java | 7 +-- 7 files changed, 82 insertions(+), 47 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index e0ec343e3..abb49469e 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -89,6 +89,6 @@ object Versions { } object Minestom { - const val minestom = "1_21_6-c3ccee696b" + const val minestom = "1_21_6-a40d7115d4" } } diff --git a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java index 69bcb1680..ccf7ddd9f 100644 --- a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java +++ b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java @@ -44,7 +44,6 @@ public class TerraMinestomExample { public void attachTerra() { world = platform.worldBuilder(instance) .defaultPack() - .doFineGrainedBiomes(false) .attach(); } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java index 7652a2473..d70a32bdd 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/api/TerraMinestomWorldBuilder.java @@ -22,7 +22,6 @@ public class TerraMinestomWorldBuilder { private EntityFactory entityFactory = new DefaultEntityFactory(); private BlockEntityFactory blockEntityFactory; private BiomeFactory biomeFactory = new MinestomUserDefinedBiomeFactory(); - private boolean doFineGrainedBiomes = true; public TerraMinestomWorldBuilder(TerraMinestomPlatform platform, Instance instance) { this.platform = platform; @@ -70,20 +69,7 @@ public class TerraMinestomWorldBuilder { return this; } - /** - * Due to a current bug with the minestom biome encoder, sometimes, the client gets kicked when decoding a chunk - * packet with more than one biome. Until this is fixed in minestom, one can disable fine-grained biomes to prevent - * this issue. - * - * @deprecated Scheduled for removal once Minestom rolls out a fix - */ - @Deprecated - public TerraMinestomWorldBuilder doFineGrainedBiomes(boolean doFineGrainedBiomes) { - this.doFineGrainedBiomes = doFineGrainedBiomes; - return this; - } - public TerraMinestomWorld attach() { - return new TerraMinestomWorld(platform, instance, pack, seed, entityFactory, blockEntityFactory, biomeFactory, doFineGrainedBiomes); + return new TerraMinestomWorld(platform, instance, pack, seed, entityFactory, blockEntityFactory, biomeFactory); } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java index f5aee7fb8..76d4299a8 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java @@ -1,6 +1,8 @@ package com.dfsek.terra.minestom.biome; import java.util.HashMap; +import java.util.HashSet; +import java.util.IdentityHashMap; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.Biome; @@ -8,7 +10,8 @@ import com.dfsek.terra.minestom.api.BiomeFactory; public class MinestomUserDefinedBiomePool { - private final HashMap biomes = new HashMap<>(); + private final IdentityHashMap biomes = new IdentityHashMap<>(); + private final HashSet createdBiomes = new HashSet<>(); private final BiomeFactory factory; private final ConfigPack configPack; @@ -18,18 +21,21 @@ public class MinestomUserDefinedBiomePool { } public UserDefinedBiome getBiome(Biome source) { - UserDefinedBiome userDefinedBiome = biomes.get(source.getID()); + UserDefinedBiome userDefinedBiome = biomes.get(source); if(userDefinedBiome != null) return userDefinedBiome; userDefinedBiome = factory.create(configPack, source); - biomes.put(source.getID(), userDefinedBiome); + biomes.put(source, userDefinedBiome); + createdBiomes.add(source.getID()); return userDefinedBiome; } public void preloadBiomes(Iterable biomesToLoad) { biomesToLoad .forEach(biome -> { - if(!this.biomes.containsKey(biome.getID())) { - this.biomes.put(biome.getID(), factory.create(configPack, biome)); + if(!this.createdBiomes.contains(biome.getID())) { + UserDefinedBiome udf = factory.create(configPack, biome); + this.biomes.put(biome, udf); + this.createdBiomes.add(biome.getID()); } }); } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/UserDefinedBiome.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/UserDefinedBiome.java index 86515d810..40b25cfd3 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/UserDefinedBiome.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/UserDefinedBiome.java @@ -1,9 +1,49 @@ package com.dfsek.terra.minestom.biome; import net.kyori.adventure.key.Key; +import net.minestom.server.MinecraftServer; +import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.registry.RegistryKey; import net.minestom.server.world.biome.Biome; -public record UserDefinedBiome(Key key, RegistryKey registry, String id, Biome biome) { +public class UserDefinedBiome { + private static final DynamicRegistry BIOME_REGISTRY = MinecraftServer.getBiomeRegistry(); + + private final Key key; + private final RegistryKey registry; + private final String id; + private final Biome biome; + + private int registryId = -1; + + public UserDefinedBiome(Key key, RegistryKey registry, String id, Biome biome) { + this.key = key; + this.registry = registry; + this.id = id; + this.biome = biome; + } + + public Key key() { + return key; + } + + public RegistryKey registryKey() { + return registry; + } + + public String id() { + return id; + } + + public Biome biome() { + return biome; + } + + public int registryId() { + if(registryId == -1) { + registryId = BIOME_REGISTRY.getId(registry); + } + return registryId; + } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java index 4f20d6ec2..2dfa6d18f 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java @@ -1,9 +1,13 @@ package com.dfsek.terra.minestom.world; import net.minestom.server.coordinate.Point; +import net.minestom.server.instance.block.Block; import net.minestom.server.instance.generator.GenerationUnit; import net.minestom.server.instance.generator.Generator; +import net.minestom.server.instance.generator.GeneratorImpl.AreaModifierImpl; +import net.minestom.server.instance.generator.GeneratorImpl.SectionModifierImpl; import net.minestom.server.instance.generator.UnitModifier; +import net.minestom.server.instance.palette.Palette; import org.jetbrains.annotations.NotNull; import com.dfsek.terra.api.Platform; @@ -22,25 +26,21 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe private final GeneratedChunkCache cache; private final TerraMinestomWorld world; private final BiomeProvider biomeProvider; - private final boolean doFineGrainedBiomes; private final MinestomUserDefinedBiomePool biomePool; private ChunkGenerator generator; private ConfigPack pack; public MinestomChunkGeneratorWrapper( - Platform platform, ChunkGenerator generator, TerraMinestomWorld world, ConfigPack pack, - MinestomUserDefinedBiomePool biomePool, - boolean doFineGrainedBiomes + MinestomUserDefinedBiomePool biomePool ) { this.generator = generator; this.world = world; this.pack = pack; this.biomePool = biomePool; this.biomeProvider = pack.getBiomeProvider(); - this.doFineGrainedBiomes = doFineGrainedBiomes; this.cache = new GeneratedChunkCache(world.getDimensionType(), generator, world, biomeProvider); preloadBiomes(); } @@ -49,6 +49,7 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe return generator; } + @SuppressWarnings("UnstableApiUsage") @Override public void generate(@NotNull GenerationUnit unit) { Point start = unit.absoluteStart(); @@ -56,27 +57,33 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe int z = start.chunkZ(); int blockX = start.blockX(); int blockZ = start.blockZ(); - int minY = world.getMinHeight(); - int maxY = world.getMaxHeight(); CachedChunk chunk = cache.at(x, z); UnitModifier modifier = unit.modifier(); chunk.writeRelative(modifier); - if(doFineGrainedBiomes) { - for(int y = minY; y < maxY; y++) { - for(int absoluteX = blockX; absoluteX < blockX + 16; absoluteX++) { - for(int absoluteZ = blockZ; absoluteZ < blockZ + 16; absoluteZ++) { - UserDefinedBiome userDefinedBiome = biomePool.getBiome( - biomeProvider.getBiome(absoluteX, y, absoluteZ, world.getSeed()) - ); - modifier.setBiome(absoluteX, y, absoluteZ, userDefinedBiome.registry()); + AreaModifierImpl areaModifiers = (AreaModifierImpl) modifier; + for(GenerationUnit section : areaModifiers.sections()) { + SectionModifierImpl sectionModifier = (SectionModifierImpl) section.modifier(); + Palette biomes = sectionModifier.genSection().biomes(); + int minY = section.absoluteStart().blockY(); + for(int relativeX = 0; relativeX < 16; relativeX += 1) { + int absoluteX = blockX + relativeX; + for(int relativeZ = 0; relativeZ < 16; relativeZ += 1) { + int absoluteZ = blockZ + relativeZ; + for(int relativeY = 0; relativeY < 16; relativeY += 1) { + int absoluteY = minY + relativeY; + + if (relativeX % 4 == 0 && relativeY % 4 == 0 && relativeZ % 4 == 0) { + UserDefinedBiome userDefinedBiome = biomePool.getBiome( + biomeProvider.getBiome(absoluteX, absoluteY, absoluteZ, world.getSeed()) + ); + + int registryId = userDefinedBiome.registryId(); + biomes.set(relativeX / 4, relativeY / 4, relativeZ / 4, registryId); + } } } } - } else { - // TODO: remove with feature flag once minestom fixed biome encoding - UserDefinedBiome userDefinedBiome = biomePool.getBiome(biomeProvider.getBiome(blockX, 100, blockZ, world.getSeed())); - modifier.fillBiome(userDefinedBiome.registry()); } unit.fork(setter -> { diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java index 9e1529d90..fe272a864 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java @@ -44,8 +44,7 @@ public final class TerraMinestomWorld implements ServerWorld, WorldProperties { long seed, EntityFactory entityFactory, BlockEntityFactory blockEntityFactory, - BiomeFactory factory, - boolean doFineGrainedBiomes + BiomeFactory factory ) { this.instance = instance; this.pack = pack; @@ -55,12 +54,10 @@ public final class TerraMinestomWorld implements ServerWorld, WorldProperties { this.blockEntityFactory = blockEntityFactory; this.wrapper = new MinestomChunkGeneratorWrapper( - platform, pack.getGeneratorProvider().newInstance(pack), this, pack, - new MinestomUserDefinedBiomePool(pack, factory), - doFineGrainedBiomes + new MinestomUserDefinedBiomePool(pack, factory) ); this.entityFactory = entityFactory; From 3ad0ef8501aad0cf825745c6ea10c59ee0369bc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Wed, 9 Jul 2025 14:06:01 -0600 Subject: [PATCH 091/116] Update Seismic + paralihtic --- buildSrc/src/main/kotlin/Versions.kt | 4 ++-- .../main/java/com/dfsek/terra/addons/noise/NoiseAddon.java | 7 ++++--- .../config/templates/noise/CellularNoiseTemplate.java | 5 +++-- .../noise/config/templates/noise/SimpleNoiseTemplate.java | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index e0ec343e3..c8de850eb 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -5,9 +5,9 @@ object Versions { object Libraries { const val tectonic = "4.2.1" - const val paralithic = "2.0.0" + const val paralithic = "2.0.1" const val strata = "1.3.2" - const val seismic = "2.0.1" + const val seismic = "2.0.3" const val cloud = "2.0.0" 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 f714dfc47..2fcab4281 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 @@ -14,7 +14,8 @@ import com.dfsek.seismic.algorithms.sampler.arithmetic.MaxSampler; import com.dfsek.seismic.algorithms.sampler.arithmetic.MinSampler; import com.dfsek.seismic.algorithms.sampler.arithmetic.MultiplicationSampler; import com.dfsek.seismic.algorithms.sampler.arithmetic.SubtractionSampler; -import com.dfsek.seismic.algorithms.sampler.noise.CellularSampler; +import com.dfsek.seismic.algorithms.sampler.noise.cellular.CellularSampler; +import com.dfsek.seismic.algorithms.sampler.noise.cellular.CellularStyleSampler; import com.dfsek.seismic.algorithms.sampler.noise.random.GaussianNoiseSampler; import com.dfsek.seismic.algorithms.sampler.noise.random.PositiveWhiteNoiseSampler; import com.dfsek.seismic.algorithms.sampler.noise.random.WhiteNoiseSampler; @@ -95,8 +96,8 @@ public class NoiseAddon implements AddonInitializer { event.getPack() .applyLoader(DistanceFunction.class, (type, o, loader, depthTracker) -> DistanceFunction.valueOf((String) o)) - .applyLoader(CellularSampler.ReturnType.class, - (type, o, loader, depthTracker) -> CellularSampler.ReturnType.valueOf((String) o)) + .applyLoader(CellularStyleSampler.CellularReturnType.class, + (type, o, loader, depthTracker) -> CellularStyleSampler.CellularReturnType.valueOf((String) o)) .applyLoader(DistanceFunction.class, (type, o, loader, depthTracker) -> DistanceFunction.valueOf((String) o)) .applyLoader(DimensionApplicableSampler.class, DimensionApplicableSampler::new) 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 3307a600e..9b018d1ab 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 @@ -7,7 +7,8 @@ package com.dfsek.terra.addons.noise.config.templates.noise; -import com.dfsek.seismic.algorithms.sampler.noise.CellularSampler; +import com.dfsek.seismic.algorithms.sampler.noise.cellular.CellularStyleSampler; +import com.dfsek.seismic.algorithms.sampler.noise.cellular.CellularSampler; import com.dfsek.seismic.algorithms.sampler.noise.simplex.OpenSimplex2Sampler; import com.dfsek.seismic.type.DistanceFunction; import com.dfsek.seismic.type.sampler.Sampler; @@ -25,7 +26,7 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Value("return") @Default - private CellularSampler.@Meta ReturnType cellularReturnType = CellularSampler.ReturnType.Distance; + private CellularStyleSampler.@Meta CellularReturnType cellularReturnType = CellularStyleSampler.CellularReturnType.Distance; @Value("jitter") @Default 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 90206c427..304574020 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 @@ -22,7 +22,7 @@ public class SimpleNoiseTemplate extends NoiseTemplate< @Override public Sampler get() { - NoiseFunction sampler = null; + NoiseFunction sampler; try { sampler = samplerClass.getConstructor(double.class, long.class) .newInstance(frequency, salt); From cd8d6f0da31252c240d9d0af669c05d549080d32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Wed, 9 Jul 2025 18:02:59 -0600 Subject: [PATCH 092/116] fix build --- .../com/dfsek/terra/bukkit/nms/v1_21_7/AwfulBukkitHacks.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/AwfulBukkitHacks.java b/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/AwfulBukkitHacks.java index 2afefb0ad..57840f84a 100644 --- a/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/AwfulBukkitHacks.java +++ b/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/AwfulBukkitHacks.java @@ -27,8 +27,7 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -import com.dfsek.terra.bukkit.nms.v1_21_6.config.VanillaBiomeProperties; -import com.dfsek.terra.bukkit.world.BukkitBiomeInfo; + import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; import com.dfsek.terra.registry.master.ConfigRegistry; From f38fcd03b042562fb4d55b9c9f6d46bf00a5c881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Thu, 10 Jul 2025 21:52:39 -0600 Subject: [PATCH 093/116] Reformat --- .../generation/math/samplers/Sampler3D.java | 3 +- .../dfsek/terra/addons/noise/NoiseAddon.java | 1 - .../noise/CellularNoiseTemplate.java | 6 +-- .../templates/noise/SimpleNoiseTemplate.java | 2 +- .../noise/fractal/BrownianMotionTemplate.java | 3 +- .../script/functions/BlockFunction.java | 11 +++-- .../registry/meta/CheckedRegistryHolder.java | 4 +- .../com/dfsek/terra/bukkit/PlatformImpl.java | 1 - .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 4 +- .../hooks/MultiverseGeneratorPluginHook.java | 10 ++--- .../bukkit/listeners/CommonListener.java | 10 ++--- .../dfsek/terra/bukkit/nms/Initializer.java | 8 ++-- .../terra/bukkit/world/BukkitBiomeInfo.java | 3 +- .../bukkit/nms/v1_21_7/AwfulBukkitHacks.java | 10 ++--- .../terra/bukkit/nms/v1_21_7/NMSPlatform.java | 43 ++++++++----------- .../terra/bukkit/nms/v1_21_7/Reflection.java | 1 + .../config/BiomeParticleConfigTemplate.java | 5 +-- .../config/VanillaBiomeProperties.java | 1 - .../java/com/dfsek/terra/cli/TerraCLI.java | 9 ++-- .../minestom/world/TerraMinestomWorld.java | 18 ++++---- .../java/com/dfsek/terra/mod/ModPlatform.java | 1 - .../config/BiomeParticleConfigTemplate.java | 2 +- .../terra/mod/config/SpawnEntryConfig.java | 1 + .../inventory/meta/ItemStackMetaMixin.java | 12 ++---- 24 files changed, 74 insertions(+), 95 deletions(-) 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 cdab4e40a..f043ffb7b 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 @@ -28,7 +28,8 @@ public class Sampler3D { } public double sample(double x, double y, double z) { - return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation(FloatingPointFunctions.round(x), FloatingPointFunctions.round(z)); + return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation(FloatingPointFunctions.round(x), + FloatingPointFunctions.round(z)); } public double sample(int x, int y, int z) { 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 2fcab4281..0a3aeb102 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 @@ -14,7 +14,6 @@ import com.dfsek.seismic.algorithms.sampler.arithmetic.MaxSampler; import com.dfsek.seismic.algorithms.sampler.arithmetic.MinSampler; import com.dfsek.seismic.algorithms.sampler.arithmetic.MultiplicationSampler; import com.dfsek.seismic.algorithms.sampler.arithmetic.SubtractionSampler; -import com.dfsek.seismic.algorithms.sampler.noise.cellular.CellularSampler; import com.dfsek.seismic.algorithms.sampler.noise.cellular.CellularStyleSampler; import com.dfsek.seismic.algorithms.sampler.noise.random.GaussianNoiseSampler; import com.dfsek.seismic.algorithms.sampler.noise.random.PositiveWhiteNoiseSampler; 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 9b018d1ab..308e4481d 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 @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.noise.config.templates.noise; -import com.dfsek.seismic.algorithms.sampler.noise.cellular.CellularStyleSampler; import com.dfsek.seismic.algorithms.sampler.noise.cellular.CellularSampler; +import com.dfsek.seismic.algorithms.sampler.noise.cellular.CellularStyleSampler; import com.dfsek.seismic.algorithms.sampler.noise.simplex.OpenSimplex2Sampler; import com.dfsek.seismic.type.DistanceFunction; import com.dfsek.seismic.type.sampler.Sampler; @@ -32,7 +32,6 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Default private @Meta double cellularJitter = 1.0D; - @Value("lookup") @Default private @Meta Sampler lookup = new OpenSimplex2Sampler(0.02d, 0); @@ -43,7 +42,8 @@ public class CellularNoiseTemplate extends NoiseTemplate { @Override public Sampler get() { - CellularSampler sampler = new CellularSampler(frequency, salt, lookup, cellularDistanceFunction, cellularReturnType, cellularJitter, saltLookup); + CellularSampler sampler = new CellularSampler(frequency, salt, lookup, cellularDistanceFunction, cellularReturnType, cellularJitter, + saltLookup); return sampler; } } 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 304574020..d3822ec1a 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 @@ -25,7 +25,7 @@ public class SimpleNoiseTemplate extends NoiseTemplate< NoiseFunction sampler; try { sampler = samplerClass.getConstructor(double.class, long.class) - .newInstance(frequency, salt); + .newInstance(frequency, salt); } catch(InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { throw new RuntimeException(e); } 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 6ccb0e630..01a8cb11b 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 @@ -15,7 +15,8 @@ import com.dfsek.seismic.type.sampler.Sampler; public class BrownianMotionTemplate extends FractalTemplate { @Override public Sampler get() { - BrownianMotionSampler sampler = new BrownianMotionSampler(salt, function, fractalGain, fractalLacunarity, weightedStrength, octaves); + BrownianMotionSampler sampler = new BrownianMotionSampler(salt, function, fractalGain, fractalLacunarity, weightedStrength, + octaves); return sampler; } } 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 279c28079..128647bd3 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 @@ -10,6 +10,11 @@ package com.dfsek.terra.addons.terrascript.script.functions; import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.seismic.type.vector.Vector2; import com.dfsek.seismic.type.vector.Vector3; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -21,12 +26,6 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - public class BlockFunction implements Function { private static final Logger logger = LoggerFactory.getLogger(BlockFunction.class); diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/CheckedRegistryHolder.java b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/CheckedRegistryHolder.java index a55be5885..2554483ea 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/CheckedRegistryHolder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/CheckedRegistryHolder.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.registry.meta; -import java.lang.reflect.Type; - import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; +import java.lang.reflect.Type; + public interface CheckedRegistryHolder extends RegistryHolder { default CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException { diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java index 84e9dfcc6..84efbc0cf 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java @@ -20,7 +20,6 @@ package com.dfsek.terra.bukkit; import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; - import io.papermc.paper.registry.RegistryAccess; import io.papermc.paper.registry.RegistryKey; import org.bukkit.Bukkit; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java index 0a046651d..90bd3a075 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java @@ -50,10 +50,8 @@ import com.dfsek.terra.bukkit.world.BukkitAdapter; public class TerraBukkitPlugin extends JavaPlugin { private static final Logger logger = LoggerFactory.getLogger(TerraBukkitPlugin.class); - - private PlatformImpl platform; private final Map generatorMap = new HashMap<>(); - + private PlatformImpl platform; private AsyncScheduler asyncScheduler = this.getServer().getAsyncScheduler(); private GlobalRegionScheduler globalRegionScheduler = this.getServer().getGlobalRegionScheduler(); diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java index e0e8f0d52..10be0f8ff 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java @@ -19,6 +19,11 @@ public final class MultiverseGeneratorPluginHook implements GeneratorPlugin { this.platform = platform; } + public static void register(Platform platform) { + MultiverseCoreApi.get().getGeneratorProvider() + .registerGeneratorPlugin(new MultiverseGeneratorPluginHook(platform)); + } + @Override public @NotNull Collection suggestIds(@Nullable String s) { return platform.getConfigRegistry().entries().stream() @@ -46,9 +51,4 @@ public final class MultiverseGeneratorPluginHook implements GeneratorPlugin { public @NotNull String getPluginName() { return "Terra"; } - - public static void register(Platform platform) { - MultiverseCoreApi.get().getGeneratorProvider() - .registerGeneratorPlugin(new MultiverseGeneratorPluginHook(platform)); - } } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index b49b383f0..22e55d9d2 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -69,26 +69,26 @@ public class CommonListener implements Listener { @EventHandler public void onWolfSpawn(CreatureSpawnEvent event) { - if (!(event.getEntity() instanceof Wolf wolf)) { + if(!(event.getEntity() instanceof Wolf wolf)) { return; } // Doesn't apply if variant has already been applied - if (wolf.getVariant() != Variant.PALE) { + if(wolf.getVariant() != Variant.PALE) { return; } - if (!WOLF_VARIANT_SPAWN_REASONS.contains(event.getSpawnReason())) { + if(!WOLF_VARIANT_SPAWN_REASONS.contains(event.getSpawnReason())) { return; } World world = wolf.getWorld(); - if (!(world.getGenerator() instanceof BukkitChunkGeneratorWrapper wrapper)) { + if(!(world.getGenerator() instanceof BukkitChunkGeneratorWrapper wrapper)) { return; } ConfigPack pack = platform.getConfigRegistry().get(wrapper.getPack().getRegistryKey()).orElse(null); - if (pack == null) { + if(pack == null) { return; } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java index 2074ea493..132df6006 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java @@ -1,12 +1,10 @@ package com.dfsek.terra.bukkit.nms; -import com.dfsek.terra.bukkit.TerraBukkitPlugin; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.dfsek.terra.bukkit.BukkitAddon; import com.dfsek.terra.bukkit.PlatformImpl; +import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.util.VersionUtil; @@ -18,7 +16,7 @@ public interface Initializer { Logger logger = LoggerFactory.getLogger(Initializer.class); PlatformImpl platform = constructPlatform(plugin); - if (platform == null) { + if(platform == null) { logger.error("NMS bindings for version {} do not exist. Support for this version is limited.", NMS); logger.error("This is usually due to running Terra on an unsupported Minecraft version."); String bypassKey = "IKnowThereAreNoNMSBindingsFor" + NMS + "ButIWillProceedAnyway"; @@ -48,7 +46,7 @@ public interface Initializer { private static PlatformImpl constructPlatform(TerraBukkitPlugin plugin) { try { String packageVersion = NMS; - if (NMS.equals("v1_21_5") || NMS.equals("v1_21_6")) { + if(NMS.equals("v1_21_5") || NMS.equals("v1_21_6")) { packageVersion = "v1_21_7"; } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeInfo.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeInfo.java index eb59c3cb5..9079005e9 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeInfo.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeInfo.java @@ -5,4 +5,5 @@ import org.bukkit.NamespacedKey; import com.dfsek.terra.api.properties.Properties; -public record BukkitBiomeInfo(NamespacedKey biomeKey) implements Properties {} +public record BukkitBiomeInfo(NamespacedKey biomeKey) implements Properties { +} diff --git a/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/AwfulBukkitHacks.java b/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/AwfulBukkitHacks.java index 0aad4091c..5558f489a 100644 --- a/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/AwfulBukkitHacks.java +++ b/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/AwfulBukkitHacks.java @@ -1,9 +1,5 @@ package com.dfsek.terra.bukkit.nms.v1_21_7; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.VanillaBiomeProperties; - -import com.dfsek.terra.bukkit.world.BukkitBiomeInfo; - import net.minecraft.core.Holder; import net.minecraft.core.Holder.Reference; import net.minecraft.core.HolderSet; @@ -29,7 +25,8 @@ import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; - +import com.dfsek.terra.bukkit.nms.v1_21_7.config.VanillaBiomeProperties; +import com.dfsek.terra.bukkit.world.BukkitBiomeInfo; import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; import com.dfsek.terra.registry.master.ConfigRegistry; @@ -61,7 +58,8 @@ public class AwfulBukkitHacks { Biome platform = NMSBiomeInjector.createBiome(biomeRegistry.get(vanillaMinecraftKey).orElseThrow().value(), vanillaBiomeProperties); - ResourceLocation delegateMinecraftKey = ResourceLocation.fromNamespaceAndPath("terra", NMSBiomeInjector.createBiomeID(pack, key)); + ResourceLocation delegateMinecraftKey = ResourceLocation.fromNamespaceAndPath("terra", + NMSBiomeInjector.createBiomeID(pack, key)); NamespacedKey delegateBukkitKey = NamespacedKey.fromString(delegateMinecraftKey.toString()); ResourceKey delegateKey = ResourceKey.create(Registries.BIOME, delegateMinecraftKey); diff --git a/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/NMSPlatform.java b/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/NMSPlatform.java index d5e87fd96..c7d2fb49f 100644 --- a/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/NMSPlatform.java +++ b/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/NMSPlatform.java @@ -1,31 +1,7 @@ package com.dfsek.terra.bukkit.nms.v1_21_7; import com.dfsek.tectonic.api.TypeRegistry; - import com.dfsek.tectonic.api.exception.LoadException; - -import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.world.biome.PlatformBiome; -import com.dfsek.terra.bukkit.PlatformImpl; -import com.dfsek.terra.bukkit.TerraBukkitPlugin; - -import com.dfsek.terra.bukkit.nms.v1_21_7.config.BiomeAdditionsSoundTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.BiomeMoodSoundTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.BiomeParticleConfigTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.EntityTypeTemplate; - -import com.dfsek.terra.bukkit.nms.v1_21_7.config.MusicSoundTemplate; - -import com.dfsek.terra.bukkit.nms.v1_21_7.config.SoundEventTemplate; - -import com.dfsek.terra.bukkit.nms.v1_21_7.config.SpawnCostConfig; - -import com.dfsek.terra.bukkit.nms.v1_21_7.config.SpawnEntryConfig; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.SpawnSettingsTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.SpawnTypeConfig; - -import com.dfsek.terra.bukkit.nms.v1_21_7.config.VillagerTypeTemplate; - import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.Music; import net.minecraft.sounds.SoundEvent; @@ -39,12 +15,27 @@ import net.minecraft.world.level.biome.Biome.Precipitation; import net.minecraft.world.level.biome.Biome.TemperatureModifier; import net.minecraft.world.level.biome.BiomeSpecialEffects.GrassColorModifier; import net.minecraft.world.level.biome.MobSpawnSettings; -import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData; import org.bukkit.Bukkit; import java.util.List; import java.util.Locale; +import com.dfsek.terra.api.addon.BaseAddon; +import com.dfsek.terra.api.world.biome.PlatformBiome; +import com.dfsek.terra.bukkit.PlatformImpl; +import com.dfsek.terra.bukkit.TerraBukkitPlugin; +import com.dfsek.terra.bukkit.nms.v1_21_7.config.BiomeAdditionsSoundTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_7.config.BiomeMoodSoundTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_7.config.BiomeParticleConfigTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_7.config.EntityTypeTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_7.config.MusicSoundTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_7.config.SoundEventTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_7.config.SpawnCostConfig; +import com.dfsek.terra.bukkit.nms.v1_21_7.config.SpawnEntryConfig; +import com.dfsek.terra.bukkit.nms.v1_21_7.config.SpawnSettingsTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_7.config.SpawnTypeConfig; +import com.dfsek.terra.bukkit.nms.v1_21_7.config.VillagerTypeTemplate; + public class NMSPlatform extends PlatformImpl { @@ -72,7 +63,7 @@ public class NMSPlatform extends PlatformImpl { .registerLoader(GrassColorModifier.class, (type, o, loader, depthTracker) -> TemperatureModifier.valueOf(((String) o).toUpperCase( Locale.ROOT))) - .registerLoader(MobCategory.class, (type, o, loader, depthTracker) -> MobCategory.valueOf((String) o)) + .registerLoader(MobCategory.class, (type, o, loader, depthTracker) -> MobCategory.valueOf((String) o)) .registerLoader(AmbientParticleSettings.class, BiomeParticleConfigTemplate::new) .registerLoader(SoundEvent.class, SoundEventTemplate::new) .registerLoader(AmbientMoodSettings.class, BiomeMoodSoundTemplate::new) diff --git a/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/Reflection.java b/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/Reflection.java index 41c761654..7f0748570 100644 --- a/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/Reflection.java +++ b/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/Reflection.java @@ -130,6 +130,7 @@ public class Reflection { int invokeGrassColorFromTexture(Biome instance); } + @Proxies(VillagerType.class) public interface VillagerTypeProxy { @Static diff --git a/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/config/BiomeParticleConfigTemplate.java b/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/config/BiomeParticleConfigTemplate.java index 41c65dbab..c564a190f 100644 --- a/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/config/BiomeParticleConfigTemplate.java +++ b/platforms/bukkit/nms/v1_21_7/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_7/config/BiomeParticleConfigTemplate.java @@ -7,10 +7,7 @@ import com.mojang.brigadier.StringReader; import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.commands.arguments.ParticleArgument; import net.minecraft.core.HolderLookup; -import net.minecraft.core.HolderLookup.Provider; -import net.minecraft.core.HolderLookup.RegistryLookup; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.core.registries.Registries; import net.minecraft.world.level.biome.AmbientParticleSettings; import java.util.stream.Stream; @@ -24,7 +21,7 @@ public class BiomeParticleConfigTemplate implements ObjectTemplate { @Value("type") @Default diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/ItemStackMetaMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/ItemStackMetaMixin.java index 91a487d0b..129bbb1ad 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/ItemStackMetaMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/ItemStackMetaMixin.java @@ -17,22 +17,18 @@ package com.dfsek.terra.mod.mixin.implementations.terra.inventory.meta; +import com.dfsek.terra.api.inventory.item.Enchantment; +import com.dfsek.terra.api.inventory.item.ItemMeta; + import net.minecraft.component.type.ItemEnchantmentsComponent; import net.minecraft.item.ItemStack; import net.minecraft.registry.entry.RegistryEntry; -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.*; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import com.dfsek.terra.api.inventory.item.Enchantment; -import com.dfsek.terra.api.inventory.item.ItemMeta; - @Mixin(ItemStack.class) @Implements(@Interface(iface = ItemMeta.class, prefix = "terra$")) From 77b077dd474498424a9a0f2522dab09a0b3e319c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Thu, 10 Jul 2025 23:45:05 -0600 Subject: [PATCH 094/116] update seismic to snaphsot --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 69a78e085..d89a0026f 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -7,7 +7,7 @@ object Versions { const val tectonic = "4.2.1" const val paralithic = "2.0.1" const val strata = "1.3.2" - const val seismic = "2.0.3" + const val seismic = "2.0.4-SNAPSHOT" const val cloud = "2.0.0" From 0fc2105ee6b81850a1b26d51d768e8d40208a22f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 11 Jul 2025 02:10:02 -0600 Subject: [PATCH 095/116] update seismic version --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index d89a0026f..1ff20518f 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -7,7 +7,7 @@ object Versions { const val tectonic = "4.2.1" const val paralithic = "2.0.1" const val strata = "1.3.2" - const val seismic = "2.0.4-SNAPSHOT" + const val seismic = "2.0.4" const val cloud = "2.0.0" From a5c37335681b43e18be5cec697cf47fbfb8eee40 Mon Sep 17 00:00:00 2001 From: OakLoaf Date: Tue, 30 Sep 2025 18:42:58 +0100 Subject: [PATCH 096/116] Updated dependencies for 1.21.9 --- buildSrc/src/main/kotlin/Versions.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 320387ef1..a84e0079d 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -28,7 +28,7 @@ object Versions { } object Fabric { - const val fabricAPI = "0.129.0+${Mod.minecraft}" + const val fabricAPI = "0.133.14+${Mod.minecraft}" const val cloud = "2.0.0-beta.11" } // @@ -41,12 +41,12 @@ object Versions { const val mixin = "0.15.5+mixin.0.8.7" const val mixinExtras = "0.4.1" - const val minecraft = "1.21.8" + const val minecraft = "1.21.9" const val yarn = "$minecraft+build.1" - const val fabricLoader = "0.16.14" + const val fabricLoader = "0.17.2" - const val architecuryLoom = "1.10.431" - const val architecturyPlugin = "3.4.161" + const val architecuryLoom = "1.11.440" + const val architecturyPlugin = "3.4.162" } // @@ -56,8 +56,8 @@ object Versions { // } object Bukkit { - const val minecraft = "1.21.8-R0.1" - const val paperBuild = "$minecraft-20250717.233435-4" + const val minecraft = "1.21.9-rc1-R0.1" + const val paperBuild = "$minecraft-20250930.133904-13" const val paper = paperBuild const val paperLib = "1.0.8" const val reflectionRemapper = "0.1.2" From af509ebc3b0733797dec1dae27ea875bd76c163b Mon Sep 17 00:00:00 2001 From: OakLoaf Date: Tue, 30 Sep 2025 18:43:11 +0100 Subject: [PATCH 097/116] Disabled AllayMC platform --- platforms/allay/{build.gradle.kts => build.gradle.kts.disabled} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename platforms/allay/{build.gradle.kts => build.gradle.kts.disabled} (100%) diff --git a/platforms/allay/build.gradle.kts b/platforms/allay/build.gradle.kts.disabled similarity index 100% rename from platforms/allay/build.gradle.kts rename to platforms/allay/build.gradle.kts.disabled From b88712e56911684408426420fe74c30c38b36fce Mon Sep 17 00:00:00 2001 From: OakLoaf Date: Tue, 30 Sep 2025 18:51:25 +0100 Subject: [PATCH 098/116] Fixed compilation errors --- .../com/dfsek/terra/lifecycle/LifecyclePlatform.java | 3 ++- .../lifecycle/mixin/lifecycle/MinecraftServerMixin.java | 9 +++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java index d696ce180..cd1e9fc23 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java @@ -7,6 +7,7 @@ import ca.solostudios.strata.version.Version; import com.dfsek.terra.api.util.reflection.ReflectionUtil; import net.minecraft.MinecraftVersion; +import net.minecraft.SharedConstants; import net.minecraft.enchantment.Enchantment; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKeys; @@ -107,7 +108,7 @@ public abstract class LifecyclePlatform extends ModPlatform { super.platformAddon().forEach(addons::add); - String mcVersion = MinecraftVersion.CURRENT.name(); + String mcVersion = SharedConstants.getGameVersion().name(); try { addons.add(new EphemeralAddon(Versions.parseVersion(mcVersion), "minecraft")); } catch(ParseException e) { diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/MinecraftServerMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/MinecraftServerMixin.java index e52b0fdab..9cde600c3 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/MinecraftServerMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/MinecraftServerMixin.java @@ -1,14 +1,11 @@ package com.dfsek.terra.lifecycle.mixin.lifecycle; -import com.dfsek.terra.mod.CommonPlatform; -import com.dfsek.terra.mod.ModPlatform; - import com.mojang.datafixers.DataFixer; import net.minecraft.resource.ResourcePackManager; import net.minecraft.server.MinecraftServer; import net.minecraft.server.SaveLoader; -import net.minecraft.server.WorldGenerationProgressListenerFactory; import net.minecraft.util.ApiServices; +import net.minecraft.world.chunk.ChunkLoadProgress; import net.minecraft.world.level.storage.LevelStorage; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -25,11 +22,11 @@ public class MinecraftServerMixin { @Inject(method = "(Ljava/lang/Thread;Lnet/minecraft/world/level/storage/LevelStorage$Session;" + "Lnet/minecraft/resource/ResourcePackManager;Lnet/minecraft/server/SaveLoader;Ljava/net/Proxy;" + "Lcom/mojang/datafixers/DataFixer;Lnet/minecraft/util/ApiServices;" + - "Lnet/minecraft/server/WorldGenerationProgressListenerFactory;)V", + "Lnet/minecraft/world/chunk/ChunkLoadProgress;)V", at = @At("RETURN")) private void injectConstructor(Thread serverThread, LevelStorage.Session session, ResourcePackManager dataPackManager, SaveLoader saveLoader, Proxy proxy, DataFixer dataFixer, ApiServices apiServices, - WorldGenerationProgressListenerFactory worldGenerationProgressListenerFactory, CallbackInfo ci) { + ChunkLoadProgress chunkLoadProgress, CallbackInfo ci) { LifecyclePlatform.setServer((MinecraftServer) (Object) this); } } From 4b218a65f6abe86c37ef7a4c59ca28bb317b97b3 Mon Sep 17 00:00:00 2001 From: OakLoaf Date: Tue, 30 Sep 2025 19:00:36 +0100 Subject: [PATCH 099/116] Refactored bukkit nms package --- platforms/bukkit/build.gradle.kts | 2 +- .../dfsek/terra/bukkit/nms/Initializer.java | 7 +----- .../nms/{v1_21_8 => v1_21_9}/build.gradle.kts | 0 .../bukkit/nms/v1_21_9}/AwfulBukkitHacks.java | 4 ++-- .../terra/bukkit/nms/v1_21_9}/NMSAddon.java | 4 ++-- .../bukkit/nms/v1_21_9}/NMSBiomeInfo.java | 2 +- .../bukkit/nms/v1_21_9}/NMSBiomeInjector.java | 4 ++-- .../bukkit/nms/v1_21_9}/NMSBiomeProvider.java | 2 +- .../v1_21_9}/NMSChunkGeneratorDelegate.java | 2 +- .../nms/v1_21_9}/NMSInjectListener.java | 2 +- .../bukkit/nms/v1_21_9}/NMSPlatform.java | 24 +++++++++---------- .../nms/v1_21_9}/NMSWorldProperties.java | 2 +- .../terra/bukkit/nms/v1_21_9}/Reflection.java | 2 +- .../bukkit/nms/v1_21_9}/RegistryFetcher.java | 2 +- .../config/BiomeAdditionsSoundTemplate.java | 2 +- .../config/BiomeMoodSoundTemplate.java | 2 +- .../config/BiomeParticleConfigTemplate.java | 2 +- .../v1_21_9}/config/EntityTypeTemplate.java | 2 +- .../v1_21_9}/config/MusicSoundTemplate.java | 2 +- .../v1_21_9}/config/SoundEventTemplate.java | 2 +- .../nms/v1_21_9}/config/SpawnCostConfig.java | 2 +- .../nms/v1_21_9}/config/SpawnEntryConfig.java | 2 +- .../config/SpawnSettingsTemplate.java | 2 +- .../nms/v1_21_9}/config/SpawnTypeConfig.java | 2 +- .../config/VanillaBiomeProperties.java | 2 +- .../v1_21_9}/config/VillagerTypeTemplate.java | 2 +- 26 files changed, 39 insertions(+), 44 deletions(-) rename platforms/bukkit/nms/{v1_21_8 => v1_21_9}/build.gradle.kts (100%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/AwfulBukkitHacks.java (98%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/NMSAddon.java (89%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/NMSBiomeInfo.java (83%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/NMSBiomeInjector.java (97%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/NMSBiomeProvider.java (97%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/NMSChunkGeneratorDelegate.java (99%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/NMSInjectListener.java (98%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/NMSPlatform.java (84%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/NMSWorldProperties.java (94%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/Reflection.java (99%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/RegistryFetcher.java (94%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/config/BiomeAdditionsSoundTemplate.java (94%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/config/BiomeMoodSoundTemplate.java (95%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/config/BiomeParticleConfigTemplate.java (96%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/config/EntityTypeTemplate.java (92%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/config/MusicSoundTemplate.java (95%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/config/SoundEventTemplate.java (94%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/config/SpawnCostConfig.java (94%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/config/SpawnEntryConfig.java (95%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/config/SpawnSettingsTemplate.java (96%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/config/SpawnTypeConfig.java (93%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/config/VanillaBiomeProperties.java (98%) rename platforms/bukkit/nms/{v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8 => v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9}/config/VillagerTypeTemplate.java (93%) diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index 7abb48183..c00921b3d 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -8,7 +8,7 @@ dependencies { paperweight.paperDevBundle(Versions.Bukkit.paperDevBundle) shaded(project(":platforms:bukkit:common")) - shaded(project(":platforms:bukkit:nms:v1_21_8")) + shaded(project(":platforms:bukkit:nms:v1_21_9")) shaded("xyz.jpenilla", "reflection-remapper", Versions.Bukkit.reflectionRemapper) } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java index a6062a528..68a981676 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/nms/Initializer.java @@ -46,12 +46,7 @@ public interface Initializer { private static PlatformImpl constructPlatform(TerraBukkitPlugin plugin) { try { - String packageVersion = NMS; - if (NMS.equals("v1_21_5") || NMS.equals("v1_21_6") || NMS.equals("v1_21_7")) { - packageVersion = "v1_21_8"; - } - - Class platformClass = Class.forName(TERRA_PACKAGE + "." + packageVersion + ".NMSPlatform"); + Class platformClass = Class.forName(TERRA_PACKAGE + "." + NMS + ".NMSPlatform"); try { return (PlatformImpl) platformClass .getConstructor(TerraBukkitPlugin.class) diff --git a/platforms/bukkit/nms/v1_21_8/build.gradle.kts b/platforms/bukkit/nms/v1_21_9/build.gradle.kts similarity index 100% rename from platforms/bukkit/nms/v1_21_8/build.gradle.kts rename to platforms/bukkit/nms/v1_21_9/build.gradle.kts diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/AwfulBukkitHacks.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/AwfulBukkitHacks.java similarity index 98% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/AwfulBukkitHacks.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/AwfulBukkitHacks.java index ee206e34d..0148e25dd 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/AwfulBukkitHacks.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/AwfulBukkitHacks.java @@ -1,6 +1,6 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8; +package com.dfsek.terra.bukkit.nms.v1_21_9; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.VanillaBiomeProperties; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.VanillaBiomeProperties; import com.dfsek.terra.bukkit.world.BukkitBiomeInfo; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSAddon.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSAddon.java similarity index 89% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSAddon.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSAddon.java index 8d1a1ecf9..a0ad31948 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSAddon.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSAddon.java @@ -1,11 +1,11 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8; +package com.dfsek.terra.bukkit.nms.v1_21_9; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.bukkit.BukkitAddon; import com.dfsek.terra.bukkit.PlatformImpl; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.VanillaBiomeProperties; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.VanillaBiomeProperties; public class NMSAddon extends BukkitAddon { diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSBiomeInfo.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSBiomeInfo.java similarity index 83% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSBiomeInfo.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSBiomeInfo.java index 8626f2cd4..d7d468cca 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSBiomeInfo.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSBiomeInfo.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8; +package com.dfsek.terra.bukkit.nms.v1_21_9; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.biome.Biome; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSBiomeInjector.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSBiomeInjector.java similarity index 97% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSBiomeInjector.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSBiomeInjector.java index 8f61ca024..458375012 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSBiomeInjector.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSBiomeInjector.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8; +package com.dfsek.terra.bukkit.nms.v1_21_9; import net.minecraft.core.Holder; import net.minecraft.core.Registry; @@ -12,7 +12,7 @@ import java.util.Objects; import java.util.Optional; import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.VanillaBiomeProperties; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.VanillaBiomeProperties; public class NMSBiomeInjector { diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSBiomeProvider.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSBiomeProvider.java similarity index 97% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSBiomeProvider.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSBiomeProvider.java index 2bf071eb0..ac70c0127 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSBiomeProvider.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSBiomeProvider.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8; +package com.dfsek.terra.bukkit.nms.v1_21_9; import com.mojang.serialization.MapCodec; import net.minecraft.core.Holder; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSChunkGeneratorDelegate.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSChunkGeneratorDelegate.java similarity index 99% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSChunkGeneratorDelegate.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSChunkGeneratorDelegate.java index ebc3797fd..4356b88bc 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSChunkGeneratorDelegate.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSChunkGeneratorDelegate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8; +package com.dfsek.terra.bukkit.nms.v1_21_9; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSInjectListener.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSInjectListener.java similarity index 98% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSInjectListener.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSInjectListener.java index 809435c8b..1c656c3cc 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSInjectListener.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSInjectListener.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8; +package com.dfsek.terra.bukkit.nms.v1_21_9; import net.minecraft.server.level.ChunkMap; import net.minecraft.server.level.ServerLevel; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSPlatform.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSPlatform.java similarity index 84% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSPlatform.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSPlatform.java index a94691844..ddaa8937e 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSPlatform.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSPlatform.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8; +package com.dfsek.terra.bukkit.nms.v1_21_9; import com.dfsek.tectonic.api.TypeRegistry; @@ -12,22 +12,22 @@ import com.dfsek.terra.api.world.biome.PlatformBiome; import com.dfsek.terra.bukkit.PlatformImpl; import com.dfsek.terra.bukkit.TerraBukkitPlugin; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.BiomeAdditionsSoundTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.BiomeMoodSoundTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.BiomeParticleConfigTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.EntityTypeTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.BiomeAdditionsSoundTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.BiomeMoodSoundTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.BiomeParticleConfigTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.EntityTypeTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.MusicSoundTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.MusicSoundTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.SoundEventTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.SoundEventTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.SpawnCostConfig; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnCostConfig; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.SpawnEntryConfig; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.SpawnSettingsTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.SpawnTypeConfig; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnEntryConfig; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnSettingsTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnTypeConfig; -import com.dfsek.terra.bukkit.nms.v1_21_8.config.VillagerTypeTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.VillagerTypeTemplate; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.Music; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSWorldProperties.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSWorldProperties.java similarity index 94% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSWorldProperties.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSWorldProperties.java index 1f8deecfa..da602a85a 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/NMSWorldProperties.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSWorldProperties.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8; +package com.dfsek.terra.bukkit.nms.v1_21_9; import net.minecraft.world.level.LevelHeightAccessor; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/Reflection.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/Reflection.java similarity index 99% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/Reflection.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/Reflection.java index 728b635c6..f450cae11 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/Reflection.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/Reflection.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8; +package com.dfsek.terra.bukkit.nms.v1_21_9; import net.minecraft.core.Holder; import net.minecraft.core.Holder.Reference; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/RegistryFetcher.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/RegistryFetcher.java similarity index 94% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/RegistryFetcher.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/RegistryFetcher.java index bb24f315f..5541ee786 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/RegistryFetcher.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/RegistryFetcher.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8; +package com.dfsek.terra.bukkit.nms.v1_21_9; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/BiomeAdditionsSoundTemplate.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/BiomeAdditionsSoundTemplate.java similarity index 94% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/BiomeAdditionsSoundTemplate.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/BiomeAdditionsSoundTemplate.java index a0f1d8e8b..e6ac43d9e 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/BiomeAdditionsSoundTemplate.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/BiomeAdditionsSoundTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8.config; +package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/BiomeMoodSoundTemplate.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/BiomeMoodSoundTemplate.java similarity index 95% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/BiomeMoodSoundTemplate.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/BiomeMoodSoundTemplate.java index 8aa23867d..c18075e18 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/BiomeMoodSoundTemplate.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/BiomeMoodSoundTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8.config; +package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/BiomeParticleConfigTemplate.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/BiomeParticleConfigTemplate.java similarity index 96% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/BiomeParticleConfigTemplate.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/BiomeParticleConfigTemplate.java index 162ee1a9d..8341e4a20 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/BiomeParticleConfigTemplate.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/BiomeParticleConfigTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8.config; +package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/EntityTypeTemplate.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/EntityTypeTemplate.java similarity index 92% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/EntityTypeTemplate.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/EntityTypeTemplate.java index 095a6126c..4dcff2208 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/EntityTypeTemplate.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/EntityTypeTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8.config; +package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/MusicSoundTemplate.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/MusicSoundTemplate.java similarity index 95% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/MusicSoundTemplate.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/MusicSoundTemplate.java index ae8663936..66faaefea 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/MusicSoundTemplate.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/MusicSoundTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8.config; +package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SoundEventTemplate.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SoundEventTemplate.java similarity index 94% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SoundEventTemplate.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SoundEventTemplate.java index 7f79e22d1..e72e7dce5 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SoundEventTemplate.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SoundEventTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8.config; +package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SpawnCostConfig.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnCostConfig.java similarity index 94% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SpawnCostConfig.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnCostConfig.java index a83e380ec..b89911454 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SpawnCostConfig.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnCostConfig.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8.config; +package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SpawnEntryConfig.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnEntryConfig.java similarity index 95% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SpawnEntryConfig.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnEntryConfig.java index b0902cd9a..3aa3f578b 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SpawnEntryConfig.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnEntryConfig.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8.config; +package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SpawnSettingsTemplate.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnSettingsTemplate.java similarity index 96% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SpawnSettingsTemplate.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnSettingsTemplate.java index 1ccf76a35..fcc798767 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SpawnSettingsTemplate.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnSettingsTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8.config; +package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SpawnTypeConfig.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnTypeConfig.java similarity index 93% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SpawnTypeConfig.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnTypeConfig.java index f7d2f4722..bd8680423 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/SpawnTypeConfig.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnTypeConfig.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8.config; +package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/VanillaBiomeProperties.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/VanillaBiomeProperties.java similarity index 98% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/VanillaBiomeProperties.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/VanillaBiomeProperties.java index c227ae835..3882f4e4f 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/VanillaBiomeProperties.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/VanillaBiomeProperties.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8.config; +package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.ConfigTemplate; import com.dfsek.tectonic.api.config.template.annotations.Default; diff --git a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/VillagerTypeTemplate.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/VillagerTypeTemplate.java similarity index 93% rename from platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/VillagerTypeTemplate.java rename to platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/VillagerTypeTemplate.java index 7550f6f6f..13b2a9731 100644 --- a/platforms/bukkit/nms/v1_21_8/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_8/config/VillagerTypeTemplate.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/VillagerTypeTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.bukkit.nms.v1_21_8.config; +package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; From 359b4826bc7fa74c5a7b1cfa835895d35b46f348 Mon Sep 17 00:00:00 2001 From: OakLoaf Date: Tue, 30 Sep 2025 19:31:34 +0100 Subject: [PATCH 100/116] Corrected version in fabric.mod.json --- 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 971c46122..98d352556 100644 --- a/platforms/fabric/src/main/resources/fabric.mod.json +++ b/platforms/fabric/src/main/resources/fabric.mod.json @@ -35,7 +35,7 @@ "depends": { "fabricloader": ">=0.16.10", "java": ">=21", - "minecraft": "1.21.7", + "minecraft": "1.21.9", "fabric": "*" } } \ No newline at end of file From d97478d2c4dce0ee31175b2a00a9d42608a50f66 Mon Sep 17 00:00:00 2001 From: OakLoaf Date: Tue, 30 Sep 2025 19:36:24 +0100 Subject: [PATCH 101/116] Added separate version definition for runPaper task --- buildSrc/src/main/kotlin/Versions.kt | 1 + platforms/bukkit/build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index a84e0079d..ab2ad60e9 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -63,6 +63,7 @@ object Versions { const val reflectionRemapper = "0.1.2" const val paperDevBundle = paperBuild const val runPaper = "2.3.1" + const val runPaperMinecraft = "1.21.9" const val paperWeight = "2.0.0-beta.17" const val cloud = "2.0.0-beta.11" const val multiverse = "5.0.2" diff --git a/platforms/bukkit/build.gradle.kts b/platforms/bukkit/build.gradle.kts index c00921b3d..bfbae612f 100644 --- a/platforms/bukkit/build.gradle.kts +++ b/platforms/bukkit/build.gradle.kts @@ -27,7 +27,7 @@ tasks { } runServer { - minecraftVersion(Versions.Bukkit.minecraft) + minecraftVersion(Versions.Bukkit.runPaperMinecraft) dependsOn(shadowJar) pluginJars(shadowJar.get().archiveFile) From 64546bb154ebb9d0acdddf6cbfd0b206da021c37 Mon Sep 17 00:00:00 2001 From: OakLoaf Date: Tue, 30 Sep 2025 19:36:50 +0100 Subject: [PATCH 102/116] Migrated to modern PaperCommandManager --- .../terra/bukkit/BukkitCommandSender.java | 62 ------------------- .../terra/bukkit/CloudCommandSender.java | 46 ++++++++++++++ .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 28 +++------ .../terra/bukkit/world/BukkitAdapter.java | 12 ++-- 4 files changed, 61 insertions(+), 87 deletions(-) delete mode 100644 platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitCommandSender.java create mode 100644 platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/CloudCommandSender.java diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitCommandSender.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitCommandSender.java deleted file mode 100644 index 3f7cfd696..000000000 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/BukkitCommandSender.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is part of Terra. - * - * Terra is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Terra is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Terra. If not, see . - */ - -package com.dfsek.terra.bukkit; - -import org.bukkit.ChatColor; - -import java.util.Optional; - -import com.dfsek.terra.api.command.CommandSender; -import com.dfsek.terra.api.entity.Entity; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.bukkit.world.BukkitAdapter; - - -public class BukkitCommandSender implements CommandSender { - private final org.bukkit.command.CommandSender delegate; - - public BukkitCommandSender(org.bukkit.command.CommandSender delegate) { - this.delegate = delegate; - } - - @Override - public void sendMessage(String message) { - delegate.sendMessage(ChatColor.translateAlternateColorCodes('&', message)); - } - - @Override - public Optional getEntity() { - if(delegate instanceof org.bukkit.entity.Entity entity) { - return Optional.of(BukkitAdapter.adapt(entity)); - } - return Optional.empty(); - } - - @Override - public Optional getPlayer() { - if(delegate instanceof org.bukkit.entity.Player player) { - return Optional.of(BukkitAdapter.adapt(player)); - } - return Optional.empty(); - } - - @Override - public org.bukkit.command.CommandSender getHandle() { - return delegate; - } -} diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/CloudCommandSender.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/CloudCommandSender.java new file mode 100644 index 000000000..4ace5e9b0 --- /dev/null +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/CloudCommandSender.java @@ -0,0 +1,46 @@ +package com.dfsek.terra.bukkit; + +import com.dfsek.terra.api.command.CommandSender; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.bukkit.world.BukkitAdapter; + +import io.papermc.paper.command.brigadier.CommandSourceStack; +import org.bukkit.ChatColor; + +import java.util.Optional; + + +public class CloudCommandSender implements CommandSender { + private final CommandSourceStack delegate; + + public CloudCommandSender(CommandSourceStack delegate) { + this.delegate = delegate; + } + + @Override + public void sendMessage(String message) { + delegate.getSender().sendMessage(ChatColor.translateAlternateColorCodes('&', message)); + } + + @Override + public Optional getEntity() { + if(delegate instanceof org.bukkit.entity.Entity entity) { + return Optional.of(BukkitAdapter.adapt(entity)); + } + return Optional.empty(); + } + + @Override + public Optional getPlayer() { + if(delegate instanceof org.bukkit.entity.Player player) { + return Optional.of(BukkitAdapter.adapt(player)); + } + return Optional.empty(); + } + + @Override + public CommandSourceStack getHandle() { + return delegate; + } +} diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java index 0a046651d..9085e19b5 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java @@ -23,10 +23,8 @@ import org.bukkit.Bukkit; import org.bukkit.generator.ChunkGenerator; import org.bukkit.plugin.java.JavaPlugin; import org.incendo.cloud.SenderMapper; -import org.incendo.cloud.brigadier.CloudBrigadierManager; -import org.incendo.cloud.bukkit.CloudBukkitCapabilities; import org.incendo.cloud.execution.ExecutionCoordinator; -import org.incendo.cloud.paper.LegacyPaperCommandManager; +import org.incendo.cloud.paper.PaperCommandManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -73,7 +71,7 @@ public class TerraBukkitPlugin extends JavaPlugin { platform.getEventManager().callEvent(new PlatformInitializationEvent()); try { - LegacyPaperCommandManager commandManager = getCommandSenderPaperCommandManager(); + PaperCommandManager commandManager = getCommandSenderPaperCommandManager(); platform.getEventManager().callEvent(new CommandRegistrationEvent(commandManager)); @@ -93,25 +91,15 @@ public class TerraBukkitPlugin extends JavaPlugin { } @NotNull - private LegacyPaperCommandManager getCommandSenderPaperCommandManager() throws Exception { - // TODO: Update to PaperCommandManager - LegacyPaperCommandManager commandManager = new LegacyPaperCommandManager<>( - this, - ExecutionCoordinator.simpleCoordinator(), - SenderMapper.create( + private PaperCommandManager getCommandSenderPaperCommandManager() throws Exception { + PaperCommandManager commandManager = PaperCommandManager.builder(SenderMapper.create( BukkitAdapter::adapt, BukkitAdapter::adapt - )); + )) + .executionCoordinator(ExecutionCoordinator.simpleCoordinator()) + .buildOnEnable(this); - if(commandManager.hasCapability(CloudBukkitCapabilities.NATIVE_BRIGADIER)) { - commandManager.registerBrigadier(); - final CloudBrigadierManager brigManager = commandManager.brigadierManager(); - if(brigManager != null) { - brigManager.setNativeNumberSuggestions(false); - } - } else if(commandManager.hasCapability(CloudBukkitCapabilities.ASYNCHRONOUS_COMPLETION)) { - commandManager.registerAsynchronousCompletions(); - } + commandManager.brigadierManager().setNativeNumberSuggestions(false); return commandManager; } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 408265821..de44c45ae 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -18,6 +18,9 @@ package com.dfsek.terra.bukkit.world; +import com.dfsek.terra.bukkit.CloudCommandSender; + +import io.papermc.paper.command.brigadier.CommandSourceStack; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -38,7 +41,6 @@ import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.ServerWorld; import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.info.WorldProperties; -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; @@ -157,16 +159,16 @@ public final class BukkitAdapter { return Vector3.of(vector.getX(), vector.getY(), vector.getZ()); } - public static CommandSender adapt(org.bukkit.command.CommandSender sender) { - return new BukkitCommandSender(sender); + public static CommandSender adapt(CommandSourceStack sender) { + return new CloudCommandSender(sender); } public static Entity adapt(org.bukkit.entity.Entity entity) { return new BukkitEntity(entity); } - public static org.bukkit.command.CommandSender adapt(CommandSender sender) { - return ((BukkitCommandSender) sender).getHandle(); + public static CommandSourceStack adapt(CommandSender sender) { + return ((CloudCommandSender) sender).getHandle(); } public static ServerWorld adapt(org.bukkit.World world) { From 4873b321cb565cb6ef3ab8b2180fdd73abf93286 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Thu, 2 Oct 2025 17:33:31 -0600 Subject: [PATCH 103/116] update fabric build version --- 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 971c46122..64a7f9111 100644 --- a/platforms/fabric/src/main/resources/fabric.mod.json +++ b/platforms/fabric/src/main/resources/fabric.mod.json @@ -35,7 +35,7 @@ "depends": { "fabricloader": ">=0.16.10", "java": ">=21", - "minecraft": "1.21.7", + "minecraft": "1.21.8", "fabric": "*" } } \ No newline at end of file From 41e9c2f55f0d5a81fc0215c02aac77e21703d324 Mon Sep 17 00:00:00 2001 From: OakLoaf Date: Tue, 30 Sep 2025 18:43:11 +0100 Subject: [PATCH 104/116] Disabled AllayMC platform --- platforms/allay/{build.gradle.kts => build.gradle.kts.disabled} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename platforms/allay/{build.gradle.kts => build.gradle.kts.disabled} (100%) diff --git a/platforms/allay/build.gradle.kts b/platforms/allay/build.gradle.kts.disabled similarity index 100% rename from platforms/allay/build.gradle.kts rename to platforms/allay/build.gradle.kts.disabled From 451683aff564b98289be9aa60c3fd60b03b16ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 3 Oct 2025 00:35:24 -0600 Subject: [PATCH 105/116] spooky month (bump version to 6.6.6) --- build.gradle.kts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 722a59e4b..dc5e17023 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,8 @@ preRelease(true) -versionProjects(":common:api", version("6.6.5")) -versionProjects(":common:implementation", version("6.6.5")) -versionProjects(":platforms", version("6.6.5")) +versionProjects(":common:api", version("6.6.6")) +versionProjects(":common:implementation", version("6.6.6")) +versionProjects(":platforms", version("6.6.6")) allprojects { From 2b5d613aef332cb6ca800a22218c035a49e3cdc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 3 Oct 2025 00:54:53 -0600 Subject: [PATCH 106/116] fix up --- .../terra/bukkit/nms/v1_21_9/AwfulBukkitHacks.java | 1 - .../dfsek/terra/bukkit/nms/v1_21_9/NMSPlatform.java | 11 ----------- .../terra/mod/mixin/generalize/ServerWorldMixin.java | 4 ++-- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/AwfulBukkitHacks.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/AwfulBukkitHacks.java index 77e441d40..60622edf1 100644 --- a/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/AwfulBukkitHacks.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/AwfulBukkitHacks.java @@ -29,7 +29,6 @@ import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.VanillaBiomeProperties; import com.dfsek.terra.bukkit.world.BukkitBiomeInfo; import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; import com.dfsek.terra.registry.master.ConfigRegistry; diff --git a/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSPlatform.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSPlatform.java index 803f36ed8..8c8ed3992 100644 --- a/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSPlatform.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSPlatform.java @@ -50,17 +50,6 @@ import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.world.biome.PlatformBiome; import com.dfsek.terra.bukkit.PlatformImpl; import com.dfsek.terra.bukkit.TerraBukkitPlugin; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.BiomeAdditionsSoundTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.BiomeMoodSoundTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.BiomeParticleConfigTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.EntityTypeTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.MusicSoundTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.SoundEventTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.SpawnCostConfig; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.SpawnEntryConfig; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.SpawnSettingsTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.SpawnTypeConfig; -import com.dfsek.terra.bukkit.nms.v1_21_7.config.VillagerTypeTemplate; public class NMSPlatform extends PlatformImpl { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java index 364f6fbb6..470b0fa29 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/generalize/ServerWorldMixin.java @@ -4,10 +4,10 @@ package com.dfsek.terra.mod.mixin.generalize; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.WorldGenerationProgressListener; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.random.RandomSequencesState; import net.minecraft.world.World; +import net.minecraft.world.chunk.ChunkLoadProgress; import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionTypes; import net.minecraft.world.level.ServerWorldProperties; @@ -26,7 +26,7 @@ import java.util.concurrent.Executor; public abstract class ServerWorldMixin extends World { public ServerWorldMixin(MinecraftServer server, Executor workerExecutor, LevelStorage.Session session, ServerWorldProperties properties, RegistryKey worldKey, DimensionOptions dimensionOptions, - WorldGenerationProgressListener worldGenerationProgressListener, boolean debugWorld, long seed, + ChunkLoadProgress chunkLoadProgress, boolean debugWorld, long seed, List spawners, boolean shouldTickTime, @Nullable RandomSequencesState randomSequencesState) { super(properties, worldKey, server.getRegistryManager(), dimensionOptions.dimensionTypeEntry(), false, debugWorld, seed, server.getMaxChainedNeighborUpdates()); From c1a00ca5c700d385ec4c34f929389ba32dde81b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 3 Oct 2025 00:59:43 -0600 Subject: [PATCH 107/116] reformat --- ...inedPipelineBiomeColorMappingTemplate.java | 4 +- .../registry/meta/CheckedRegistryHolder.java | 4 +- .../configured/ConfiguredStructure.java | 4 +- .../terra/bukkit/CloudCommandSender.java | 10 ++--- .../bukkit/listeners/CommonListener.java | 10 ++--- .../terra/bukkit/world/BukkitAdapter.java | 3 +- .../bukkit/nms/v1_21_9/AwfulBukkitHacks.java | 5 +-- .../terra/bukkit/nms/v1_21_9/NMSPlatform.java | 40 +++++++------------ .../java/com/dfsek/terra/cli/TerraCLI.java | 9 ++--- .../terra/minestom/addon/MinestomAddon.java | 5 ++- .../biome/MinestomUserDefinedBiomePool.java | 1 - .../world/MinestomChunkGeneratorWrapper.java | 8 ++-- .../minestom/world/TerraMinestomWorld.java | 18 ++++----- .../inventory/meta/ItemStackMetaMixin.java | 12 ++++-- .../terra/lifecycle/LifecyclePlatform.java | 1 - 15 files changed, 59 insertions(+), 75 deletions(-) diff --git a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/mapping/DefinedPipelineBiomeColorMappingTemplate.java b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/mapping/DefinedPipelineBiomeColorMappingTemplate.java index d743e9e8b..b13150586 100644 --- a/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/mapping/DefinedPipelineBiomeColorMappingTemplate.java +++ b/common/addons/pipeline-image/src/main/java/com/dfsek/terra/addons/biome/pipeline/image/config/converter/mapping/DefinedPipelineBiomeColorMappingTemplate.java @@ -3,13 +3,13 @@ package com.dfsek.terra.addons.biome.pipeline.image.config.converter.mapping; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import java.util.Map; - import com.dfsek.terra.addons.biome.pipeline.api.biome.PipelineBiome; import com.dfsek.terra.addons.image.config.ColorLoader.ColorString; import com.dfsek.terra.addons.image.converter.mapping.ColorMapping; import com.dfsek.terra.addons.image.util.MapUtil; +import java.util.Map; + public class DefinedPipelineBiomeColorMappingTemplate implements ObjectTemplate> { diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/CheckedRegistryHolder.java b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/CheckedRegistryHolder.java index 2554483ea..a55be5885 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/meta/CheckedRegistryHolder.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/meta/CheckedRegistryHolder.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.registry.meta; +import java.lang.reflect.Type; + import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; -import java.lang.reflect.Type; - public interface CheckedRegistryHolder extends RegistryHolder { default CheckedRegistry getCheckedRegistry(Class clazz) throws IllegalStateException { 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 ca5988484..74b840624 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 @@ -7,14 +7,14 @@ package com.dfsek.terra.api.structure.configured; -import org.jetbrains.annotations.ApiStatus.Experimental; - import com.dfsek.terra.api.registry.key.StringIdentifiable; 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.Range; +import org.jetbrains.annotations.ApiStatus.Experimental; + @Experimental public interface ConfiguredStructure extends StringIdentifiable { diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/CloudCommandSender.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/CloudCommandSender.java index 4ace5e9b0..0160180a9 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/CloudCommandSender.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/CloudCommandSender.java @@ -1,15 +1,15 @@ package com.dfsek.terra.bukkit; -import com.dfsek.terra.api.command.CommandSender; -import com.dfsek.terra.api.entity.Entity; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.bukkit.world.BukkitAdapter; - import io.papermc.paper.command.brigadier.CommandSourceStack; import org.bukkit.ChatColor; import java.util.Optional; +import com.dfsek.terra.api.command.CommandSender; +import com.dfsek.terra.api.entity.Entity; +import com.dfsek.terra.api.entity.Player; +import com.dfsek.terra.bukkit.world.BukkitAdapter; + public class CloudCommandSender implements CommandSender { private final CommandSourceStack delegate; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index c513c6bdf..5cb6ab4e6 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -108,11 +108,11 @@ public class CommonListener implements Listener { @EventHandler public void onWolfSpawn(CreatureSpawnEvent event) { - if (!(event.getEntity() instanceof Wolf wolf)) { + if(!(event.getEntity() instanceof Wolf wolf)) { return; } - if (!WOLF_VARIANT_SPAWN_REASONS.contains(event.getSpawnReason())) { + if(!WOLF_VARIANT_SPAWN_REASONS.contains(event.getSpawnReason())) { logger.debug("Ignoring wolf spawned with reason: " + event.getSpawnReason()); return; } @@ -122,12 +122,12 @@ public class CommonListener implements Listener { @EventHandler public void onChunkGenerate(ChunkLoadEvent event) { - if (!event.isNewChunk()) { + if(!event.isNewChunk()) { return; } - for (Entity entity : event.getChunk().getEntities()) { - if (entity instanceof Wolf wolf) { + for(Entity entity : event.getChunk().getEntities()) { + if(entity instanceof Wolf wolf) { applyWolfVariant(wolf); } } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 799e33577..3add6347f 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -19,8 +19,6 @@ package com.dfsek.terra.bukkit.world; import com.dfsek.seismic.type.vector.Vector3; -import com.dfsek.terra.bukkit.CloudCommandSender; - import io.papermc.paper.command.brigadier.CommandSourceStack; import org.bukkit.Location; import org.bukkit.Material; @@ -43,6 +41,7 @@ import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.info.WorldProperties; import com.dfsek.terra.bukkit.BukkitEntity; import com.dfsek.terra.bukkit.BukkitPlayer; +import com.dfsek.terra.bukkit.CloudCommandSender; 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; diff --git a/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/AwfulBukkitHacks.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/AwfulBukkitHacks.java index 60622edf1..3c7e9355f 100644 --- a/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/AwfulBukkitHacks.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/AwfulBukkitHacks.java @@ -1,9 +1,5 @@ package com.dfsek.terra.bukkit.nms.v1_21_9; -import com.dfsek.terra.bukkit.nms.v1_21_9.config.VanillaBiomeProperties; - -import com.dfsek.terra.bukkit.world.BukkitBiomeInfo; - import net.minecraft.core.Holder; import net.minecraft.core.Holder.Reference; import net.minecraft.core.HolderSet; @@ -29,6 +25,7 @@ import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.VanillaBiomeProperties; import com.dfsek.terra.bukkit.world.BukkitBiomeInfo; import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; import com.dfsek.terra.registry.master.ConfigRegistry; diff --git a/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSPlatform.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSPlatform.java index 8c8ed3992..216665385 100644 --- a/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSPlatform.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/NMSPlatform.java @@ -2,32 +2,6 @@ package com.dfsek.terra.bukkit.nms.v1_21_9; import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.exception.LoadException; - -import com.dfsek.terra.addon.InternalAddon; -import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.world.biome.PlatformBiome; -import com.dfsek.terra.bukkit.PlatformImpl; -import com.dfsek.terra.bukkit.TerraBukkitPlugin; - -import com.dfsek.terra.bukkit.nms.v1_21_9.config.BiomeAdditionsSoundTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_9.config.BiomeMoodSoundTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_9.config.BiomeParticleConfigTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_9.config.EntityTypeTemplate; - -import com.dfsek.terra.bukkit.nms.v1_21_9.config.MusicSoundTemplate; - -import com.dfsek.terra.bukkit.nms.v1_21_9.config.SoundEventTemplate; - -import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnCostConfig; - -import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnEntryConfig; -import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnSettingsTemplate; -import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnTypeConfig; - -import com.dfsek.terra.bukkit.nms.v1_21_9.config.VillagerTypeTemplate; - import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.Music; import net.minecraft.sounds.SoundEvent; @@ -46,10 +20,24 @@ import org.bukkit.Bukkit; import java.util.List; import java.util.Locale; +import com.dfsek.terra.addon.InternalAddon; import com.dfsek.terra.api.addon.BaseAddon; +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.world.biome.PlatformBiome; import com.dfsek.terra.bukkit.PlatformImpl; import com.dfsek.terra.bukkit.TerraBukkitPlugin; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.BiomeAdditionsSoundTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.BiomeMoodSoundTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.BiomeParticleConfigTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.EntityTypeTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.MusicSoundTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.SoundEventTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnCostConfig; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnEntryConfig; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnSettingsTemplate; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnTypeConfig; +import com.dfsek.terra.bukkit.nms.v1_21_9.config.VillagerTypeTemplate; public class NMSPlatform extends PlatformImpl { diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java index 8b33133b5..c271f98cf 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java @@ -1,11 +1,6 @@ package com.dfsek.terra.cli; import com.dfsek.seismic.type.vector.Vector2Int; - -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; -import com.dfsek.terra.cli.world.CLIWorld; - import net.querz.mca.MCAUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -16,6 +11,10 @@ import picocli.CommandLine.Option; import java.io.IOException; import java.util.concurrent.Callable; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; +import com.dfsek.terra.cli.world.CLIWorld; + //TODO auto pull in version @Command(name = "TerraCLI", mixinStandardHelpOptions = true, version = "6.6.0", diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/addon/MinestomAddon.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/addon/MinestomAddon.java index 1dc3bc0cc..8c08fb1ba 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/addon/MinestomAddon.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/addon/MinestomAddon.java @@ -2,8 +2,6 @@ package com.dfsek.terra.minestom.addon; import ca.solostudios.strata.Versions; import ca.solostudios.strata.version.Version; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; @@ -12,6 +10,9 @@ import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.minestom.TerraMinestomPlatform; import com.dfsek.terra.minestom.config.VanillaBiomeProperties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class MinestomAddon implements BaseAddon { private static final Version VERSION = Versions.getVersion(1, 0, 0); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java index 76d4299a8..8e5eb4fbc 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomUserDefinedBiomePool.java @@ -1,6 +1,5 @@ package com.dfsek.terra.minestom.biome; -import java.util.HashMap; import java.util.HashSet; import java.util.IdentityHashMap; diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java index 2dfa6d18f..3e4d421e4 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/MinestomChunkGeneratorWrapper.java @@ -1,7 +1,6 @@ package com.dfsek.terra.minestom.world; import net.minestom.server.coordinate.Point; -import net.minestom.server.instance.block.Block; import net.minestom.server.instance.generator.GenerationUnit; import net.minestom.server.instance.generator.Generator; import net.minestom.server.instance.generator.GeneratorImpl.AreaModifierImpl; @@ -10,7 +9,6 @@ import net.minestom.server.instance.generator.UnitModifier; import net.minestom.server.instance.palette.Palette; import org.jetbrains.annotations.NotNull; -import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; @@ -68,12 +66,12 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe int minY = section.absoluteStart().blockY(); for(int relativeX = 0; relativeX < 16; relativeX += 1) { int absoluteX = blockX + relativeX; - for(int relativeZ = 0; relativeZ < 16; relativeZ += 1) { + for(int relativeZ = 0; relativeZ < 16; relativeZ += 1) { int absoluteZ = blockZ + relativeZ; - for(int relativeY = 0; relativeY < 16; relativeY += 1) { + for(int relativeY = 0; relativeY < 16; relativeY += 1) { int absoluteY = minY + relativeY; - if (relativeX % 4 == 0 && relativeY % 4 == 0 && relativeZ % 4 == 0) { + if(relativeX % 4 == 0 && relativeY % 4 == 0 && relativeZ % 4 == 0) { UserDefinedBiome userDefinedBiome = biomePool.getBiome( biomeProvider.getBiome(absoluteX, absoluteY, absoluteZ, world.getSeed()) ); diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java index f95b140da..fe272a864 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorld.java @@ -1,5 +1,14 @@ package com.dfsek.terra.minestom.world; +import net.minestom.server.MinecraftServer; +import net.minestom.server.coordinate.BlockVec; +import net.minestom.server.coordinate.Point; +import net.minestom.server.instance.Instance; +import net.minestom.server.instance.block.Block; +import net.minestom.server.world.DimensionType; + +import java.util.function.Consumer; + import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; @@ -18,15 +27,6 @@ import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool; import com.dfsek.terra.minestom.block.MinestomBlockState; import com.dfsek.terra.minestom.entity.MinestomEntity; -import net.minestom.server.MinecraftServer; -import net.minestom.server.coordinate.BlockVec; -import net.minestom.server.coordinate.Point; -import net.minestom.server.instance.Instance; -import net.minestom.server.instance.block.Block; -import net.minestom.server.world.DimensionType; - -import java.util.function.Consumer; - public final class TerraMinestomWorld implements ServerWorld, WorldProperties { private final Instance instance; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/ItemStackMetaMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/ItemStackMetaMixin.java index 129bbb1ad..91a487d0b 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/ItemStackMetaMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/ItemStackMetaMixin.java @@ -17,18 +17,22 @@ package com.dfsek.terra.mod.mixin.implementations.terra.inventory.meta; -import com.dfsek.terra.api.inventory.item.Enchantment; -import com.dfsek.terra.api.inventory.item.ItemMeta; - import net.minecraft.component.type.ItemEnchantmentsComponent; import net.minecraft.item.ItemStack; import net.minecraft.registry.entry.RegistryEntry; -import org.spongepowered.asm.mixin.*; +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; +import com.dfsek.terra.api.inventory.item.Enchantment; +import com.dfsek.terra.api.inventory.item.ItemMeta; + @Mixin(ItemStack.class) @Implements(@Interface(iface = ItemMeta.class, prefix = "terra$")) diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java index 4d1f1cdde..5f9d6a651 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java @@ -3,7 +3,6 @@ package com.dfsek.terra.lifecycle; import ca.solostudios.strata.Versions; import ca.solostudios.strata.parser.tokenizer.ParseException; import ca.solostudios.strata.version.Version; -import net.minecraft.MinecraftVersion; import net.minecraft.SharedConstants; import net.minecraft.enchantment.Enchantment; import net.minecraft.registry.DynamicRegistryManager; From 6dba2e9394d49a02d952ecdf7d8a21e11e54466d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 3 Oct 2025 13:59:54 -0600 Subject: [PATCH 108/116] Use latest OW --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 010befbf3..3593b1d4b 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -1,6 +1,6 @@ object Versions { object Terra { - const val overworldConfig = "v1.5.2" + const val overworldConfig = "latest" } object Libraries { From de4656d01f2fd9ea6fb8fa60de43965a2bded308 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 3 Oct 2025 14:39:27 -0600 Subject: [PATCH 109/116] new pack name --- buildSrc/src/main/kotlin/DistributionConfig.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/DistributionConfig.kt b/buildSrc/src/main/kotlin/DistributionConfig.kt index 27479b809..d418de41a 100644 --- a/buildSrc/src/main/kotlin/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/DistributionConfig.kt @@ -50,7 +50,7 @@ fun Project.configureDistribution() { try { file("${buildDir}/resources/main/packs/").deleteRecursively() val defaultPackUrl = - URL("https://github.com/PolyhedralDev/TerraOverworldConfig/releases/download/" + Versions.Terra.overworldConfig + "/default.zip") + URL("https://github.com/PolyhedralDev/TerraOverworldConfig/releases/download/" + Versions.Terra.overworldConfig + "/Overworld.zip") downloadPack(defaultPackUrl, project) } catch (_: Exception) { } From d1faac8b96b057d3d04379b7bda5b1cb3152154f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 3 Oct 2025 15:27:48 -0600 Subject: [PATCH 110/116] Pull in remaining packs --- buildSrc/src/main/kotlin/DistributionConfig.kt | 18 ++++++++++++++---- buildSrc/src/main/kotlin/Versions.kt | 3 +++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/buildSrc/src/main/kotlin/DistributionConfig.kt b/buildSrc/src/main/kotlin/DistributionConfig.kt index d418de41a..73d40b1e1 100644 --- a/buildSrc/src/main/kotlin/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/DistributionConfig.kt @@ -49,9 +49,18 @@ fun Project.configureDistribution() { doFirst { try { file("${buildDir}/resources/main/packs/").deleteRecursively() - val defaultPackUrl = + val overworldPackUrl = URL("https://github.com/PolyhedralDev/TerraOverworldConfig/releases/download/" + Versions.Terra.overworldConfig + "/Overworld.zip") - downloadPack(defaultPackUrl, project) + val reimagENDPackUrl = + URL("https://github.com/PolyhedralDev/ReimagEND/releases/download/" + Versions.Terra.reimagENDConfig + "/ReimagEND.zip") + val tartarusPackUrl = + URL("https://github.com/PolyhedralDev/Tartarus/releases/download/" + Versions.Terra.tartarusConfig + "/Tartarus.zip") + val defaultPackUrl = + URL("https://github.com/PolyhedralDev/DefaultMetapack/releases/download/" + Versions.Terra.defaultConfig + "/default.zip") + downloadPack(overworldPackUrl, project) + downloadPack(reimagENDPackUrl, project) + downloadPack(tartarusPackUrl, project) + downloadPack(defaultPackUrl, project, true) } catch (_: Exception) { } } @@ -164,9 +173,10 @@ fun Project.configureDistribution() { } } -fun downloadPack(packUrl: URL, project: Project) { +fun downloadPack(packUrl: URL, project: Project, metapack: Boolean = false) { val fileName = packUrl.file.substring(packUrl.file.lastIndexOf("/")) - val file = File("${project.buildDir}/resources/main/packs/${fileName}") + val resourceType = if (metapack) "metapacks" else "packs" + val file = File("${project.buildDir}/resources/main/${resourceType}/${fileName}") file.parentFile.mkdirs() file.outputStream().write(packUrl.readBytes()) } diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 3593b1d4b..7917832b1 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -1,6 +1,9 @@ object Versions { object Terra { const val overworldConfig = "latest" + const val reimagENDConfig = "latest" + const val tartarusConfig = "latest" + const val defaultConfig = "latest" } object Libraries { From 84a6cd0c26cdf418fa7ff208eafdccf54584b38a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 3 Oct 2025 15:49:55 -0600 Subject: [PATCH 111/116] fix bukkit spawning consistency --- .../bukkit/nms/v1_21_9/config/SpawnEntryConfig.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnEntryConfig.java b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnEntryConfig.java index 03c4a3643..fa7658556 100644 --- a/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnEntryConfig.java +++ b/platforms/bukkit/nms/v1_21_9/src/main/java/com/dfsek/terra/bukkit/nms/v1_21_9/config/SpawnEntryConfig.java @@ -3,6 +3,9 @@ package com.dfsek.terra.bukkit.nms.v1_21_9.config; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; + +import com.dfsek.terra.api.util.range.Range; + import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData; @@ -16,20 +19,16 @@ public class SpawnEntryConfig implements ObjectTemplate { @Default private Integer weight = null; - @Value("min-group-size") + @Value("group-size") @Default - private Integer minGroupSize = null; - - @Value("max-group-size") - @Default - private Integer maxGroupSize = null; + private Range groupSize = null; public Integer getWeight() { return weight; } public SpawnerData getSpawnEntry() { - return new SpawnerData(type, minGroupSize, maxGroupSize); + return new SpawnerData(type, groupSize.getMin(), groupSize.getMax()); } @Override From fd3d1ce83089e6546d8b38d82c40dee0bf81d82d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 3 Oct 2025 17:11:01 -0600 Subject: [PATCH 112/116] Change ConstantRage check to only check if greater than --- .../main/java/com/dfsek/terra/api/util/range/ConstantRange.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/range/ConstantRange.java b/common/api/src/main/java/com/dfsek/terra/api/util/range/ConstantRange.java index d791c08fc..1df043153 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/range/ConstantRange.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/range/ConstantRange.java @@ -18,7 +18,7 @@ public class ConstantRange implements Range { private int max; public ConstantRange(int min, int max) { - if(min >= max) throw new IllegalArgumentException("Minimum must not be greater than or equal to maximum!"); + if(min > max) throw new IllegalArgumentException("Minimum must not be greater than maximum!"); this.max = max; this.min = min; } From a7826dec495056e3d5f7c949e7527c6cf528b6ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 3 Oct 2025 17:29:30 -0600 Subject: [PATCH 113/116] add metapacks to default commented ingore list --- common/implementation/base/src/main/resources/config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/implementation/base/src/main/resources/config.yml b/common/implementation/base/src/main/resources/config.yml index ae2f6c2a8..95c36755b 100644 --- a/common/implementation/base/src/main/resources/config.yml +++ b/common/implementation/base/src/main/resources/config.yml @@ -19,4 +19,5 @@ script: max-recursion: 1000 ignored-resources: # - "addons" -# - "packs" \ No newline at end of file +# - "packs" +# - "metapacks" \ No newline at end of file From 326300bcce317852fc919034c174064f8d2148b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 3 Oct 2025 18:10:45 -0600 Subject: [PATCH 114/116] update resource logic for metapacks --- buildSrc/src/main/kotlin/DistributionConfig.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/buildSrc/src/main/kotlin/DistributionConfig.kt b/buildSrc/src/main/kotlin/DistributionConfig.kt index 73d40b1e1..940f5ea84 100644 --- a/buildSrc/src/main/kotlin/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/DistributionConfig.kt @@ -49,6 +49,7 @@ fun Project.configureDistribution() { doFirst { try { file("${buildDir}/resources/main/packs/").deleteRecursively() + file("${buildDir}/resources/main/metapacks/").deleteRecursively() val overworldPackUrl = URL("https://github.com/PolyhedralDev/TerraOverworldConfig/releases/download/" + Versions.Terra.overworldConfig + "/Overworld.zip") val reimagENDPackUrl = @@ -106,6 +107,13 @@ fun Project.configureDistribution() { resources.computeIfAbsent("packs") { ArrayList() }.add(it.name) } + val metaPacksDir = File("${project.buildDir}/resources/main/metapacks/") + + metaPacksDir.walkTopDown().forEach { + if (it.isDirectory || !it.name.endsWith(".zip")) return@forEach + resources.computeIfAbsent("metappacks") { ArrayList() }.add(it.name) + } + val langDir = File("${project(":common:implementation").buildDir}/resources/main/lang/") langDir.walkTopDown().forEach { From 10558b544631f89ddc59fe6c692abb4e6d7d6254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 3 Oct 2025 18:24:00 -0600 Subject: [PATCH 115/116] fix typo --- buildSrc/src/main/kotlin/DistributionConfig.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/DistributionConfig.kt b/buildSrc/src/main/kotlin/DistributionConfig.kt index 940f5ea84..0ad6c4491 100644 --- a/buildSrc/src/main/kotlin/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/DistributionConfig.kt @@ -111,7 +111,7 @@ fun Project.configureDistribution() { metaPacksDir.walkTopDown().forEach { if (it.isDirectory || !it.name.endsWith(".zip")) return@forEach - resources.computeIfAbsent("metappacks") { ArrayList() }.add(it.name) + resources.computeIfAbsent("metapacks") { ArrayList() }.add(it.name) } val langDir = File("${project(":common:implementation").buildDir}/resources/main/lang/") From 9b3a105672b3b414345eb8d4d64a1cbe0817546c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Fri, 3 Oct 2025 19:07:00 -0600 Subject: [PATCH 116/116] Fix game metapack loading --- .../java/com/dfsek/terra/mod/ModPlatform.java | 3 ++- .../com/dfsek/terra/mod/util/PresetUtil.java | 24 ++++++++++++------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index 8b0fc706b..262fbf8fe 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -66,7 +66,8 @@ public abstract class ModPlatform extends AbstractPlatform { }); getRawConfigRegistry() .forEach(pack -> { - PresetUtil.createDefault(pack, this, configPacksInMetaPack.contains(pack.getID())).apply(registerFunction); + boolean packInMetapack = configPacksInMetaPack.contains(pack.getID()); + PresetUtil.createDefault(pack, this, packInMetapack, packInMetapack).apply(registerFunction); }); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 0b5b5401f..b387a75c5 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -40,7 +40,7 @@ public class PresetUtil { private static final Logger LOGGER = LoggerFactory.getLogger(PresetUtil.class); private static final List> PRESETS = new ArrayList<>(); - public static Pair createDefault(ConfigPack pack, ModPlatform platform, boolean extended) { + public static Pair createDefault(ConfigPack pack, ModPlatform platform, boolean extended, boolean packInMetapack) { Registry dimensionTypeRegistry = platform.dimensionTypeRegistry(); Registry chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry(); Registry multiNoiseBiomeSourceParameterLists = @@ -55,7 +55,7 @@ public class PresetUtil { HashMap, DimensionOptions> dimensionMap = new HashMap<>(); - insertCustom(platform, "minecraft:overworld", pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap); + insertCustom(platform, "minecraft:overworld", pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap, packInMetapack); insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), dimensionMap); @@ -80,7 +80,7 @@ public class PresetUtil { HashMap, DimensionOptions> dimensionMap = new HashMap<>(); metaPack.packs().forEach((key, pack) -> { - insertCustom(platform, key, pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap); + insertCustom(platform, key, pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap, false); }); insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), @@ -93,7 +93,7 @@ public class PresetUtil { private static void insertCustom(ModPlatform platform, String key, ConfigPack pack, Registry dimensionTypeRegistry, Registry chunkGeneratorSettingsRegistry, - HashMap, DimensionOptions> dimensionMap) { + HashMap, DimensionOptions> dimensionMap, boolean packInMetapack) { Identifier demensionIdentifier = Identifier.of(key); VanillaWorldProperties vanillaWorldProperties; @@ -108,12 +108,18 @@ public class PresetUtil { assert defaultDimension != null; - DimensionType dimensionType = DimensionUtil.createDimension(vanillaWorldProperties, defaultDimension, platform); - RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey( - Identifier.of("terra", pack.getID().toLowerCase( - Locale.ROOT))); + Identifier dimensionTypeID = Identifier.of("terra", pack.getID().toLowerCase(Locale.ROOT)); - Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); + DimensionType dimensionType; + if (!packInMetapack) { + dimensionType = DimensionUtil.createDimension(vanillaWorldProperties, defaultDimension, platform); + RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey( + dimensionTypeID); + + Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); + } else { + dimensionType = dimensionTypeRegistry.get(dimensionTypeID); + } RegistryEntry dimensionTypeRegistryEntry = dimensionTypeRegistry.getEntry(dimensionType);