diff --git a/.gitignore b/.gitignore index c93edc41f..11b505e85 100644 --- a/.gitignore +++ b/.gitignore @@ -245,4 +245,8 @@ nbdist/ /run/ -**/testDir/ \ No newline at end of file +**/testDir/ + +platforms/fabric/run/** + +platforms/forge/run/** diff --git a/buildSrc/src/main/kotlin/DistributionConfig.kt b/buildSrc/src/main/kotlin/DistributionConfig.kt index df8d88d0f..60e79867a 100644 --- a/buildSrc/src/main/kotlin/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/DistributionConfig.kt @@ -7,12 +7,9 @@ import java.nio.file.Files import java.nio.file.StandardCopyOption import org.gradle.api.DefaultTask import org.gradle.api.Project -import org.gradle.api.Task import org.gradle.api.plugins.BasePluginExtension -import org.gradle.jvm.tasks.Jar import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.creating import org.gradle.kotlin.dsl.extra import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.named @@ -55,8 +52,8 @@ fun Project.configureDistribution() { println("Packaging addon ${jar.archiveFileName.get()} to $dest. size: ${jar.archiveFile.get().asFile.length() / 1024}KB") val boot = if (extra.has("bootstrap") && extra.get("bootstrap") as Boolean) "bootstrap/" else "" - val addonPath = fs.getPath("/addons/$boot${jar.archiveFileName.get()}"); - + val addonPath = fs.getPath("/addons/$boot${jar.archiveFileName.get()}") + if (!Files.exists(addonPath)) { Files.createDirectories(addonPath.parent) Files.createFile(addonPath) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index f0b5efc0f..78517707c 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -20,11 +20,8 @@ object Versions { object Fabric { const val fabricLoader = "0.14.2" const val fabricAPI = "0.56.0+1.19" - const val minecraft = "1.19" - const val yarn = "$minecraft+build.1" const val mixin = "0.11.2+mixin.0.8.5" const val loom = "0.12-SNAPSHOT" - const val loomQuiltflower = "1.7.1" const val minotaur = "1.1.0" } @@ -35,13 +32,13 @@ object Versions { const val architecuryLoom = "0.12.0-SNAPSHOT" const val architectutyPlugin = "3.4-SNAPSHOT" + + const val loomQuiltflower = "1.7.1" } object Forge { - const val minecraft = "1.19" - const val forge = "$minecraft-41.0.38" - const val yarn = "$minecraft+build.1" - const val architecuryLoom = "0.12.0-SNAPSHOT" + const val forge = "${Mod.minecraft}-41.0.38" + const val burningwave = "12.53.0" } object Bukkit { diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionAddon.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionAddon.java index 5d8b1275b..cd4b1c9a4 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionAddon.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionAddon.java @@ -2,13 +2,14 @@ package com.dfsek.terra.addons.biome.extrusion; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; +import java.util.function.Supplier; + import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome; import com.dfsek.terra.addons.biome.extrusion.config.BiomeExtrusionTemplate; import com.dfsek.terra.addons.biome.extrusion.config.ReplaceableBiomeLoader; import com.dfsek.terra.addons.biome.extrusion.config.extrusions.ReplaceExtrusionTemplate; import com.dfsek.terra.addons.biome.extrusion.config.extrusions.SetExtrusionTemplate; -import com.dfsek.terra.addons.biome.extrusion.extrusions.SetExtrusion; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; @@ -22,8 +23,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 BiomeExtrusionAddon implements AddonInitializer { public static final TypeKey>> EXTRUSION_REGISTRY_KEY = new TypeKey<>() { 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 605063428..a7331fc8a 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 @@ -10,8 +10,6 @@ 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.github.benmanes.caffeine.cache.LoadingCache; - public class BiomeExtrusionProvider implements BiomeProvider { private final BiomeProvider delegate; 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 3f3474428..8a7154fa9 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-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/ReplaceableBiome.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/ReplaceableBiome.java index 31e742afa..e76eec1f3 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/ReplaceableBiome.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/ReplaceableBiome.java @@ -1,10 +1,10 @@ package com.dfsek.terra.addons.biome.extrusion.api; -import com.dfsek.terra.api.world.biome.Biome; - import java.util.Optional; +import com.dfsek.terra.api.world.biome.Biome; + /** * Basically just a specialised implementation of {@link Optional} for biomes where a biome may be a "self" reference. diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/SelfBiome.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/SelfBiome.java index 4e37192af..42e775ccc 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/SelfBiome.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/api/SelfBiome.java @@ -1,10 +1,10 @@ package com.dfsek.terra.addons.biome.extrusion.api; -import com.dfsek.terra.api.world.biome.Biome; - import java.util.Objects; +import com.dfsek.terra.api.world.biome.Biome; + final class SelfBiome implements ReplaceableBiome { public static final SelfBiome INSTANCE = new SelfBiome(); diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/BiomeExtrusionTemplate.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/BiomeExtrusionTemplate.java index 527e7d981..810246d65 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/BiomeExtrusionTemplate.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/BiomeExtrusionTemplate.java @@ -4,13 +4,13 @@ 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 com.dfsek.terra.addons.biome.extrusion.BiomeExtrusionProvider; import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import java.util.List; - public class BiomeExtrusionTemplate implements ObjectTemplate { @Value("provider") diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/extrusions/ReplaceExtrusionTemplate.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/extrusions/ReplaceExtrusionTemplate.java index de5127b81..1b4743dc4 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/extrusions/ReplaceExtrusionTemplate.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/config/extrusions/ReplaceExtrusionTemplate.java @@ -5,7 +5,6 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.terra.addons.biome.extrusion.api.Extrusion; import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome; import com.dfsek.terra.addons.biome.extrusion.extrusions.ReplaceExtrusion; -import com.dfsek.terra.addons.biome.extrusion.extrusions.SetExtrusion; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; 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 bc45ac40c..7458c475c 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,9 @@ package com.dfsek.terra.addons.biome.extrusion.extrusions; +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.terra.addons.biome.query.api.BiomeQueries; @@ -8,10 +12,6 @@ import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.Biome; -import java.util.Collection; -import java.util.function.Predicate; -import java.util.stream.Collectors; - /** * Sets biomes at locations based on a sampler. 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 a272d42be..79209c28a 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,5 +1,9 @@ package com.dfsek.terra.addons.biome.extrusion.extrusions; +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.terra.api.noise.NoiseSampler; @@ -7,10 +11,6 @@ import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.world.biome.Biome; -import java.util.Collection; -import java.util.function.Predicate; -import java.util.stream.Collectors; - /** * Sets biomes at locations based on a sampler. 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 index 2bae69d45..609d22ee1 100644 --- 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 @@ -1,13 +1,13 @@ 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; -import java.util.function.Consumer; - class BiomePipelineColumn implements Column { private final int min; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java index 395e8d24e..063395ae4 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java @@ -7,16 +7,12 @@ package com.dfsek.terra.addons.biome.pipeline; -import com.dfsek.terra.api.util.Column; -import com.dfsek.terra.api.world.info.WorldProperties; - import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; import net.jafama.FastMath; import java.util.Comparator; import java.util.HashSet; -import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.stream.StreamSupport; @@ -26,6 +22,7 @@ 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; diff --git a/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/BiomeQueryAPIAddon.java b/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/BiomeQueryAPIAddon.java index 3004cb0e1..5f767998f 100644 --- a/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/BiomeQueryAPIAddon.java +++ b/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/BiomeQueryAPIAddon.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.biome.query; +import java.util.Collection; + import com.dfsek.terra.addons.biome.query.impl.BiomeTagFlattener; import com.dfsek.terra.addons.biome.query.impl.BiomeTagHolder; import com.dfsek.terra.addons.manifest.api.AddonInitializer; @@ -12,8 +14,6 @@ import com.dfsek.terra.api.properties.Context; import com.dfsek.terra.api.properties.PropertyKey; import com.dfsek.terra.api.world.biome.Biome; -import java.util.Collection; - public class BiomeQueryAPIAddon implements AddonInitializer { @Inject diff --git a/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/api/BiomeQueries.java b/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/api/BiomeQueries.java index 83b1ebf18..6e36b7a45 100644 --- a/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/api/BiomeQueries.java +++ b/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/api/BiomeQueries.java @@ -1,10 +1,10 @@ package com.dfsek.terra.addons.biome.query.api; +import java.util.function.Predicate; + import com.dfsek.terra.addons.biome.query.impl.SingleTagQuery; import com.dfsek.terra.api.world.biome.Biome; -import java.util.function.Predicate; - public final class BiomeQueries { private BiomeQueries() { diff --git a/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/impl/SingleTagQuery.java b/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/impl/SingleTagQuery.java index d2dfc4b23..af2bfa8c7 100644 --- a/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/impl/SingleTagQuery.java +++ b/common/addons/biome-query-api/src/main/java/com/dfsek/terra/addons/biome/query/impl/SingleTagQuery.java @@ -1,10 +1,10 @@ package com.dfsek.terra.addons.biome.query.impl; +import java.util.function.Predicate; + import com.dfsek.terra.addons.biome.query.BiomeQueryAPIAddon; import com.dfsek.terra.api.world.biome.Biome; -import java.util.function.Predicate; - public class SingleTagQuery implements Predicate { private int tagIndex = -1; 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 0e091b44b..cd034f012 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 @@ -6,7 +6,6 @@ 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.util.mutable.MutableInteger; 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 b058e4c2f..7f4b20a88 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 @@ -2,7 +2,6 @@ package com.dfsek.terra.addons.chunkgenerator.config.noise; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.properties.Properties; -import com.dfsek.terra.api.util.mutable.MutableInteger; public record BiomeNoiseProperties(NoiseSampler base, diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/NoiseChunkGenerator3D.java index 24be708af..fcb8d3fe2 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/NoiseChunkGenerator3D.java @@ -8,6 +8,9 @@ package com.dfsek.terra.addons.chunkgenerator.generation; +import net.jafama.FastMath; +import org.jetbrains.annotations.NotNull; + import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties; import com.dfsek.terra.addons.chunkgenerator.config.palette.PaletteInfo; import com.dfsek.terra.addons.chunkgenerator.generation.math.PaletteUtil; @@ -26,9 +29,6 @@ import com.dfsek.terra.api.world.chunk.generation.ProtoChunk; import com.dfsek.terra.api.world.chunk.generation.util.Palette; import com.dfsek.terra.api.world.info.WorldProperties; -import net.jafama.FastMath; -import org.jetbrains.annotations.NotNull; - public class NoiseChunkGenerator3D implements ChunkGenerator { private final Platform platform; diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator.java index 89fe55afe..4ef7072c7 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator.java @@ -7,14 +7,14 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; +import net.jafama.FastMath; + import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties; import com.dfsek.terra.api.properties.PropertyKey; 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 net.jafama.FastMath; - /** * Class to abstract away the Interpolators needed to generate a chunk.
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 97a6a147c..6e46ba774 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,10 +1,9 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; -import com.dfsek.terra.api.properties.PropertyKey; - import net.jafama.FastMath; import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties; +import com.dfsek.terra.api.properties.PropertyKey; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import static com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.Interpolator.lerp; 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 ab1de182f..439c85ad1 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 @@ -11,7 +11,6 @@ import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.world.World; 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/PatternLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java index 575b2328e..b4ea6b1d8 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 @@ -7,14 +7,14 @@ package com.dfsek.terra.addons.feature.locator.locators; +import net.jafama.FastMath; + import com.dfsek.terra.addons.feature.locator.patterns.Pattern; import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.chunk.generation.util.Column; -import net.jafama.FastMath; - public class PatternLocator implements Locator { private final Pattern pattern; 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 e0194167b..9e9b7ef2e 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java @@ -7,14 +7,14 @@ package com.dfsek.terra.addons.feature.locator.locators; +import net.jafama.FastMath; + import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.world.chunk.generation.util.Column; import com.dfsek.terra.api.world.chunk.generation.util.Column.BinaryColumnBuilder; -import net.jafama.FastMath; - public class SurfaceLocator implements Locator { private final Range search; 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 111744cd9..e2ca64f69 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 @@ -7,16 +7,13 @@ package com.dfsek.terra.addons.feature.locator.patterns; -import com.dfsek.terra.api.world.ServerWorld; - -import com.dfsek.terra.api.world.WritableWorld; - import net.jafama.FastMath; import java.util.function.Predicate; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.world.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/patterns/Pattern.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java index 86850378e..4c2d0de67 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java @@ -7,9 +7,6 @@ package com.dfsek.terra.addons.feature.locator.patterns; -import com.dfsek.terra.api.world.ReadableWorld; -import com.dfsek.terra.api.world.ServerWorld; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.WritableWorld; import com.dfsek.terra.api.world.chunk.generation.util.Column; 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 0a7a0c9b4..5408b26e4 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,6 +7,9 @@ package com.dfsek.terra.addons.generation.feature; +import java.util.Collections; +import java.util.Random; + import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.properties.PropertyKey; @@ -18,9 +21,6 @@ import com.dfsek.terra.api.world.chunk.generation.ProtoWorld; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; import com.dfsek.terra.api.world.chunk.generation.util.Column; -import java.util.Collections; -import java.util.Random; - public class FeatureGenerationStage implements GenerationStage, StringIdentifiable { private final Platform platform; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Scope.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Scope.java index 946abbfea..f9532c8cf 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Scope.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Scope.java @@ -1,15 +1,14 @@ package com.dfsek.terra.addons.terrascript.parser.lang; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable.ReturnType; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.reference.VariableReferenceNode; -import com.dfsek.terra.api.util.generic.pair.Pair; - import net.jafama.FastMath; import java.util.HashMap; import java.util.Map; +import com.dfsek.terra.addons.terrascript.parser.lang.Returnable.ReturnType; +import com.dfsek.terra.api.util.generic.pair.Pair; + public class Scope { private final double[] num; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java index 7d36d114d..f49cab112 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; -import com.dfsek.terra.api.util.generic.pair.Pair; - import org.jetbrains.annotations.Nullable; import java.util.List; @@ -19,6 +17,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.tokenizer.Position; +import com.dfsek.terra.api.util.generic.pair.Pair; public class IfKeyword implements Keyword> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java index f336b3055..fdacebe4c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java @@ -7,11 +7,7 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import java.util.function.Supplier; - -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.tokenizer.Position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java index b10407a79..94a08bbe6 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import java.util.function.Supplier; - 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/parser/lang/operations/BooleanOrOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java index 177297972..e5ca10337 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import java.util.function.Supplier; - 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/parser/lang/operations/DivisionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java index e2153559e..793012549 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import java.util.function.Supplier; - 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/parser/lang/operations/ModuloOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java index 41cc48662..3731d0807 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import java.util.function.Supplier; - 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/parser/lang/operations/MultiplicationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java index aeaf9bd90..62e58a92c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import java.util.function.Supplier; - 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/parser/lang/operations/NumberAdditionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java index bb216047a..33439b742 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import java.util.function.Supplier; - 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/parser/lang/operations/SubtractionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java index e31b2b5de..dca6c66c5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import java.util.function.Supplier; - 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/parser/lang/operations/UnaryOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java index 5071e95ea..d83ab0ad2 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java @@ -7,9 +7,7 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -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.tokenizer.Position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java index 82a045742..97648aa1f 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 @@ -7,14 +7,11 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Scope; - import net.jafama.FastMath; -import java.util.function.Supplier; - +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.operations.BinaryOperation; import com.dfsek.terra.addons.terrascript.tokenizer.Position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java index 10c60a305..d25f6bd0d 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import java.util.function.Supplier; - 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/parser/lang/operations/statements/GreaterThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java index 0bb3e5500..8e5cc4aee 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import java.util.function.Supplier; - 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/parser/lang/operations/statements/LessThanOrEqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java index ef2aa8346..207d09632 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import java.util.function.Supplier; - 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/parser/lang/operations/statements/LessThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java index f06e395b1..aed7189f6 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import java.util.function.Supplier; - 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/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 aaecd56bc..3241c8657 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 @@ -7,14 +7,11 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Scope; - import net.jafama.FastMath; -import java.util.function.Supplier; - +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.operations.BinaryOperation; import com.dfsek.terra.addons.terrascript.tokenizer.Position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/NumAssignmentNode.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/NumAssignmentNode.java index 55ebb8aa8..1b67e7150 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/NumAssignmentNode.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/NumAssignmentNode.java @@ -3,7 +3,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables.assign; 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.variables.Variable; import com.dfsek.terra.addons.terrascript.tokenizer.Position; 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 87636fd9e..e865d0d6d 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,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.script; -import com.dfsek.terra.addons.terrascript.parser.lang.Executable; - import net.jafama.FastMath; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; @@ -20,7 +18,7 @@ import java.nio.charset.Charset; import java.util.Random; import com.dfsek.terra.addons.terrascript.parser.Parser; -import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.Executable; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.builders.BinaryNumberFunctionBuilder; diff --git a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java index e50589dfb..2f07954d2 100644 --- a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java +++ b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java @@ -8,8 +8,6 @@ package structure; -import com.dfsek.terra.addons.terrascript.parser.lang.Executable; - import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; @@ -20,7 +18,7 @@ import java.util.Objects; import com.dfsek.terra.addons.terrascript.parser.Parser; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.Executable; 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/api/src/main/java/com/dfsek/terra/api/util/Column.java b/common/api/src/main/java/com/dfsek/terra/api/util/Column.java index 4610bbf8d..2b6264228 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/Column.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/Column.java @@ -1,12 +1,12 @@ package com.dfsek.terra.api.util; -import com.dfsek.terra.api.util.function.IntIntObjConsumer; -import com.dfsek.terra.api.util.function.IntObjConsumer; - import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; +import com.dfsek.terra.api.util.function.IntIntObjConsumer; +import com.dfsek.terra.api.util.function.IntObjConsumer; + public interface Column { int getMinY(); diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java index 4727b57e2..d47cfdc05 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java @@ -15,7 +15,6 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; -import java.util.function.UnaryOperator; public final class Pair { 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 09c6f3dbd..cfa5a78c0 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,19 +7,18 @@ package com.dfsek.terra.api.world.biome.generation; -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.terra.api.world.biome.Biome; - -import com.dfsek.terra.api.world.info.WorldProperties; - import org.jetbrains.annotations.Contract; import java.util.Optional; 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.terra.api.world.biome.Biome; +import com.dfsek.terra.api.world.info.WorldProperties; + /** * Provides locations of biomes in a world. 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 e503dd54c..fa3847a23 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,14 +1,14 @@ package com.dfsek.terra.api.world.biome.generation; -import com.dfsek.terra.api.Handle; -import com.dfsek.terra.api.world.biome.Biome; - import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; import com.github.benmanes.caffeine.cache.Scheduler; import java.util.Optional; +import com.dfsek.terra.api.Handle; +import com.dfsek.terra.api.world.biome.Biome; + /** * A biome provider implementation that lazily evaluates biomes, and caches them. diff --git a/common/api/src/test/java/util/ColumnTest.java b/common/api/src/test/java/util/ColumnTest.java index bcb3f6064..7ba140683 100644 --- a/common/api/src/test/java/util/ColumnTest.java +++ b/common/api/src/test/java/util/ColumnTest.java @@ -1,10 +1,5 @@ package util; -import com.dfsek.terra.api.util.Column; - -import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.util.mutable.MutableInteger; - import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -14,6 +9,10 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.IntStream; +import com.dfsek.terra.api.util.Column; +import com.dfsek.terra.api.util.generic.pair.Pair; +import com.dfsek.terra.api.util.mutable.MutableInteger; + import static org.junit.jupiter.api.Assertions.*; 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 81933014f..4ea9466ec 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,30 @@ package com.dfsek.terra; import com.dfsek.tectonic.api.TypeRegistry; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.yaml.snakeyaml.Yaml; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UncheckedIOException; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; import com.dfsek.terra.addon.BootstrapAddonLoader; import com.dfsek.terra.addon.DependencySorter; @@ -49,21 +73,6 @@ import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.master.ConfigRegistry; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; -import org.jetbrains.annotations.NotNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.yaml.snakeyaml.Yaml; - -import java.io.*; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.*; -import java.util.stream.Collectors; - /** * Skeleton implementation of {@link Platform} diff --git a/common/implementation/bootstrap-addon-loader/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java b/common/implementation/bootstrap-addon-loader/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java index 37eba4762..244bef568 100644 --- a/common/implementation/bootstrap-addon-loader/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java +++ b/common/implementation/bootstrap-addon-loader/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java @@ -96,7 +96,6 @@ public class BootstrapAddonLoader implements BootstrapBaseAddon() { +tasks.withType { entryCompression = ZipEntryCompression.STORED manifest { attributes( diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index 4020713db..4d83590a2 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("fabric-loom") version Versions.Fabric.loom - id("io.github.juuxel.loom-quiltflower") version Versions.Fabric.loomQuiltflower + id("architectury-plugin") version Versions.Mod.architectutyPlugin + id("io.github.juuxel.loom-quiltflower") version Versions.Mod.loomQuiltflower } @@ -20,12 +21,12 @@ dependencies { "common"(project(path = ":platforms:mixin-common", configuration = "namedElements")) { isTransitive = false } shaded(project(path = ":platforms:mixin-common", configuration = "transformProductionFabric")) { isTransitive = false } - minecraft("com.mojang:minecraft:${Versions.Fabric.minecraft}") - mappings("net.fabricmc:yarn:${Versions.Fabric.yarn}:v2") + minecraft("com.mojang:minecraft:${Versions.Mod.minecraft}") + mappings("net.fabricmc:yarn:${Versions.Mod.yarn}:v2") modImplementation("net.fabricmc:fabric-loader:${Versions.Fabric.fabricLoader}") - setOf("fabric-lifecycle-events-v1", "fabric-resource-loader-v0", "fabric-api-base", "fabric-command-api-v2").forEach { apiModule -> + setOf("fabric-lifecycle-events-v1", "fabric-resource-loader-v0", "fabric-api-base", "fabric-command-api-v2", "fabric-networking-api-v1").forEach { apiModule -> val module = fabricApi.module(apiModule, Versions.Fabric.fabricAPI) modImplementation(module) include(module) @@ -36,16 +37,16 @@ dependencies { } loom { - accessWidenerPath.set(file("src/main/resources/terra.accesswidener")) + accessWidenerPath.set(project(":platforms:mixin-common").file("terra.accesswidener")) + mixin { - defaultRefmapName.set("terra-fabric-refmap.json") + defaultRefmapName.set("terra.fabric.refmap.json") } + } -addonDir(project.file("./run/config/Terra/addons"), tasks.named("runClient").get()) -addonDir(project.file("./run/config/Terra/addons"), tasks.named("runServer").get()) - +addonDir(project.file("./run/config/Terra/addons"), tasks.named("configureLaunch").get()) tasks { compileJava { @@ -56,4 +57,8 @@ tasks { inputFile.set(shadowJar.get().archiveFile) archiveFileName.set("${rootProject.name.capitalize()}-${project.version}.jar") } + + processResources { + from(project(":platforms:mixin-common").file("terra.accesswidener")) + } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java new file mode 100644 index 000000000..21ed9870c --- /dev/null +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java @@ -0,0 +1,16 @@ +package com.dfsek.terra.fabric; + +import com.dfsek.terra.mod.MinecraftAddon; +import com.dfsek.terra.mod.ModPlatform; + +public class FabricAddon extends MinecraftAddon { + + public FabricAddon(ModPlatform modPlatform) { + super(modPlatform); + } + + @Override + public String getID() { + return "terra-fabric"; + } +} \ No newline at end of file diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java index ca110eccf..6fcc2b792 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java @@ -18,16 +18,7 @@ package com.dfsek.terra.fabric; import cloud.commandframework.execution.CommandExecutionCoordinator; - import cloud.commandframework.fabric.FabricServerCommandManager; - -import com.dfsek.terra.api.command.CommandSender; -import com.dfsek.terra.api.event.events.platform.CommandRegistrationEvent; - -import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; -import com.dfsek.terra.fabric.util.BiomeUtil; -import com.dfsek.terra.mod.CommonPlatform; - import net.fabricmc.api.ModInitializer; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.util.Identifier; @@ -36,6 +27,11 @@ import net.minecraft.util.registry.Registry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.dfsek.terra.api.command.CommandSender; +import com.dfsek.terra.api.event.events.platform.CommandRegistrationEvent; +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; +import com.dfsek.terra.fabric.util.BiomeUtil; +import com.dfsek.terra.mod.CommonPlatform; import com.dfsek.terra.mod.data.Codecs; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java index 66ddb8c67..4c5ab038a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java @@ -20,23 +20,9 @@ package com.dfsek.terra.fabric; import ca.solostudios.strata.Versions; import ca.solostudios.strata.parser.tokenizer.ParseException; import ca.solostudios.strata.version.Version; - -import com.dfsek.terra.fabric.util.BiomeUtil; -import com.dfsek.terra.mod.CommonPlatform; -import com.dfsek.terra.mod.ModPlatform; - -import com.dfsek.terra.mod.generation.TerraBiomeSource; - -import com.dfsek.terra.mod.util.PresetUtil; - import net.fabricmc.loader.api.FabricLoader; import net.minecraft.MinecraftVersion; import net.minecraft.server.MinecraftServer; -import net.minecraft.util.Identifier; -import net.minecraft.util.registry.BuiltinRegistries; -import net.minecraft.world.dimension.DimensionOptions; -import net.minecraft.world.gen.WorldPreset; -import net.minecraft.world.gen.chunk.ChunkGenerator; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,15 +30,15 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.util.ArrayList; import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.function.BiConsumer; import com.dfsek.terra.addon.EphemeralAddon; import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.util.generic.Lazy; +import com.dfsek.terra.fabric.util.BiomeUtil; +import com.dfsek.terra.mod.CommonPlatform; +import com.dfsek.terra.mod.ModPlatform; import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; import com.dfsek.terra.mod.handle.MinecraftItemHandle; import com.dfsek.terra.mod.handle.MinecraftWorldHandle; @@ -157,4 +143,9 @@ public class PlatformImpl extends ModPlatform { public @NotNull ItemHandle getItemHandle() { return itemHandle; } + + @Override + public BaseAddon getPlatformAddon() { + return new FabricAddon(this); + } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/MinecraftServerMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/MinecraftServerMixin.java index 2a545ebf0..0620de7f2 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/MinecraftServerMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/MinecraftServerMixin.java @@ -1,14 +1,11 @@ package com.dfsek.terra.fabric.mixin.lifecycle; -import com.mojang.authlib.GameProfileRepository; -import com.mojang.authlib.minecraft.MinecraftSessionService; 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.util.UserCache; import net.minecraft.world.level.storage.LevelStorage; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/NoiseConfigMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/NoiseConfigMixin.java index b24bfd489..15957b31c 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/NoiseConfigMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/NoiseConfigMixin.java @@ -1,7 +1,5 @@ package com.dfsek.terra.fabric.mixin.lifecycle; -import com.dfsek.terra.mod.util.SeedHack; - import net.minecraft.util.math.noise.DoublePerlinNoiseSampler; import net.minecraft.util.registry.Registry; 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 diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/BiomeUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/BiomeUtil.java index 769c9e65b..7afb25668 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/BiomeUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/BiomeUtil.java @@ -1,13 +1,5 @@ package com.dfsek.terra.fabric.util; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; - -import com.dfsek.terra.mod.config.ProtoPlatformBiome; -import com.dfsek.terra.mod.util.MinecraftUtil; - import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; @@ -15,7 +7,14 @@ import net.minecraft.util.registry.RegistryKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.*; +import java.util.ArrayList; + +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.world.biome.Biome; +import com.dfsek.terra.fabric.FabricEntryPoint; +import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; +import com.dfsek.terra.mod.config.ProtoPlatformBiome; +import com.dfsek.terra.mod.util.MinecraftUtil; public final class BiomeUtil { diff --git a/platforms/fabric/src/main/resources/fabric.mod.json b/platforms/fabric/src/main/resources/fabric.mod.json index e6e490c1a..2d9a3db6a 100644 --- a/platforms/fabric/src/main/resources/fabric.mod.json +++ b/platforms/fabric/src/main/resources/fabric.mod.json @@ -21,7 +21,8 @@ ] }, "mixins": [ - "terra.fabric.mixins.json" + "terra.fabric.mixins.json", + "terra.common.mixins.json" ], "depends": { "fabricloader": ">=0.14.2", diff --git a/platforms/fabric/src/main/resources/terra.accesswidener b/platforms/fabric/src/main/resources/terra.accesswidener deleted file mode 100644 index 3fde5170f..000000000 --- a/platforms/fabric/src/main/resources/terra.accesswidener +++ /dev/null @@ -1 +0,0 @@ -accessWidener v1 named diff --git a/platforms/fabric/src/main/resources/terra.fabric.mixins.json b/platforms/fabric/src/main/resources/terra.fabric.mixins.json index 52882ee43..9b2d4bcec 100644 --- a/platforms/fabric/src/main/resources/terra.fabric.mixins.json +++ b/platforms/fabric/src/main/resources/terra.fabric.mixins.json @@ -16,6 +16,5 @@ ], "injectors": { "defaultRequire": 1 - }, - "refmap": "terra-fabric-refmap.json" + } } \ No newline at end of file diff --git a/platforms/forge/build.gradle.kts b/platforms/forge/build.gradle.kts index b09a9a1b1..fc967677e 100644 --- a/platforms/forge/build.gradle.kts +++ b/platforms/forge/build.gradle.kts @@ -1,7 +1,7 @@ plugins { - id("dev.architectury.loom") version Versions.Forge.architecuryLoom + id("dev.architectury.loom") version Versions.Mod.architecuryLoom id("architectury-plugin") version Versions.Mod.architectutyPlugin - id("io.github.juuxel.loom-quiltflower") version Versions.Fabric.loomQuiltflower + id("io.github.juuxel.loom-quiltflower") version Versions.Mod.loomQuiltflower } architectury { @@ -17,32 +17,43 @@ configurations { dependencies { shadedApi(project(":common:implementation:base")) + "forgeRuntimeLibrary"(project(":common:implementation:base")) + "common"(project(path = ":platforms:mixin-common", configuration = "namedElements")) { isTransitive = false } shaded(project(path = ":platforms:mixin-common", configuration = "transformProductionForge")) { isTransitive = false } - "developmentForge"(project(":platforms:mixin-common", configuration = "namedElements")) { + "developmentForge"(project(path = ":platforms:mixin-common", configuration = "namedElements")) { isTransitive = false } forge(group = "net.minecraftforge", name = "forge", version = Versions.Forge.forge) - minecraft("com.mojang:minecraft:${Versions.Forge.minecraft}") - mappings("net.fabricmc:yarn:${Versions.Forge.yarn}:v2") + minecraft("com.mojang:minecraft:${Versions.Mod.minecraft}") + mappings("net.fabricmc:yarn:${Versions.Mod.yarn}:v2") + + //forge is not ok. + compileOnly("org.burningwave:core:${Versions.Forge.burningwave}") + "forgeRuntimeLibrary"("org.burningwave:core:${Versions.Forge.burningwave}") } loom { + accessWidenerPath.set(project(":platforms:mixin-common").file("terra.accesswidener")) + mixin { - defaultRefmapName.set("terra-forge-refmap.json") + defaultRefmapName.set("terra.forge.refmap.json") } forge { + convertAccessWideners.set(true) mixinConfig("terra.common.mixins.json") mixinConfig("terra.forge.mixins.json") + extraAccessWideners.add(loom.accessWidenerPath.get().asFile.name) } } +addonDir(project.file("./run/config/Terra/addons"), tasks.named("configureLaunch").get()) tasks { jar { @@ -64,4 +75,8 @@ tasks { inputFile.set(shadowJar.get().archiveFile) archiveFileName.set("${rootProject.name.capitalize()}-${project.version}.jar") } -} + + processResources { + from(project(":platforms:mixin-common").file("terra.accesswidener")) + } +} \ No newline at end of file diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/AwfulForgeHacks.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/AwfulForgeHacks.java index 0ddb92caa..1d0f44bc2 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/AwfulForgeHacks.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/AwfulForgeHacks.java @@ -1,17 +1,34 @@ package com.dfsek.terra.forge; +import com.dfsek.terra.AbstractPlatform; + +import cpw.mods.cl.ModuleClassLoader; +import net.minecraftforge.fml.loading.FMLLoader; +import org.burningwave.core.classes.Classes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.lang.reflect.Field; +import java.net.URISyntaxException; +import java.net.URL; import java.nio.file.FileVisitOption; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Objects; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; import java.util.concurrent.atomic.AtomicReference; +import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.stream.Stream; +import com.dfsek.terra.api.addon.bootstrap.BootstrapAddonClassLoader; + /** * Forge is really wacky and screws with class resolution in the addon loader. Loading every single Terra class *manually* on startup @@ -34,7 +51,7 @@ public final class AwfulForgeHacks { */ public static JarFile getTerraJar() throws IOException { LOGGER.info("Scanning for Terra JAR..."); - return Files.walk(Path.of("./", "mods"), 1, FileVisitOption.FOLLOW_LINKS) + return Files.walk(Path.of(System.getProperty("user.dir"), "mods"), 1, FileVisitOption.FOLLOW_LINKS) .filter(it -> it.getFileName().toString().endsWith(".jar")) .peek(path -> LOGGER.info("Found mod: {}", path)) .map(Path::toFile) @@ -53,30 +70,75 @@ public final class AwfulForgeHacks { .equals(ForgeEntryPoint.class.getName().replace('.', '/') + ".class"))) .findFirst() .orElseThrow(() -> new IllegalStateException("Could not find Terra JAR")); - } public static void loadAllTerraClasses() { - - try(JarFile jar = getTerraJar()) { - jar.stream() - .forEach(jarEntry -> { - if(jarEntry.getName().startsWith("com/dfsek/terra/forge/mixin") - || jarEntry.getName().startsWith("com/dfsek/terra/mod/mixin")) { - return; - } - if(jarEntry.getName().endsWith(".class")) { - String name = jarEntry.getName().replace('/', '.'); - name = name.substring(0, name.length() - 6); - try { - Class.forName(name); - } catch(ClassNotFoundException | NoClassDefFoundError e) { - LOGGER.warn("Failed to load class {}: {}", name, e); + if (FMLLoader.isProduction()) { + try(JarFile jar = getTerraJar()) { + jar.stream() + .forEach(jarEntry -> { + if(jarEntry.getName().startsWith("com/dfsek/terra/forge/mixin") + || jarEntry.getName().startsWith("com/dfsek/terra/mod/mixin")) { + return; } - } - }); - } catch(IOException e) { - throw new IllegalStateException("Could not load all Terra classes", e); + if(jarEntry.getName().endsWith(".class")) { + String name = jarEntry.getName().replace('/', '.'); + name = name.substring(0, name.length() - 6); + try { + Class.forName(name); + } catch(ClassNotFoundException | NoClassDefFoundError e) { + LOGGER.warn("Failed to load class {}: {}", name, e); + } + } + }); + } catch(IOException e) { + throw new IllegalStateException("Could not load all Terra classes", e); + } + } else { + // Forgive me for what I'm about to do... + LOGGER.warn("I felt a great disturbance in the JVM, as if millions of class not found exceptions suddenly cried out in terror and were suddenly silenced."); + ArrayList pathsToLoad = new ArrayList<>(); + + Path terraRoot = Path.of(System.getProperty("user.dir")).getParent().getParent().getParent(); + Path commonRoot = terraRoot.resolve("common"); + Path implementationRoot = commonRoot.resolve("implementation"); + + pathsToLoad.add(commonRoot.resolve("api")); + pathsToLoad.add(implementationRoot.resolve("base")); + pathsToLoad.add(implementationRoot.resolve("bootstrap-addon-loader")); + for (Path path : pathsToLoad) { + try { + Path target = path.resolve("build").resolve("classes").resolve("java").resolve("main"); + + BootstrapAddonClassLoader cl = new BootstrapAddonClassLoader(new URL[] { path.toUri().toURL()}); + + Classes.Loaders omegaCL = Classes.Loaders.create(); + Files.walk(target, Integer.MAX_VALUE, FileVisitOption.FOLLOW_LINKS) + .filter(it -> it.getFileName().toString().endsWith(".class")) + .map(Path::toFile) + .forEach(it -> { + String name = it.getAbsolutePath().replace(target + "/", "").replace('\\', '.').replace('/', '.'); + name = name.substring(0, name.length() - 6); + LOGGER.info("Loading class {}", name); + try { + Class.forName(name); + } catch(ClassNotFoundException e) { + try { + String pathToJar = cl.loadClass(name).getProtectionDomain().getCodeSource().getLocation().toURI().getPath(); + + cl.addURL(new URL("jar:file:" + pathToJar + "!/")); + Class newClassLoad = Class.forName(name, true, cl); + omegaCL.loadOrDefine(newClassLoad, AbstractPlatform.class.getClassLoader()); + } catch(ClassNotFoundException | URISyntaxException | IOException ex) { + throw new RuntimeException(ex); + } + + } + }); + } catch(IOException e) { + throw new IllegalStateException("Could not load all Terra classes", e); + } + } } } @@ -84,7 +146,7 @@ public final class AwfulForgeHacks { BLOCK, BIOME, WORLD_TYPE, - DONE; + DONE } diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAddon.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAddon.java new file mode 100644 index 000000000..5b6e82ec1 --- /dev/null +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeAddon.java @@ -0,0 +1,16 @@ +package com.dfsek.terra.forge; + +import com.dfsek.terra.mod.MinecraftAddon; +import com.dfsek.terra.mod.ModPlatform; + +public class ForgeAddon extends MinecraftAddon { + + public ForgeAddon(ModPlatform modPlatform) { + super(modPlatform); + } + + @Override + public String getID() { + return "terra-forge"; + } +} \ No newline at end of file diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeEntryPoint.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeEntryPoint.java index dbc919781..9691dde88 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeEntryPoint.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/ForgeEntryPoint.java @@ -17,9 +17,6 @@ package com.dfsek.terra.forge; -import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; -import com.dfsek.terra.forge.util.BiomeUtil; - import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import net.minecraft.world.biome.Biome; @@ -36,8 +33,10 @@ import net.minecraftforge.registries.RegisterEvent.RegisterHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.forge.AwfulForgeHacks.RegistrySanityCheck; import com.dfsek.terra.forge.AwfulForgeHacks.RegistryStep; +import com.dfsek.terra.forge.util.BiomeUtil; import com.dfsek.terra.mod.data.Codecs; diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/PlatformImpl.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/PlatformImpl.java index b3996a9d8..5281b8ba1 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/PlatformImpl.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/PlatformImpl.java @@ -20,13 +20,8 @@ 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.mod.util.PresetUtil; - import net.minecraft.MinecraftVersion; import net.minecraft.server.MinecraftServer; -import net.minecraft.util.Identifier; -import net.minecraft.world.gen.WorldPreset; import net.minecraftforge.fml.loading.FMLLoader; import net.minecraftforge.server.ServerLifecycleHooks; import org.jetbrains.annotations.NotNull; @@ -36,7 +31,6 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.util.ArrayList; import java.util.List; -import java.util.function.BiConsumer; import com.dfsek.terra.addon.EphemeralAddon; import com.dfsek.terra.api.addon.BaseAddon; @@ -55,33 +49,33 @@ public class PlatformImpl extends ModPlatform { private final ItemHandle itemHandle = new MinecraftItemHandle(); private final WorldHandle worldHandle = new MinecraftWorldHandle(); private final Lazy dataFolder = Lazy.lazy(() -> new File("./config/Terra")); - + public PlatformImpl() { CommonPlatform.initialize(this); load(); } - + @Override public MinecraftServer getServer() { return ServerLifecycleHooks.getCurrentServer(); } - + @Override public boolean reload() { getTerraConfig().load(this); getRawConfigRegistry().clear(); boolean succeed = getRawConfigRegistry().loadAll(this); - + MinecraftServer server = getServer(); - - if(server != null) { + + if (server != null) { server.reloadResources(server.getDataPackManager().getNames()).exceptionally(throwable -> { LOGGER.warn("Failed to execute reload", throwable); return null; }).join(); //BiomeUtil.registerBiomes(); server.getWorlds().forEach(world -> { - if(world.getChunkManager().getChunkGenerator() instanceof MinecraftChunkGeneratorWrapper chunkGeneratorWrapper) { + if (world.getChunkManager().getChunkGenerator() instanceof MinecraftChunkGeneratorWrapper chunkGeneratorWrapper) { getConfigRegistry().get(chunkGeneratorWrapper.getPack().getRegistryKey()).ifPresent(pack -> { chunkGeneratorWrapper.setPack(pack); LOGGER.info("Replaced pack in chunk generator for world {}", world); @@ -91,51 +85,57 @@ public class PlatformImpl extends ModPlatform { } return succeed; } - + @Override protected Iterable platformAddon() { List addons = new ArrayList<>(); - + super.platformAddon().forEach(addons::add); - + String mcVersion = MinecraftVersion.CURRENT.getReleaseTarget(); try { addons.add(new EphemeralAddon(Versions.parseVersion(mcVersion), "minecraft")); - } catch(ParseException e) { + } catch (ParseException e) { try { addons.add(new EphemeralAddon(Versions.parseVersion(mcVersion + ".0"), "minecraft")); - } catch(ParseException ex) { + } catch (ParseException ex) { LOGGER.warn("Failed to parse Minecraft version", e); } } - + FMLLoader.getLoadingModList().getMods().forEach(mod -> { String id = mod.getModId(); - if(id.equals("terra") || id.equals("minecraft") || id.equals("java")) return; + if (id.equals("terra") || id.equals("minecraft") || id.equals("java")) return; Version version = Versions.getVersion(mod.getVersion().getMajorVersion(), mod.getVersion().getMinorVersion(), mod.getVersion().getIncrementalVersion()); addons.add(new EphemeralAddon(version, "forge:" + id)); }); - + return addons; } - + @Override public @NotNull String platformName() { return "Forge"; } - + @Override public @NotNull WorldHandle getWorldHandle() { return worldHandle; } - + @Override public @NotNull File getDataFolder() { return dataFolder.value(); } - + @Override public @NotNull ItemHandle getItemHandle() { return itemHandle; } + + + @Override + public BaseAddon getPlatformAddon() { + return new ForgeAddon(this); + } } diff --git a/platforms/forge/src/main/resources/terra.forge.mixins.json b/platforms/forge/src/main/resources/terra.forge.mixins.json index 355d77483..9bc9426db 100644 --- a/platforms/forge/src/main/resources/terra.forge.mixins.json +++ b/platforms/forge/src/main/resources/terra.forge.mixins.json @@ -12,6 +12,5 @@ ], "injectors": { "defaultRequire": 1 - }, - "refmap": "terra-forge-refmap.json" + } } \ No newline at end of file diff --git a/platforms/mixin-common/build.gradle.kts b/platforms/mixin-common/build.gradle.kts index 33a503818..8646e8b39 100644 --- a/platforms/mixin-common/build.gradle.kts +++ b/platforms/mixin-common/build.gradle.kts @@ -1,11 +1,14 @@ plugins { id("dev.architectury.loom") version Versions.Mod.architecuryLoom id("architectury-plugin") version Versions.Mod.architectutyPlugin + id("io.github.juuxel.loom-quiltflower") version Versions.Mod.loomQuiltflower } loom { + accessWidenerPath.set(file("terra.accesswidener")) + mixin { - defaultRefmapName.set("terra-common-refmap.json") + defaultRefmapName.set("terra.common.refmap.json") } } @@ -21,4 +24,5 @@ dependencies { architectury { common("fabric", "forge") minecraft = Versions.Mod.minecraft -} \ No newline at end of file +} + 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 76b13b137..50fd7a428 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 @@ -33,7 +33,7 @@ import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; import com.dfsek.terra.mod.config.VanillaBiomeProperties; -public final class MinecraftAddon implements BaseAddon { +public abstract class MinecraftAddon implements BaseAddon { private static final Version VERSION = Versions.getVersion(1, 0, 0); private static final Logger logger = LoggerFactory.getLogger(MinecraftAddon.class); private final ModPlatform modPlatform; @@ -72,9 +72,4 @@ public final class MinecraftAddon implements BaseAddon { public Version getVersion() { return VERSION; } - - @Override - public String getID() { - return "terra-fabric"; - } } 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 5a75d0cc2..ed9f2a986 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 @@ -1,32 +1,47 @@ package com.dfsek.terra.mod; import com.dfsek.tectonic.api.TypeRegistry; - import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; -import com.dfsek.terra.AbstractPlatform; +import com.dfsek.terra.mod.config.SpawnSettingsTemplate; -import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.world.biome.PlatformBiome; - -import com.dfsek.terra.mod.config.ProtoPlatformBiome; - -import com.dfsek.terra.mod.util.PresetUtil; - -import net.minecraft.command.CommandSource; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnGroup; import net.minecraft.server.MinecraftServer; +import net.minecraft.sound.BiomeAdditionsSound; +import net.minecraft.sound.BiomeMoodSound; +import net.minecraft.sound.MusicSound; +import net.minecraft.sound.SoundEvent; import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; -import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome.Precipitation; +import net.minecraft.world.biome.Biome.TemperatureModifier; import net.minecraft.world.biome.BiomeEffects.GrassColorModifier; +import net.minecraft.world.biome.BiomeParticleConfig; +import net.minecraft.world.biome.SpawnSettings; +import net.minecraft.world.biome.SpawnSettings.SpawnEntry; import net.minecraft.world.gen.WorldPreset; import java.util.List; import java.util.Locale; import java.util.function.BiConsumer; -import java.util.function.Consumer; + +import com.dfsek.terra.AbstractPlatform; +import com.dfsek.terra.api.addon.BaseAddon; +import com.dfsek.terra.api.world.biome.PlatformBiome; +import com.dfsek.terra.mod.config.BiomeAdditionsSoundTemplate; +import com.dfsek.terra.mod.config.BiomeMoodSoundTemplate; +import com.dfsek.terra.mod.config.BiomeParticleConfigTemplate; +import com.dfsek.terra.mod.config.EntityTypeTemplate; +import com.dfsek.terra.mod.config.MusicSoundTemplate; +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.SpawnTypeConfig; +import com.dfsek.terra.mod.util.PresetUtil; public abstract class ModPlatform extends AbstractPlatform { @@ -50,7 +65,20 @@ public abstract class ModPlatform extends AbstractPlatform { .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))); + 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); } private ProtoPlatformBiome parseBiome(String id, DepthTracker tracker) throws LoadException { @@ -58,9 +86,11 @@ public abstract class ModPlatform extends AbstractPlatform { if(BuiltinRegistries.BIOME.get(identifier) == null) throw new LoadException("Invalid Biome ID: " + identifier, tracker); // failure. return new ProtoPlatformBiome(identifier); } - + @Override protected Iterable platformAddon() { - return List.of(new MinecraftAddon(this)); + return List.of(getPlatformAddon()); } + + protected abstract BaseAddon getPlatformAddon(); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeAdditionsSoundTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeAdditionsSoundTemplate.java new file mode 100644 index 000000000..92e6dc7a7 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeAdditionsSoundTemplate.java @@ -0,0 +1,27 @@ +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.sound.BiomeAdditionsSound; +import net.minecraft.sound.SoundEvent; + + +public class BiomeAdditionsSoundTemplate implements ObjectTemplate { + @Value("sound") + @Default + private SoundEvent sound = null; + + @Value("sound-chance") + @Default + private Double soundChance = null; + + @Override + public BiomeAdditionsSound get() { + if (sound == null || soundChance == null) { + return null; + } else { + return new BiomeAdditionsSound(sound, soundChance); + } + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeMoodSoundTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeMoodSoundTemplate.java new file mode 100644 index 000000000..71f636db2 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeMoodSoundTemplate.java @@ -0,0 +1,35 @@ +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.sound.BiomeMoodSound; +import net.minecraft.sound.SoundEvent; + + +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 BiomeMoodSound get() { + if (sound == null || soundCultivationTicks == null || soundSpawnRange == null || soundExtraDistance == null) { + return null; + } else { + return new BiomeMoodSound(sound, soundCultivationTicks, soundSpawnRange, soundExtraDistance); + } + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeParticleConfigTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeParticleConfigTemplate.java new file mode 100644 index 000000000..5e2558412 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/BiomeParticleConfigTemplate.java @@ -0,0 +1,33 @@ +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.mojang.brigadier.StringReader; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import net.minecraft.command.argument.ParticleEffectArgumentType; +import net.minecraft.world.biome.BiomeParticleConfig; + + +public class BiomeParticleConfigTemplate implements ObjectTemplate { + @Value("particle") + @Default + private String particle = null; + + @Value("probability") + @Default + private Integer probability = null; + + @Override + public BiomeParticleConfig get() { + if (particle == null || probability == null) { + return null; + } + + try { + return new BiomeParticleConfig(ParticleEffectArgumentType.readParameters(new StringReader(particle)), probability); + } catch(CommandSyntaxException e) { + throw new RuntimeException(e); + } + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/EntityTypeTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/EntityTypeTemplate.java new file mode 100644 index 000000000..d2e46764d --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/EntityTypeTemplate.java @@ -0,0 +1,20 @@ +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.EntityType; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + + +public class EntityTypeTemplate implements ObjectTemplate> { + @Value("id") + @Default + private Identifier id = null; + + @Override + public EntityType get() { + return Registry.ENTITY_TYPE.get(id); + } +} 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 new file mode 100644 index 000000000..674d47548 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/MusicSoundTemplate.java @@ -0,0 +1,35 @@ +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.sound.MusicSound; +import net.minecraft.sound.SoundEvent; + + +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 MusicSound get() { + if (sound == null || minDelay == null || maxDelay == null || replaceCurrentMusic == null) { + return null; + } else { + return new MusicSound(sound, minDelay, maxDelay, replaceCurrentMusic); + } + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/ProtoPlatformBiome.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/ProtoPlatformBiome.java index 78542fabe..f9524ef58 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/ProtoPlatformBiome.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/ProtoPlatformBiome.java @@ -17,8 +17,6 @@ package com.dfsek.terra.mod.config; -import com.dfsek.terra.mod.util.MinecraftUtil; - import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; @@ -27,6 +25,7 @@ import net.minecraft.world.biome.Biome; import java.util.Objects; import com.dfsek.terra.api.world.biome.PlatformBiome; +import com.dfsek.terra.mod.util.MinecraftUtil; public class ProtoPlatformBiome implements PlatformBiome { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SoundEventTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SoundEventTemplate.java new file mode 100644 index 000000000..f2ae58993 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SoundEventTemplate.java @@ -0,0 +1,29 @@ +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.sound.SoundEvent; +import net.minecraft.util.Identifier; + + +public class SoundEventTemplate implements ObjectTemplate { + @Value("id") + @Default + private Identifier id = null; + + @Value("distance-to-travel") + @Default + private Float distanceToTravel = null; + + @Override + public SoundEvent get() { + if (id == null) { + return null; + } else if (distanceToTravel == null) { + return new SoundEvent(id); + } else { + return new SoundEvent(id, distanceToTravel); + } + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnCostConfig.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnCostConfig.java new file mode 100644 index 000000000..3af1ff1b1 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnCostConfig.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 net.minecraft.entity.EntityType; + + +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/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 new file mode 100644 index 000000000..7c203b62e --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnEntryTemplate.java @@ -0,0 +1,31 @@ +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.EntityType; +import net.minecraft.world.biome.SpawnSettings.SpawnEntry; + + +public class SpawnEntryTemplate 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; + + @Override + public SpawnEntry get() { + return new SpawnEntry(type, weight, minGroupSize, maxGroupSize); + } +} 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 new file mode 100644 index 000000000..e6a9143d1 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnGroupTemplate.java @@ -0,0 +1,18 @@ +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 new file mode 100644 index 000000000..25fae1481 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnSettingsTemplate.java @@ -0,0 +1,39 @@ +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.world.biome.SpawnSettings; + +import java.util.List; + + +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 SpawnSettings get() { + SpawnSettings.Builder builder = new SpawnSettings.Builder(); + for (SpawnTypeConfig spawn : spawns) { + builder.spawn(spawn.getGroup(), spawn.getEntry()); + } + for (SpawnCostConfig cost: costs) { + builder.spawnCost(cost.getType(), cost.getMass(), cost.getGravity()); + } + if (probability != null) { + builder.creatureSpawnProbability(probability); + } + + return builder.build(); + } +} 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 new file mode 100644 index 000000000..0f1eff6b5 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/SpawnTypeConfig.java @@ -0,0 +1,31 @@ +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.SpawnEntry; + + +public class SpawnTypeConfig implements ObjectTemplate { + @Value("group") + @Default + private SpawnGroup group = null; + + @Value("entry") + @Default + private SpawnEntry entry = null; + + public SpawnGroup getGroup() { + return group; + } + + public SpawnEntry getEntry() { + return entry; + } + + @Override + public SpawnTypeConfig get() { + return this; + } +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaBiomeProperties.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaBiomeProperties.java index b37266230..e44e4b977 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaBiomeProperties.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VanillaBiomeProperties.java @@ -3,8 +3,15 @@ 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 net.minecraft.sound.BiomeAdditionsSound; +import net.minecraft.sound.BiomeMoodSound; +import net.minecraft.sound.MusicSound; +import net.minecraft.sound.SoundEvent; import net.minecraft.world.biome.Biome.Precipitation; +import net.minecraft.world.biome.Biome.TemperatureModifier; import net.minecraft.world.biome.BiomeEffects.GrassColorModifier; +import net.minecraft.world.biome.BiomeParticleConfig; +import net.minecraft.world.biome.SpawnSettings; import com.dfsek.terra.api.properties.Properties; @@ -36,23 +43,55 @@ public class VanillaBiomeProperties implements ConfigTemplate, Properties { @Value("colors.modifier") @Default - private GrassColorModifier modifier = null; + private GrassColorModifier grassColorModifier = null; + + @Value("particles") + @Default + private BiomeParticleConfig particleConfig = null; @Value("climate.precipitation") @Default private Precipitation precipitation = null; - public Integer getFogColor() { - return fogColor; - } + @Value("climate.temperature") + @Default + private Float temperature = null; - public Integer getFoliageColor() { - return foliageColor; - } + @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 BiomeMoodSound moodSound = null; + + @Value("sound.additions-sound") + @Default + private BiomeAdditionsSound additionsSound = null; + + @Value("sound.music") + @Default + private MusicSound music = null; + + @Value("spawning") + @Default + private SpawnSettings spawnSettings = null; public Integer getGrassColor() { return grassColor; } + + public Integer getFogColor() { + return fogColor; + } public Integer getWaterColor() { return waterColor; @@ -62,15 +101,55 @@ public class VanillaBiomeProperties implements ConfigTemplate, Properties { return waterFogColor; } + public Integer getFoliageColor() { + return foliageColor; + } + public Integer getSkyColor() { return skyColor; } + public GrassColorModifier getGrassColorModifier() { + return grassColorModifier; + } + + public BiomeParticleConfig getParticleConfig() { + return particleConfig; + } + public Precipitation getPrecipitation() { return precipitation; } - public GrassColorModifier getModifier() { - return modifier; + public Float getTemperature() { + return temperature; + } + + public TemperatureModifier getTemperatureModifier() { + return temperatureModifier; + } + + public Float getDownfall() { + return downfall; + } + + public SoundEvent getLoopSound() { + return loopSound; + } + + public BiomeMoodSound getMoodSound() { + return moodSound; + } + + public BiomeAdditionsSound getAdditionsSound() { + return additionsSound; + } + + public MusicSound getMusic() { + return music; + } + + public SpawnSettings getSpawnSettings() { + return spawnSettings; } } 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 643ced594..36f774297 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,8 +1,5 @@ package com.dfsek.terra.mod.data; -import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; -import com.dfsek.terra.mod.generation.TerraBiomeSource; - import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.util.dynamic.RegistryOps; @@ -12,6 +9,8 @@ import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.mod.CommonPlatform; +import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; +import com.dfsek.terra.mod.generation.TerraBiomeSource; public final class Codecs { 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 1b8af7852..5742120d6 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,8 +17,6 @@ package com.dfsek.terra.mod.generation; -import com.dfsek.terra.mod.mixin.access.StructureAccessorAccessor; - import com.mojang.serialization.Codec; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -65,6 +63,7 @@ import com.dfsek.terra.api.world.chunk.generation.util.GeneratorWrapper; import com.dfsek.terra.api.world.info.WorldProperties; import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions; import com.dfsek.terra.mod.data.Codecs; +import com.dfsek.terra.mod.mixin.access.StructureAccessorAccessor; import com.dfsek.terra.mod.util.MinecraftAdapter; 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 7f1f1d6dd..5730cee80 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 @@ -17,13 +17,6 @@ package com.dfsek.terra.mod.generation; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.mod.data.Codecs; -import com.dfsek.terra.mod.config.ProtoPlatformBiome; - -import com.dfsek.terra.mod.util.SeedHack; - import com.mojang.serialization.Codec; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryEntry; @@ -34,6 +27,12 @@ import org.slf4j.LoggerFactory; import java.util.stream.StreamSupport; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.mod.config.ProtoPlatformBiome; +import com.dfsek.terra.mod.data.Codecs; +import com.dfsek.terra.mod.util.SeedHack; + public class TerraBiomeSource extends BiomeSource { diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/access/BiomeAccessor.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/access/BiomeAccessor.java new file mode 100644 index 000000000..c51029682 --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/access/BiomeAccessor.java @@ -0,0 +1,12 @@ +package com.dfsek.terra.mod.mixin.access; + +import net.minecraft.world.biome.Biome; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + + +@Mixin(Biome.class) +public interface BiomeAccessor { + @Accessor("weather") + Biome.Weather getWeather(); +} 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 index f0eb245b8..12d6a0732 100644 --- 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 @@ -1,7 +1,5 @@ package com.dfsek.terra.mod.mixin.fix; -import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; - import net.minecraft.world.gen.structure.NetherFossilStructure; import net.minecraft.world.gen.structure.Structure.Context; import net.minecraft.world.gen.structure.Structure.StructurePosition; @@ -12,6 +10,8 @@ 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. diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/compat/GenerationSettingsFloraFeaturesMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/compat/GenerationSettingsFloraFeaturesMixin.java index df71e733f..c254445d1 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/compat/GenerationSettingsFloraFeaturesMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/compat/GenerationSettingsFloraFeaturesMixin.java @@ -1,7 +1,5 @@ package com.dfsek.terra.mod.mixin.implementations.compat; -import com.dfsek.terra.mod.mixin_ifaces.FloraFeatureHolder; - import net.minecraft.world.biome.GenerationSettings; import net.minecraft.world.gen.feature.ConfiguredFeature; import org.spongepowered.asm.mixin.Implements; @@ -13,6 +11,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.List; +import com.dfsek.terra.mod.mixin_ifaces.FloraFeatureHolder; + @Mixin(GenerationSettings.class) @Implements(@Interface(iface = FloraFeatureHolder.class, prefix = "terra$")) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/state/BlockStateMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/state/BlockStateMixin.java index 86272efd9..636a3f721 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/state/BlockStateMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/state/BlockStateMixin.java @@ -1,8 +1,6 @@ package com.dfsek.terra.mod.mixin.implementations.terra.block.state; -import com.dfsek.terra.mod.mixin.access.StateAccessor; - import com.google.common.collect.ImmutableMap; import com.mojang.serialization.MapCodec; import net.minecraft.block.AbstractBlock.AbstractBlockState; @@ -20,6 +18,7 @@ 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; +import com.dfsek.terra.mod.mixin.access.StateAccessor; @Mixin(AbstractBlockState.class) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/data/ProtoChunkMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/data/ProtoChunkMixin.java index f90e5a3b3..25c8f196f 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/data/ProtoChunkMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/data/ProtoChunkMixin.java @@ -17,9 +17,6 @@ package com.dfsek.terra.mod.mixin.implementations.terra.chunk.data; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.world.chunk.generation.ProtoChunk; - import net.minecraft.util.math.BlockPos; import net.minecraft.world.HeightLimitView; import org.jetbrains.annotations.NotNull; @@ -28,6 +25,9 @@ import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.world.chunk.generation.ProtoChunk; + @Mixin(net.minecraft.world.chunk.ProtoChunk.class) @Implements(@Interface(iface = ProtoChunk.class, prefix = "terra$")) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ChunkRegionMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ChunkRegionMixin.java index c17a8c1ee..64ed28314 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ChunkRegionMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ChunkRegionMixin.java @@ -17,7 +17,6 @@ package com.dfsek.terra.mod.mixin.implementations.terra.world; -import com.dfsek.terra.mod.util.MinecraftUtil; import net.minecraft.block.FluidBlock; import net.minecraft.fluid.Fluid; import net.minecraft.util.math.BlockPos; @@ -49,6 +48,7 @@ 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.mod.generation.MinecraftChunkGeneratorWrapper; +import com.dfsek.terra.mod.util.MinecraftUtil; @Mixin(ChunkRegion.class) diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ServerWorldMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ServerWorldMixin.java index f219db0a1..74af91dbc 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ServerWorldMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/world/ServerWorldMixin.java @@ -17,7 +17,6 @@ package com.dfsek.terra.mod.mixin.implementations.terra.world; -import com.dfsek.terra.mod.util.MinecraftUtil; import net.minecraft.util.math.BlockPos; import net.minecraft.world.WorldAccess; import org.spongepowered.asm.mixin.Implements; @@ -36,6 +35,7 @@ import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; import com.dfsek.terra.mod.generation.TerraBiomeSource; +import com.dfsek.terra.mod.util.MinecraftUtil; @Mixin(net.minecraft.server.world.ServerWorld.class) 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 d18fbf8d2..a9ecb9354 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 @@ -1,8 +1,5 @@ package com.dfsek.terra.mod.mixin.lifecycle; -import com.dfsek.terra.mod.util.TagUtil; -import com.dfsek.terra.mod.util.MinecraftUtil; - import net.minecraft.server.DataPackContents; import net.minecraft.util.registry.DynamicRegistryManager; import net.minecraft.util.registry.Registry; @@ -12,6 +9,9 @@ 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; + @Mixin(DataPackContents.class) public class DataPackContentsMixin { 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 80178c3be..1fa62bcae 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,14 +1,5 @@ package com.dfsek.terra.mod.util; -import com.dfsek.terra.api.block.entity.BlockEntity; -import com.dfsek.terra.api.block.entity.Container; -import com.dfsek.terra.api.block.entity.MobSpawner; -import com.dfsek.terra.api.block.entity.Sign; - -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.mod.config.VanillaBiomeProperties; -import com.dfsek.terra.mod.mixin_ifaces.FloraFeatureHolder; - import net.minecraft.block.entity.LootableContainerBlockEntity; import net.minecraft.block.entity.MobSpawnerBlockEntity; import net.minecraft.block.entity.SignBlockEntity; @@ -33,6 +24,15 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; +import com.dfsek.terra.api.block.entity.BlockEntity; +import com.dfsek.terra.api.block.entity.Container; +import com.dfsek.terra.api.block.entity.MobSpawner; +import com.dfsek.terra.api.block.entity.Sign; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.mod.config.VanillaBiomeProperties; +import com.dfsek.terra.mod.mixin.access.BiomeAccessor; +import com.dfsek.terra.mod.mixin_ifaces.FloraFeatureHolder; + public final class MinecraftUtil { public static final Logger logger = LoggerFactory.getLogger(MinecraftUtil.class); @@ -91,58 +91,74 @@ public final class MinecraftUtil { public static Biome createBiome(com.dfsek.terra.api.world.biome.Biome biome, Biome vanilla) { GenerationSettings.Builder generationSettings = new GenerationSettings.Builder(); - + BiomeEffects.Builder effects = new BiomeEffects.Builder(); - - Biome.Builder builder = new Builder(); - - if(biome.getContext().has(VanillaBiomeProperties.class)) { - VanillaBiomeProperties vanillaBiomeProperties = biome.getContext().get(VanillaBiomeProperties.class); - - effects.waterColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterColor(), vanilla.getWaterColor())) - .waterFogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterFogColor(), vanilla.getWaterFogColor())) - .fogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getFogColor(), vanilla.getFogColor())) - .skyColor(Objects.requireNonNullElse(vanillaBiomeProperties.getSkyColor(), vanilla.getSkyColor())) - .grassColorModifier( - Objects.requireNonNullElse(vanillaBiomeProperties.getModifier(), vanilla.getEffects().getGrassColorModifier())); - - - if(vanillaBiomeProperties.getGrassColor() == null) { - vanilla.getEffects().getGrassColor().ifPresent(effects::grassColor); - } else { - effects.grassColor(vanillaBiomeProperties.getGrassColor()); - } - - if(vanillaBiomeProperties.getFoliageColor() == null) { - vanilla.getEffects().getFoliageColor().ifPresent(effects::foliageColor); - } else { - effects.foliageColor(vanillaBiomeProperties.getFoliageColor()); - } - - builder.precipitation(Objects.requireNonNullElse(vanillaBiomeProperties.getPrecipitation(), vanilla.getPrecipitation())); - - } else { - effects.waterColor(vanilla.getWaterColor()) - .waterFogColor(vanilla.getWaterFogColor()) - .fogColor(vanilla.getFogColor()) - .skyColor(vanilla.getSkyColor()); + + net.minecraft.world.biome.Biome.Builder builder = new Builder(); + + VanillaBiomeProperties vanillaBiomeProperties = biome.getContext().get(VanillaBiomeProperties.class); + + effects.waterColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterColor(), vanilla.getWaterColor())) + .waterFogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterFogColor(), vanilla.getWaterFogColor())) + .fogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getFogColor(), vanilla.getFogColor())) + .skyColor(Objects.requireNonNullElse(vanillaBiomeProperties.getSkyColor(), vanilla.getSkyColor())) + .grassColorModifier( + Objects.requireNonNullElse(vanillaBiomeProperties.getGrassColorModifier(), vanilla.getEffects().getGrassColorModifier())); + + if (vanillaBiomeProperties.getFoliageColor() == null) { vanilla.getEffects().getFoliageColor().ifPresent(effects::foliageColor); - vanilla.getEffects().getGrassColor().ifPresent(effects::grassColor); - - builder.precipitation(vanilla.getPrecipitation()); + } else { + effects.foliageColor(vanillaBiomeProperties.getFoliageColor()); } - vanilla.getLoopSound().ifPresent(effects::loopSound); - vanilla.getAdditionsSound().ifPresent(effects::additionsSound); - vanilla.getMoodSound().ifPresent(effects::moodSound); - vanilla.getMusic().ifPresent(effects::music); - vanilla.getParticleConfig().ifPresent(effects::particleConfig); + if (vanillaBiomeProperties.getGrassColor() == null) { + vanilla.getEffects().getGrassColor().ifPresent(effects::grassColor); + } else { + effects.grassColor(vanillaBiomeProperties.getGrassColor()); + } + + if (vanillaBiomeProperties.getParticleConfig() == null) { + vanilla.getEffects().getParticleConfig().ifPresent(effects::particleConfig); + } else { + effects.particleConfig(vanillaBiomeProperties.getParticleConfig()); + } + + if (vanillaBiomeProperties.getLoopSound() == null) { + vanilla.getEffects().getLoopSound().ifPresent(effects::loopSound); + } else { + effects.loopSound(vanillaBiomeProperties.getLoopSound()); + } + + if (vanillaBiomeProperties.getMoodSound() == null) { + vanilla.getEffects().getMoodSound().ifPresent(effects::moodSound); + } else { + effects.moodSound(vanillaBiomeProperties.getMoodSound()); + } + + if (vanillaBiomeProperties.getAdditionsSound() == null) { + vanilla.getEffects().getAdditionsSound().ifPresent(effects::additionsSound); + } else { + effects.additionsSound(vanillaBiomeProperties.getAdditionsSound()); + } + + if (vanillaBiomeProperties.getMusic() == null) { + vanilla.getEffects().getMusic().ifPresent(effects::music); + } else { + effects.music(vanillaBiomeProperties.getMusic()); + } + + builder.precipitation(Objects.requireNonNullElse(vanillaBiomeProperties.getPrecipitation(), vanilla.getPrecipitation())); + + builder.temperature(Objects.requireNonNullElse(vanillaBiomeProperties.getTemperature(), vanilla.getTemperature())); + + builder.downfall(Objects.requireNonNullElse(vanillaBiomeProperties.getDownfall(), vanilla.getDownfall())); + + builder.temperatureModifier(Objects.requireNonNullElse(vanillaBiomeProperties.getTemperatureModifier(), ((BiomeAccessor)((Object)vanilla)).getWeather().temperatureModifier())); + + builder.spawnSettings(Objects.requireNonNullElse(vanillaBiomeProperties.getSpawnSettings(), vanilla.getSpawnSettings())); return builder - .temperature(vanilla.getTemperature()) - .downfall(vanilla.getDownfall()) .effects(effects.build()) - .spawnSettings(vanilla.getSpawnSettings()) .generationSettings(generationSettings.build()) .build(); } 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 7b3e57ca5..df1641f39 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,11 +1,5 @@ package com.dfsek.terra.mod.util; -import com.dfsek.terra.api.config.ConfigPack; - -import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; -import com.dfsek.terra.mod.generation.TerraBiomeSource; - import net.minecraft.structure.StructureSet; import net.minecraft.util.Identifier; import net.minecraft.util.math.noise.DoublePerlinNoiseSampler.NoiseParameters; @@ -30,6 +24,11 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.util.generic.pair.Pair; +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); diff --git a/platforms/mixin-common/src/main/resources/fabric.mod.json b/platforms/mixin-common/src/main/resources/fabric.mod.json deleted file mode 100644 index 2f4b9b0de..000000000 --- a/platforms/mixin-common/src/main/resources/fabric.mod.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "schemaVersion": 1, - "id": "terra-common", - "version": "1.0.0", - "mixins": [ - "terra.common.mixins.json" - ] -} \ No newline at end of file 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 b084bee6f..b2b28d2e0 100644 --- a/platforms/mixin-common/src/main/resources/terra.common.mixins.json +++ b/platforms/mixin-common/src/main/resources/terra.common.mixins.json @@ -4,6 +4,7 @@ "package": "com.dfsek.terra.mod.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "access.BiomeAccessor", "access.MobSpawnerLogicAccessor", "access.StateAccessor", "access.StructureAccessorAccessor", @@ -42,6 +43,5 @@ ], "injectors": { "defaultRequire": 1 - }, - "refmap": "terra-common-refmap.json" + } } \ No newline at end of file diff --git a/platforms/mixin-common/terra.accesswidener b/platforms/mixin-common/terra.accesswidener new file mode 100644 index 000000000..4f59bb962 --- /dev/null +++ b/platforms/mixin-common/terra.accesswidener @@ -0,0 +1,2 @@ +accessWidener v1 named +accessible class net/minecraft/world/biome/Biome$Weather \ No newline at end of file diff --git a/platforms/sponge/build.gradle.kts b/platforms/sponge/build.gradle.kts.disabled similarity index 100% rename from platforms/sponge/build.gradle.kts rename to platforms/sponge/build.gradle.kts.disabled