From 32ddc287f7fc5735ae0eb96ca015c69622112d24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Sun, 21 Aug 2022 20:48:21 -0500 Subject: [PATCH 1/8] oops --- .../mixin-common/src/main/resources/terra.common.mixins.json | 1 - 1 file changed, 1 deletion(-) 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 c8ebae978..8b530784f 100644 --- a/platforms/mixin-common/src/main/resources/terra.common.mixins.json +++ b/platforms/mixin-common/src/main/resources/terra.common.mixins.json @@ -4,7 +4,6 @@ "package": "com.dfsek.terra.mod.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ - "access.BiomeAccessor", "access.MobSpawnerLogicAccessor", "access.StateAccessor", "access.StructureAccessorAccessor", From ec7f0dacfa3e86467b18ba982bab707ce4e6fc24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Sun, 21 Aug 2022 21:07:16 -0500 Subject: [PATCH 2/8] oop 2 --- gradle/libs.versions.toml | 1 + platforms/fabric/build.gradle.kts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 03bcac999..616d1d036 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -74,6 +74,7 @@ mod_lazy-dfu = { module = "maven.modrinth:lazydfu", version.ref = "mod_lazy-dfu" mod_cloud-fabric = { module = "cloud.commandframework:cloud-fabric", version.ref = "libraries_cloud" } mod_fabric_fabric-loader = { module = "net.fabricmc:fabric-loader", version.ref = "mod_fabric_fabric-loader" } +mod_fabric_fabric-api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "mod_fabric_fabric-api" } mod_quilt_quilt-loader = { module = "org.quiltmc:quilt-loader", version.ref = "mod_quilt_quilt-loader" } mod_quilt_fabric-api = { module = "org.quiltmc.quilted-fabric-api:quilted-fabric-api", version.ref = "mod_quilt_fabric-api" } diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index 380d65c2b..4c89413d8 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -19,6 +19,8 @@ dependencies { "developmentFabric"(project(path = ":platforms:mixin-lifecycle", configuration = "namedElements")) { isTransitive = false } shaded(project(path = ":platforms:mixin-lifecycle", configuration = "transformProductionFabric")) { isTransitive = false } + modRuntimeOnly(libs.mod.fabric.fabric.api) + minecraft(libs.mod.minecraft) mappings("net.fabricmc", "yarn", libs.versions.mod.yarn.get(), classifier = "v2") From 82596a8ffdbac1311c55dc8a4daa04459696ca6d Mon Sep 17 00:00:00 2001 From: Astrash Date: Tue, 23 Aug 2022 10:19:00 +1000 Subject: [PATCH 3/8] Implement linear map normalizer --- .../dfsek/terra/addons/noise/NoiseAddon.java | 2 ++ .../LinearMapNormalizerTemplate.java | 27 ++++++++++++++++++ .../noise/normalizer/LinearMapNormalizer.java | 28 +++++++++++++++++++ 3 files changed, 57 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 913d4e7bc..ddfc1bbe7 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 @@ -33,6 +33,7 @@ import com.dfsek.terra.addons.noise.config.templates.noise.fractal.BrownianMotio import com.dfsek.terra.addons.noise.config.templates.noise.fractal.PingPongTemplate; import com.dfsek.terra.addons.noise.config.templates.noise.fractal.RidgedFractalTemplate; import com.dfsek.terra.addons.noise.config.templates.normalizer.ClampNormalizerTemplate; +import com.dfsek.terra.addons.noise.config.templates.normalizer.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; @@ -91,6 +92,7 @@ public class NoiseAddon implements MonadAddonInitializer { .applyLoader(FunctionTemplate.class, FunctionTemplate::new); noiseRegistry.register(base.key("LINEAR"), LinearNormalizerTemplate::new); + noiseRegistry.register(base.key("LINEAR_MAP"), LinearMapNormalizerTemplate::new); noiseRegistry.register(base.key("NORMAL"), NormalNormalizerTemplate::new); noiseRegistry.register(base.key("CLAMP"), ClampNormalizerTemplate::new); noiseRegistry.register(base.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 f0efb4c931f81cb54180cd754cae6bcc343cb49b Mon Sep 17 00:00:00 2001 From: Astrash Date: Tue, 23 Aug 2022 10:35:00 +1000 Subject: [PATCH 4/8] 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 3dcfeb987fb021c6b1c2961b59c33d5025df6a8b Mon Sep 17 00:00:00 2001 From: Astrash Date: Tue, 23 Aug 2022 11:06:32 +1000 Subject: [PATCH 5/8] 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: Mon, 22 Aug 2022 22:41:26 -0500 Subject: [PATCH 6/8] some fixes --- .../com/dfsek/terra/mod/MinecraftAddon.java | 9 +++------ .../mod/config/VanillaWorldProperties.java | 2 +- .../com/dfsek/terra/mod/util/BiomeUtil.java | 20 ++++++++++--------- .../dfsek/terra/mod/util/DimensionUtil.java | 17 ++++++++-------- .../dfsek/terra/mod/util/MinecraftUtil.java | 4 ---- 5 files changed, 23 insertions(+), 29 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 e41141f1f..3f2b1a24c 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 @@ -22,6 +22,7 @@ import ca.solostudios.strata.version.Version; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.mod.config.VanillaWorldProperties; import com.dfsek.terra.mod.util.MinecraftUtil; @@ -53,12 +54,8 @@ 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, ConfigPackPreLoadEvent.class) + .then(event -> event.loadTemplate(new VanillaWorldProperties())) .global(); modPlatform.getEventManager() .getHandler(FunctionalEventHandler.class) 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..87d91268c 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 @@ -51,7 +51,7 @@ public class VanillaWorldProperties implements ConfigTemplate, Properties { @Default private Boolean respawnAnchorWorks = false; - @Value("minecraft.height") + @Value("minecraft.height.range") @Default private Range height = new ConstantRange(0, 16); 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 ebc59e7cb..496b0dfec 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 @@ -41,12 +41,18 @@ public class BiomeUtil { logger.info("Terra biomes registered."); } + public static RegistryKey registerKey(Identifier identifier) { + return RegistryKey.of(Registry.BIOME_KEY, identifier); + } + protected static RegistryKey registerBiome(Identifier identifier, net.minecraft.world.biome.Biome biome) { - BuiltinRegistries.add(BuiltinRegistries.BIOME, - MinecraftUtil.registerKey(identifier) - .getValue(), - biome); + RegistryKey key = registerKey(identifier); + if(!BuiltinRegistries.BIOME.contains(key)) { + BuiltinRegistries.add(BuiltinRegistries.BIOME, + key.getValue(), + biome); + } return getBiomeKey(identifier); } @@ -63,11 +69,7 @@ public class BiomeUtil { protected static void registerBiome(Biome biome, ConfigPack pack, com.dfsek.terra.api.registry.key.RegistryKey id) { VanillaBiomeProperties vanillaBiomeProperties; - if (biome.getContext().has(VanillaBiomeProperties.class)) { - vanillaBiomeProperties = biome.getContext().get(VanillaBiomeProperties.class); - } else { - vanillaBiomeProperties = new VanillaBiomeProperties(); - } + vanillaBiomeProperties = biome.getContext().get(VanillaBiomeProperties.class); net.minecraft.world.biome.Biome minecraftBiome = MinecraftUtil.createBiome(vanillaBiomeProperties); 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..c7a5be993 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 @@ -18,10 +18,13 @@ import java.util.OptionalLong; public class DimensionUtil { protected static RegistryKey registerDimension(Identifier identifier, DimensionType dimension) { - BuiltinRegistries.add(BuiltinRegistries.DIMENSION_TYPE, - registerKey(identifier) - .getValue(), - dimension); + RegistryKey key = registerKey(identifier); + if(!BuiltinRegistries.BIOME.contains(key)) { + BuiltinRegistries.add(BuiltinRegistries.DIMENSION_TYPE, + key + .getValue(), + dimension); + } return getDimensionKey(identifier); } @@ -34,11 +37,7 @@ public class DimensionUtil { protected static RegistryKey registerDimension(ConfigPack pack) { VanillaWorldProperties vanillaWorldProperties; - if (pack.getContext().has(VanillaBiomeProperties.class)) { - vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); - } else { - vanillaWorldProperties = new VanillaWorldProperties(); - } + vanillaWorldProperties = pack.getContext().get(VanillaWorldProperties.class); DimensionType overworldDimensionType = new DimensionType( vanillaWorldProperties.getFixedTime() == null ? OptionalLong.empty() : OptionalLong.of(vanillaWorldProperties.getFixedTime()), 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 fc623fa6c..e260321b0 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 @@ -69,10 +69,6 @@ public final class MinecraftUtil { TerraIntProvider.TERRA_RANGE_TYPE_TO_INT_PROVIDER_TYPE.put(ConstantRange.class, CONSTANT); } - public static RegistryKey registerKey(Identifier identifier) { - return RegistryKey.of(Registry.BIOME_KEY, identifier); - } - public static Biome createBiome(VanillaBiomeProperties vanillaBiomeProperties) { GenerationSettings.Builder generationSettings = new GenerationSettings.Builder(); From 2e8bc8d56113fa799d53da9896bb23a9472c49df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Mon, 22 Aug 2022 22:55:28 -0500 Subject: [PATCH 7/8] sub structures use pos as origin --- .../script/functions/StructureFunction.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) 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 84245a763..e79ec1129 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,8 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.api.util.vector.Vector3Int; + import net.jafama.FastMath; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,20 +68,24 @@ public class StructureFunction implements Function { String app = id.apply(implementationArguments, scope); + int xValue = FastMath.roundToInt(xz.getX()); + int yValue = y.apply(implementationArguments, scope).intValue(); + int zValue = FastMath.roundToInt(xz.getZ()); + Vector3Int origin = Vector3Int.of(xValue, yValue, zValue); return registry.getByID(app).map(script -> { if(script instanceof StructureScript structureScript) { - return structureScript.generate(arguments.getOrigin(), + return structureScript.generate(origin, arguments.getWorld() - .buffer(FastMath.roundToInt(xz.getX()), - y.apply(implementationArguments, scope).intValue(), - FastMath.roundToInt(xz.getZ())), + .buffer(xValue, + yValue, + zValue), arguments.getRotation(), arguments.getRecursions() + 1); } return script.generate(arguments.getOrigin(), arguments.getWorld() - .buffer(FastMath.roundToInt(xz.getX()), - y.apply(implementationArguments, scope).intValue(), - FastMath.roundToInt(xz.getZ())), + .buffer(xValue, + yValue, + zValue), arguments.getRotation()); }).orElseGet(() -> { LOGGER.error("No such structure {}", app); From cb6dbe3ec96c43a748da8e557613f2c293f31aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Tue, 23 Aug 2022 12:32:25 -0500 Subject: [PATCH 8/8] fix format --- buildSrc/src/main/kotlin/DependencyConfig.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/DependencyConfig.kt b/buildSrc/src/main/kotlin/DependencyConfig.kt index 4fb94d820..7f85b8c36 100644 --- a/buildSrc/src/main/kotlin/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/DependencyConfig.kt @@ -52,8 +52,8 @@ fun Project.configureDependencies() { maven("https://jitpack.io") { name = "JitPack" } - maven("Modrinth") { - url = uri("https://api.modrinth.com/maven") + maven("https://api.modrinth.com/maven") { + name = "Modrinth" } }