Merge remote-tracking branch 'origin/ver/6.0.0' into ver/6.0.0

# Conflicts:
#	build.gradle.kts
#	buildSrc/src/main/kotlin/DependencyConfig.kt
#	buildSrc/src/main/kotlin/DistributionConfig.kt
#	common/addons/biome-provider-image/build.gradle.kts
#	common/addons/biome-provider-pipeline/build.gradle.kts
#	common/addons/biome-provider-single/build.gradle.kts
#	common/addons/chunk-generator-noise-3d/build.gradle.kts
#	common/addons/command-addons/build.gradle.kts
#	common/addons/command-packs/build.gradle.kts
#	common/addons/command-profiler/build.gradle.kts
#	common/addons/command-structures/build.gradle.kts
#	common/addons/config-biome/build.gradle.kts
#	common/addons/config-distributors/build.gradle.kts
#	common/addons/config-feature/build.gradle.kts
#	common/addons/config-flora/build.gradle.kts
#	common/addons/config-locators/build.gradle.kts
#	common/addons/config-noise-function/build.gradle.kts
#	common/addons/config-ore/build.gradle.kts
#	common/addons/config-palette/build.gradle.kts
#	common/addons/config-structure/build.gradle.kts
#	common/addons/generation-stage-feature/build.gradle.kts
#	common/addons/generation-stage-structure/build.gradle.kts
#	common/addons/language-yaml/build.gradle.kts
#	common/addons/manifest-addon-loader/build.gradle.kts
#	common/addons/palette-block-shortcut/build.gradle.kts
#	common/addons/structure-block-shortcut/build.gradle.kts
#	common/addons/structure-mutator/build.gradle.kts
#	common/addons/structure-sponge-loader/build.gradle.kts
#	common/addons/structure-terrascript-loader/build.gradle.kts
#	common/addons/terrascript-function-check-noise-3d/build.gradle.kts
#	common/addons/terrascript-function-sampler/build.gradle.kts
#	common/api/build.gradle.kts
#	common/implementation/base/build.gradle.kts
#	common/implementation/bootstrap-addon-loader/build.gradle.kts
#	platforms/bukkit/build.gradle.kts
#	platforms/cli/build.gradle.kts
#	platforms/merged/build.gradle.kts
This commit is contained in:
dfsek
2022-05-14 12:03:56 -07:00
52 changed files with 255 additions and 153 deletions

View File

@@ -0,0 +1,26 @@
package com.dfsek.terra.addon.loader;
import ca.solostudios.strata.version.Version;
import com.dfsek.terra.api.addon.BaseAddon;
public class ApiAddon implements BaseAddon {
private final Version version;
private final String id;
public ApiAddon(Version version, String id) {
this.version = version;
this.id = id;
}
@Override
public Version getVersion() {
return version;
}
@Override
public String getID() {
return id;
}
}

View File

@@ -0,0 +1,22 @@
/*
* Copyright (c) 2020-2021 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.addon.loader;
import java.net.URL;
import java.net.URLClassLoader;
public class ApiAddonClassLoader extends URLClassLoader {
static {
ClassLoader.registerAsParallelCapable();
}
public ApiAddonClassLoader(URL[] urls, ClassLoader parent) {
super(urls, parent);
}
}

View File

@@ -14,6 +14,7 @@ import java.nio.file.Path;
import java.util.Collections;
import com.dfsek.terra.api.addon.BaseAddon;
import com.dfsek.terra.api.addon.bootstrap.BootstrapAddonClassLoader;
import com.dfsek.terra.api.addon.bootstrap.BootstrapBaseAddon;
@@ -21,7 +22,8 @@ public class ApiAddonLoader implements BootstrapBaseAddon<BaseAddon> {
private static final Version VERSION = Versions.getVersion(1, 0, 0);
@Override
public Iterable<BaseAddon> loadAddons(Path addonsFolder, ClassLoader parent) {
public Iterable<BaseAddon> loadAddons(Path addonsFolder, BootstrapAddonClassLoader parent) {
return Collections.emptySet();
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -2,16 +2,12 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
version = version("0.1.0")
plugins {
id("com.github.johnrengelman.shadow")
}
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
implementation("com.dfsek", "paralithic", Versions.Libraries.paralithic)
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
api("com.dfsek", "paralithic", Versions.Libraries.paralithic)
}
tasks.named<ShadowJar>("shadowJar") {
relocate("com.dfsek.paralithic", "com.dfsek.terra.addons.noise.lib.paralithic")
}

View File

@@ -32,6 +32,7 @@ import com.dfsek.terra.addons.noise.config.templates.noise.fractal.RidgedFractal
import com.dfsek.terra.addons.noise.config.templates.normalizer.ClampNormalizerTemplate;
import com.dfsek.terra.addons.noise.config.templates.normalizer.LinearNormalizerTemplate;
import com.dfsek.terra.addons.noise.config.templates.normalizer.NormalNormalizerTemplate;
import com.dfsek.terra.addons.noise.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.samplers.arithmetic.AdditionSampler;
@@ -90,6 +91,7 @@ public class NoiseAddon implements AddonInitializer {
noiseRegistry.register(addon.key("CLAMP"), ClampNormalizerTemplate::new);
noiseRegistry.register(addon.key("PROBABILITY"), ProbabilityNormalizerTemplate::new);
noiseRegistry.register(addon.key("SCALE"), ScaleNormalizerTemplate::new);
noiseRegistry.register(addon.key("POSTERIZATION"), PosterizationNormalizerTemplate::new);
noiseRegistry.register(addon.key("IMAGE"), ImageSamplerTemplate::new);
@@ -121,7 +123,6 @@ public class NoiseAddon implements AddonInitializer {
noiseRegistry.register(addon.key("LINEAR_HEIGHTMAP"), LinearHeightmapSamplerTemplate::new);
noiseRegistry.register(addon.key("ADD"), () -> new BinaryArithmeticTemplate<>(AdditionSampler::new));
noiseRegistry.register(addon.key("SUB"), () -> new BinaryArithmeticTemplate<>(SubtractionSampler::new));
noiseRegistry.register(addon.key("MUL"), () -> new BinaryArithmeticTemplate<>(MultiplicationSampler::new));

View File

@@ -0,0 +1,26 @@
/*
* 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.config.templates.normalizer;
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;
@SuppressWarnings({ "unused", "FieldMayBeFinal" })
public class PosterizationNormalizerTemplate extends NormalizerTemplate<PosterizationNormalizer> {
@Value("steps")
private @Meta int steps;
@Override
public NoiseSampler get() {
return new PosterizationNormalizer(function, steps);
}
}

View File

@@ -0,0 +1,26 @@
/*
* 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;
import net.jafama.FastMath;
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 FastMath.roundToInt((in + 1) / stepSize) * stepSize - 1;
}
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -2,5 +2,5 @@ version = version("0.1.0")
dependencies {
api("com.googlecode.json-simple:json-simple:1.1.1")
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -2,5 +2,5 @@ version = version("0.1.0")
dependencies {
implementation("com.dfsek.tectonic:yaml:${Versions.Libraries.tectonic}")
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,7 +1,7 @@
version = version("0.1.0")
dependencies {
api("commons-io:commons-io:2.6")
api("commons-io:commons-io:2.7")
implementation("com.dfsek.tectonic:yaml:${Versions.Libraries.tectonic}")
}

View File

@@ -13,6 +13,9 @@ import ca.solostudios.strata.version.VersionRange;
import com.dfsek.tectonic.api.exception.LoadException;
import com.dfsek.tectonic.api.loader.ConfigLoader;
import com.dfsek.tectonic.yaml.YamlConfiguration;
import com.dfsek.terra.api.addon.bootstrap.BootstrapAddonClassLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -72,13 +75,9 @@ public class ManifestAddonLoader implements BootstrapBaseAddon<ManifestAddon> {
throw new AddonException("Addon " + manifest.getID() + " has unknown schema version: " + manifest.getSchemaVersion());
}
@SuppressWarnings({ "IOResourceOpenedButNotSafelyClosed", "resource" })
ManifestAddonClassLoader childLoader = new ManifestAddonClassLoader(new URL[]{ addonPath.toUri().toURL() },
loader);
List<AddonInitializer> initializers = manifest.getEntryPoints().stream().map(entryPoint -> {
try {
Object in = childLoader.loadClass(entryPoint).getConstructor().newInstance();
Object in = loader.loadClass(entryPoint).getConstructor().newInstance();
if(!(in instanceof AddonInitializer)) {
throw new AddonException(in.getClass() + " does not extend " + AddonInitializer.class);
}
@@ -103,7 +102,7 @@ public class ManifestAddonLoader implements BootstrapBaseAddon<ManifestAddon> {
}
@Override
public Iterable<ManifestAddon> loadAddons(Path addonsFolder, ClassLoader parent) {
public Iterable<ManifestAddon> loadAddons(Path addonsFolder, BootstrapAddonClassLoader parent) {
logger.debug("Loading addons...");
try(Stream<Path> files = Files.walk(addonsFolder, 1, FileVisitOption.FOLLOW_LINKS)) {
@@ -114,16 +113,16 @@ public class ManifestAddonLoader implements BootstrapBaseAddon<ManifestAddon> {
.filter(path -> path.toString().endsWith(".jar"))
.toList();
ManifestAddonClassLoader loader = new ManifestAddonClassLoader(addons.stream().map(path -> {
addons.stream().map(path -> {
try {
return path.toUri().toURL();
} catch(MalformedURLException e) {
throw new UncheckedIOException(e);
}
}).toArray(URL[]::new), getClass().getClassLoader());
}).forEach(parent::addURL);
return addons.stream()
.map(jar -> loadAddon(jar, loader))
.map(jar -> loadAddon(jar, parent))
.collect(Collectors.toList());
} catch(IOException e) {
throw new UncheckedIOException(e);

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -1,5 +1,5 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}

View File

@@ -2,10 +2,6 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
version = version("0.1.0")
plugins {
id("com.github.johnrengelman.shadow")
}
repositories {
maven { url = uri("https://jitpack.io/") }
}
@@ -13,9 +9,9 @@ repositories {
dependencies {
api("commons-io:commons-io:2.7")
api("com.github.Querz:NBT:6.1")
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}
tasks.named<ShadowJar>("shadowJar") {
relocate("org.apache.commons", "com.dfsek.terra.addons.sponge.lib.commons")
}
}

View File

@@ -2,14 +2,9 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
version = version("0.1.0")
plugins {
id("com.github.johnrengelman.shadow")
}
dependencies {
api("commons-io:commons-io:2.7")
compileOnly(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
}
tasks.named<ShadowJar>("shadowJar") {

View File

@@ -1,7 +1,7 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
api(project(":common:addons:chunk-generator-noise-3d"))
api(project(":common:addons:structure-terrascript-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:chunk-generator-noise-3d"))
compileOnlyApi(project(":common:addons:structure-terrascript-loader"))
}

View File

@@ -1,7 +1,7 @@
version = version("0.1.0")
dependencies {
compileOnly(project(":common:addons:manifest-addon-loader"))
api(project(":common:addons:config-noise-function"))
api(project(":common:addons:structure-terrascript-loader"))
compileOnlyApi(project(":common:addons:manifest-addon-loader"))
compileOnlyApi(project(":common:addons:config-noise-function"))
compileOnlyApi(project(":common:addons:structure-terrascript-loader"))
}