From 9292d3de171464da7327c6d1d3e90ae2ff0375be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Thu, 26 Oct 2023 10:25:39 -0600 Subject: [PATCH 1/4] Remove FastMath hotspot has intrinsics for almost everything we use it for --- buildSrc/src/main/kotlin/Versions.kt | 1 - .../biome-provider-image-v2/build.gradle.kts | 8 +- .../biome/image/v2/ImageBiomeProvider.java | 2 +- .../v2/config/ImageProviderTemplate.java | 2 +- .../biome-provider-image/build.gradle.kts | 8 +- .../biome/image/ImageBiomeProvider.java | 10 +- .../build.gradle.kts | 7 -- .../biome/pipeline/v2/BiomePipelineAddon.java | 6 +- .../pipeline/v2/PipelineBiomeProvider.java | 15 ++- .../biome/pipeline/v2/api/Expander.java | 2 +- .../addons/biome/pipeline/v2/api/Stage.java | 2 +- .../v2/config/BiomePipelineTemplate.java | 2 +- .../stage/expander/ExpanderStageTemplate.java | 2 +- .../mutator/BorderListStageTemplate.java | 2 +- .../stage/mutator/BorderStageTemplate.java | 2 +- .../mutator/ReplaceListStageTemplate.java | 2 +- .../stage/mutator/ReplaceStageTemplate.java | 2 +- .../stage/mutator/SmoothStageTemplate.java | 2 +- .../pipeline/v2/pipeline/BiomeChunkImpl.java | 7 +- .../pipeline/v2/source/SingleSource.java | 2 +- .../biome-provider-pipeline/build.gradle.kts | 7 -- .../biome/pipeline/BiomePipelineProvider.java | 5 +- .../chunk-generator-noise-3d/build.gradle.kts | 7 -- .../config/palette/BiomePaletteTemplate.java | 2 +- .../generation/NoiseChunkGenerator3D.java | 11 +-- .../generation/math/PaletteUtil.java | 2 +- .../math/interpolation/ChunkInterpolator.java | 6 +- .../LazilyEvaluatedInterpolator.java | 10 +- .../generation/math/samplers/Sampler3D.java | 6 +- .../math/samplers/SamplerProvider.java | 5 +- .../chunkgenerator/palette/PaletteHolder.java | 8 +- .../config-distributors/build.gradle.kts | 7 -- .../distributors/PaddedGridDistributor.java | 17 +--- common/addons/config-flora/build.gradle.kts | 6 -- .../addons/flora/flora/gen/TerraFlora.java | 8 +- .../addons/config-locators/build.gradle.kts | 9 +- .../locator/locators/PatternLocator.java | 6 +- .../locator/locators/SurfaceLocator.java | 6 +- .../locator/patterns/MatchPattern.java | 10 +- .../config-noise-function/build.gradle.kts | 8 -- .../CubicSplineNormalizerTemplate.java | 4 +- .../ExpressionNormalizerTemplate.java | 8 +- .../terra/addons/noise/math/CubicSpline.java | 8 +- .../noise/normalizer/ClampNormalizer.java | 4 +- .../normalizer/ExpressionNormalizer.java | 4 +- .../noise/normalizer/NormalNormalizer.java | 6 +- .../normalizer/PosterizationNormalizer.java | 4 +- .../addons/noise/paralithic/FunctionUtil.java | 6 +- .../addons/noise/samplers/ImageSampler.java | 6 +- .../noise/samplers/arithmetic/MaxSampler.java | 4 +- .../noise/samplers/arithmetic/MinSampler.java | 4 +- .../noise/samplers/noise/CellularSampler.java | 36 ++++--- .../noise/samplers/noise/DistanceSampler.java | 16 +-- .../samplers/noise/GaborNoiseSampler.java | 19 ++-- .../noise/samplers/noise/NoiseFunction.java | 87 +--------------- .../noise/fractal/BrownianMotionSampler.java | 5 +- .../noise/fractal/FractalNoiseFunction.java | 2 +- .../noise/fractal/PingPongSampler.java | 5 +- .../noise/fractal/RidgedFractalSampler.java | 9 +- .../random/PositiveWhiteNoiseSampler.java | 5 +- .../noise/random/WhiteNoiseSampler.java | 7 +- .../noise/simplex/OpenSimplex2SSampler.java | 10 +- .../noise/simplex/OpenSimplex2Sampler.java | 10 +- .../samplers/noise/simplex/PerlinSampler.java | 43 ++++---- .../noise/simplex/SimplexSampler.java | 10 +- .../noise/value/ValueCubicSampler.java | 67 +++++++------ .../samplers/noise/value/ValueSampler.java | 43 ++++---- common/addons/config-ore-v2/build.gradle.kts | 8 +- .../terra/addons/ore/v2/ores/VanillaOre.java | 33 +++---- common/addons/config-ore/build.gradle.kts | 5 - .../terra/addons/ore/ores/VanillaOre.java | 27 +++-- .../addons/config-structure/build.gradle.kts | 7 -- .../structure/structures/loot/Entry.java | 7 +- .../structure/structures/loot/Pool.java | 11 +-- .../loot/functions/EnchantFunction.java | 7 +- common/addons/library-image/build.gradle.kts | 4 +- .../terra/addons/image/ImageLibraryAddon.java | 10 +- .../image/SingleImageColorSampler.java | 2 +- .../image/TileImageColorSampler.java | 6 +- .../mutate/RotateColorSampler.java | 9 +- .../image/ImageColorSamplerTemplate.java | 2 +- .../image/operator/DistanceTransform.java | 16 ++- .../terra/addons/image/util/ColorUtil.java | 9 +- .../build.gradle.kts | 7 -- .../addons/terrascript/parser/lang/Scope.java | 8 +- .../statements/EqualsStatement.java | 4 +- .../statements/NotEqualsStatement.java | 4 +- .../terrascript/script/StructureScript.java | 34 +++---- .../script/functions/BiomeFunction.java | 6 +- .../script/functions/BlockFunction.java | 5 +- .../script/functions/CheckBlockFunction.java | 6 +- .../script/functions/GetMarkFunction.java | 6 +- .../script/functions/LootFunction.java | 5 +- .../script/functions/PullFunction.java | 6 +- .../script/functions/SetMarkFunction.java | 8 +- .../script/functions/StateFunction.java | 5 +- .../script/functions/StructureFunction.java | 9 +- .../build.gradle.kts | 9 +- .../terrascript/check/CheckFunction.java | 10 +- common/api/build.gradle.kts | 2 +- .../dfsek/terra/api/util/ConstantRange.java | 3 +- .../com/dfsek/terra/api/util/MathUtil.java | 98 +++++++++++++++++-- .../com/dfsek/terra/api/util/Rotation.java | 5 +- .../collection/ProbabilityCollection.java | 8 +- .../dfsek/terra/api/util/vector/Vector2.java | 12 +-- .../dfsek/terra/api/util/vector/Vector3.java | 41 ++++---- common/implementation/base/build.gradle.kts | 2 +- .../terra/config/loaders/RangeLoader.java | 5 +- .../BukkitChunkGeneratorWrapper.java | 3 - .../terra/bukkit/world/BukkitProtoWorld.java | 3 +- .../v1_18_R2/NMSChunkGeneratorDelegate.java | 5 +- .../v1_19_R1/NMSChunkGeneratorDelegate.java | 17 ++-- .../bukkit/nms/v1_19_R2/NMSBiomeInjector.java | 2 - .../terra/bukkit/nms/v1_19_R2/Reflection.java | 2 - .../bukkit/nms/v1_19_R2/RegistryFetcher.java | 1 - .../bukkit/nms/v1_19_R3/NMSBiomeInjector.java | 6 -- .../bukkit/nms/v1_19_R3/NMSBiomeProvider.java | 3 +- .../terra/bukkit/nms/v1_19_R3/Reflection.java | 2 - .../bukkit/nms/v1_19_R3/RegistryFetcher.java | 1 - .../bukkit/nms/v1_20_R1/NMSBiomeInjector.java | 6 -- .../bukkit/nms/v1_20_R1/NMSBiomeProvider.java | 3 +- platforms/cli/build.gradle.kts | 2 +- .../com/dfsek/terra/cli/world/CLIWorld.java | 13 ++- .../dfsek/terra/forge/ForgeEntryPoint.java | 1 - .../com/dfsek/terra/forge/ForgePlatform.java | 3 - .../mixin/lifecycle/NoiseConfigMixin.java | 9 +- .../java/com/dfsek/terra/mod/ModPlatform.java | 6 -- .../terra/mod/config/EntityTypeTemplate.java | 1 - .../terra/mod/config/ProtoPlatformBiome.java | 2 +- .../mod/config/VanillaBiomeProperties.java | 1 - .../mod/config/VillagerTypeTemplate.java | 1 - .../java/com/dfsek/terra/mod/data/Codecs.java | 2 - .../MinecraftChunkGeneratorWrapper.java | 6 +- .../mod/generation/TerraBiomeSource.java | 1 - .../terra/mod/handle/MinecraftItemHandle.java | 2 +- .../mod/handle/MinecraftWorldHandle.java | 1 - .../entity/MobSpawnerBlockEntityMixin.java | 1 - .../block/entity/SignBlockEntityMixin.java | 1 - .../terra/block/state/BlockStateMixin.java | 1 - .../terra/chunk/WorldChunkMixin.java | 1 - .../inventory/meta/EnchantmentMixin.java | 2 - .../inventory/meta/ItemStackMetaMixin.java | 1 - .../lifecycle/DataPackContentsMixin.java | 1 - .../dfsek/terra/mod/util/MinecraftUtil.java | 3 +- .../com/dfsek/terra/mod/util/TagUtil.java | 2 +- .../terra/lifecycle/LifecycleEntryPoint.java | 10 +- .../terra/lifecycle/LifecyclePlatform.java | 7 +- .../lifecycle/mixin/NoiseConfigMixin.java | 1 - .../terra/lifecycle/mixin/RegistryMixin.java | 1 - .../lifecycle/mixin/SimpleRegistryMixin.java | 5 +- .../mixin/lifecycle/SaveLoadingMixin.java | 6 +- .../dfsek/terra/lifecycle/util/BiomeUtil.java | 3 +- .../terra/lifecycle/util/RegistryUtil.java | 2 +- 153 files changed, 517 insertions(+), 771 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 6a56ded4c..3e45cc7d7 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -12,7 +12,6 @@ object Versions { object Internal { const val shadow = "8.1.1" const val apacheText = "1.10.0" - const val jafama = "2.3.2" const val apacheIO = "2.14.0" const val guava = "32.1.3-jre" const val asm = "9.5" diff --git a/common/addons/biome-provider-image-v2/build.gradle.kts b/common/addons/biome-provider-image-v2/build.gradle.kts index 3819ba485..38f4801d2 100644 --- a/common/addons/biome-provider-image-v2/build.gradle.kts +++ b/common/addons/biome-provider-image-v2/build.gradle.kts @@ -3,10 +3,6 @@ version = version("1.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) compileOnlyApi(project(":common:addons:library-image")) - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) -} -tasks.named("shadowJar") { - relocate("net.jafama", "com.dfsek.terra.addons.biome.image.lib.jafama") -} \ No newline at end of file + +} diff --git a/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java b/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java index 7a37664a1..8b5ec2e5b 100644 --- a/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/ImageBiomeProvider.java @@ -9,8 +9,8 @@ package com.dfsek.terra.addons.biome.image.v2; import java.util.Optional; -import com.dfsek.terra.addons.image.converter.ColorConverter; import com.dfsek.terra.addons.image.colorsampler.ColorSampler; +import com.dfsek.terra.addons.image.converter.ColorConverter; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/ImageProviderTemplate.java b/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/ImageProviderTemplate.java index 8d9955ad4..80f7f87e1 100644 --- a/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/ImageProviderTemplate.java +++ b/common/addons/biome-provider-image-v2/src/main/java/com/dfsek/terra/addons/biome/image/v2/config/ImageProviderTemplate.java @@ -13,8 +13,8 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.terra.addons.biome.image.v2.ImageBiomeProvider; -import com.dfsek.terra.addons.image.converter.ColorConverter; import com.dfsek.terra.addons.image.colorsampler.ColorSampler; +import com.dfsek.terra.addons.image.converter.ColorConverter; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts index 15145b578..f1755a0f0 100644 --- a/common/addons/biome-provider-image/build.gradle.kts +++ b/common/addons/biome-provider-image/build.gradle.kts @@ -2,10 +2,6 @@ version = version("1.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) -} -tasks.named("shadowJar") { - relocate("net.jafama", "com.dfsek.terra.addons.biome.image.lib.jafama") -} \ No newline at end of file + +} diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index aa2f647bb..3af73c043 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.biome.image; -import net.jafama.FastMath; - import java.awt.Color; import java.awt.image.BufferedImage; import java.util.HashMap; @@ -34,7 +32,7 @@ public class ImageBiomeProvider implements BiomeProvider { } private static int distance(Color a, Color b) { - return FastMath.abs(a.getRed() - b.getRed()) + FastMath.abs(a.getGreen() - b.getGreen()) + FastMath.abs(a.getBlue() - b.getBlue()); + return Math.abs(a.getRed() - b.getRed()) + Math.abs(a.getGreen() - b.getGreen()) + Math.abs(a.getBlue() - b.getBlue()); } @Override @@ -70,14 +68,14 @@ public class ImageBiomeProvider implements BiomeProvider { CENTER { @Override public Color getColor(BufferedImage image, int x, int z) { - return new Color(image.getRGB(FastMath.floorMod(x - image.getWidth() / 2, image.getWidth()), - FastMath.floorMod(z - image.getHeight() / 2, image.getHeight()))); + return new Color(image.getRGB(Math.floorMod(x - image.getWidth() / 2, image.getWidth()), + Math.floorMod(z - image.getHeight() / 2, image.getHeight()))); } }, NONE { @Override public Color getColor(BufferedImage image, int x, int z) { - return new Color(image.getRGB(FastMath.floorMod(x, image.getWidth()), FastMath.floorMod(z, image.getHeight()))); + return new Color(image.getRGB(Math.floorMod(x, image.getWidth()), Math.floorMod(z, image.getHeight()))); } }; diff --git a/common/addons/biome-provider-pipeline-v2/build.gradle.kts b/common/addons/biome-provider-pipeline-v2/build.gradle.kts index 8ca2e3b81..d3eaff9fe 100644 --- a/common/addons/biome-provider-pipeline-v2/build.gradle.kts +++ b/common/addons/biome-provider-pipeline-v2/build.gradle.kts @@ -2,11 +2,4 @@ version = version("1.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) - - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) -} - -tasks.named("shadowJar") { - relocate("net.jafama", "com.dfsek.terra.addons.biome.pipeline.lib.jafama") } \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java index 66c1a7908..3add75092 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/BiomePipelineAddon.java @@ -11,6 +11,9 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.function.Supplier; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.v2.config.BiomePipelineTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.config.PipelineBiomeLoader; import com.dfsek.terra.addons.biome.pipeline.v2.config.source.SamplerSourceTemplate; @@ -20,9 +23,6 @@ import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.BorderStage import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.ReplaceListStageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.ReplaceStageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator.SmoothStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java index 1a34d06e0..08d321abd 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/PipelineBiomeProvider.java @@ -1,13 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.v2; -import com.dfsek.terra.addons.biome.pipeline.v2.api.BiomeChunk; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Pipeline; -import com.dfsek.terra.addons.biome.pipeline.v2.api.SeededVector; -import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; -import net.jafama.FastMath; import java.util.Comparator; import java.util.HashSet; @@ -15,6 +9,11 @@ import java.util.Optional; import java.util.Set; import java.util.stream.StreamSupport; +import com.dfsek.terra.addons.biome.pipeline.v2.api.BiomeChunk; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Pipeline; +import com.dfsek.terra.addons.biome.pipeline.v2.api.SeededVector; +import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.registry.key.StringIdentifiable; import com.dfsek.terra.api.util.Column; @@ -81,8 +80,8 @@ public class PipelineBiomeProvider implements BiomeProvider { x /= resolution; z /= resolution; - int chunkX = FastMath.floorDiv(x, chunkSize); - int chunkZ = FastMath.floorDiv(z, chunkSize); + int chunkX = Math.floorDiv(x, chunkSize); + int chunkZ = Math.floorDiv(z, chunkSize); int chunkWorldX = chunkX * chunkSize; int chunkWorldZ = chunkZ * chunkSize; diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java index 177e74694..d3fab5263 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Expander.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.v2.api; -import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl.ViewPoint; import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl.ViewPoint; /** diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java index ee2c75e89..b0d33667b 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/api/Stage.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.pipeline.v2.api; -import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl.ViewPoint; import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.BiomeChunkImpl.ViewPoint; public interface Stage { diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java index 776d5cd04..007add35d 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/BiomePipelineTemplate.java @@ -15,9 +15,9 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.List; import com.dfsek.terra.addons.biome.pipeline.v2.PipelineBiomeProvider; -import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.PipelineImpl; import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.pipeline.PipelineImpl; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java index 312880d3b..4478c987e 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/expander/ExpanderStageTemplate.java @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.expander; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.api.Expander; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.stage.expander.FractalExpander; diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java index 57d5c7deb..0d0aa4c2d 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderListStageTemplate.java @@ -11,9 +11,9 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.Map; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.BorderListStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java index 605eeb9f4..e2ffa7872 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/BorderStageTemplate.java @@ -9,9 +9,9 @@ package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.BorderStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java index be9ade61c..179707d21 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceListStageTemplate.java @@ -11,9 +11,9 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import java.util.Map; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.ReplaceListStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java index 6f273a294..397b2c78b 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/ReplaceStageTemplate.java @@ -9,9 +9,9 @@ package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.ReplaceStage; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java index a13e441af..c7a5b4feb 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/config/stage/mutator/SmoothStageTemplate.java @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.biome.pipeline.v2.config.stage.mutator; -import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; +import com.dfsek.terra.addons.biome.pipeline.v2.config.stage.StageTemplate; import com.dfsek.terra.addons.biome.pipeline.v2.stage.mutators.SmoothStage; diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java index cf739fa77..df843ec4b 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/pipeline/BiomeChunkImpl.java @@ -1,13 +1,12 @@ package com.dfsek.terra.addons.biome.pipeline.v2.pipeline; +import java.util.List; + import com.dfsek.terra.addons.biome.pipeline.v2.api.BiomeChunk; import com.dfsek.terra.addons.biome.pipeline.v2.api.Expander; import com.dfsek.terra.addons.biome.pipeline.v2.api.SeededVector; import com.dfsek.terra.addons.biome.pipeline.v2.api.Stage; import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; -import net.jafama.FastMath; - -import java.util.List; public class BiomeChunkImpl implements BiomeChunk { @@ -111,7 +110,7 @@ public class BiomeChunkImpl implements BiomeChunk { // chunk samples points on the same overall grid. // Without this, shared chunk borders (required because of adjacent cell reads) will not be identical // because points would be sampled on grids at different offsets, resulting in artifacts at borders. - return FastMath.ceilToInt((double) finalGridOrigin / initialGridInterval) * initialGridInterval; + return (int) Math.ceil((double) finalGridOrigin / initialGridInterval) * initialGridInterval; } private static int calculateFinalGridOrigin(int totalExpanderCount, List stages) { diff --git a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java index b2c0ee8db..b8beebd10 100644 --- a/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java +++ b/common/addons/biome-provider-pipeline-v2/src/main/java/com/dfsek/terra/addons/biome/pipeline/v2/source/SingleSource.java @@ -3,8 +3,8 @@ package com.dfsek.terra.addons.biome.pipeline.v2.source; import java.util.Collections; import java.util.Set; -import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; import com.dfsek.terra.addons.biome.pipeline.v2.api.Source; +import com.dfsek.terra.addons.biome.pipeline.v2.api.biome.PipelineBiome; public class SingleSource implements Source { diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts index 2629ac476..35e4d7076 100644 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ b/common/addons/biome-provider-pipeline/build.gradle.kts @@ -2,11 +2,4 @@ version = version("1.0.1") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) - - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) } - -tasks.named("shadowJar") { - relocate("net.jafama", "com.dfsek.terra.addons.biome.pipeline.lib.jafama") -} \ No newline at end of file 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 f3f4c3aa9..9222f2128 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 @@ -9,7 +9,6 @@ package com.dfsek.terra.addons.biome.pipeline; 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; @@ -86,8 +85,8 @@ public class BiomePipelineProvider implements BiomeProvider { x /= resolution; z /= resolution; - int fdX = FastMath.floorDiv(x, pipeline.getSize()); - int fdZ = FastMath.floorDiv(z, pipeline.getSize()); + int fdX = Math.floorDiv(x, pipeline.getSize()); + int fdZ = Math.floorDiv(z, pipeline.getSize()); return holderCache.get(new SeededVector(fdX, fdZ, seed)).getBiome(x - fdX * pipeline.getSize(), z - fdZ * pipeline.getSize()).getBiome(); } diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 193c9f00b..b4888dea4 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -2,11 +2,4 @@ version = version("1.2.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) - - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) -} - -tasks.named("shadowJar") { - relocate("net.jafama", "com.dfsek.terra.addons.chunkgenerator.lib.jafama") } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/BiomePaletteTemplate.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/BiomePaletteTemplate.java index f872794c9..533f06928 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/BiomePaletteTemplate.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/config/palette/BiomePaletteTemplate.java @@ -16,8 +16,8 @@ import java.util.Collections; import java.util.List; import java.util.Map; -import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; import com.dfsek.terra.addons.chunkgenerator.palette.BiomePaletteInfo; +import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; import com.dfsek.terra.addons.chunkgenerator.palette.slant.SlantHolder; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; 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 e98dcc316..106aef8fa 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,15 +8,14 @@ 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.palette.BiomePaletteInfo; import com.dfsek.terra.addons.chunkgenerator.generation.math.PaletteUtil; import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.LazilyEvaluatedInterpolator; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.SamplerProvider; +import com.dfsek.terra.addons.chunkgenerator.palette.BiomePaletteInfo; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; @@ -133,8 +132,8 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { BiomePaletteInfo paletteInfo = biome.getContext().get(paletteInfoPropertyKey); - int fdX = FastMath.floorMod(x, 16); - int fdZ = FastMath.floorMod(z, 16); + int fdX = Math.floorMod(x, 16); + int fdZ = Math.floorMod(z, 16); Palette palette = PaletteUtil.getPalette(fdX, y, fdZ, sampler, paletteInfo, 0); double noise = sampler.sample(fdX, y, fdZ); @@ -156,8 +155,8 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { } public double getSlant(int x, int y, int z, WorldProperties world, BiomeProvider biomeProvider) { - int fdX = FastMath.floorMod(x, 16); - int fdZ = FastMath.floorMod(z, 16); + int fdX = Math.floorMod(x, 16); + int fdZ = Math.floorMod(z, 16); return biomeProvider.getBiome(x, y, z, world.getSeed()) .getContext() .get(paletteInfoPropertyKey) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/PaletteUtil.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/PaletteUtil.java index ebeabaf23..ca6798c73 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/PaletteUtil.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/PaletteUtil.java @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math; -import com.dfsek.terra.addons.chunkgenerator.palette.BiomePaletteInfo; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D; +import com.dfsek.terra.addons.chunkgenerator.palette.BiomePaletteInfo; import com.dfsek.terra.addons.chunkgenerator.palette.slant.SlantHolder; import com.dfsek.terra.api.world.chunk.generation.util.Palette; 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 d712bfc60..dc4d6dcc7 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,8 +7,6 @@ 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; @@ -134,7 +132,7 @@ public class ChunkInterpolator { } private static int reRange(int value, int high) { - return FastMath.max(FastMath.min(value, high), 0); + return Math.max(Math.min(value, high), 0); } /** @@ -146,7 +144,7 @@ public class ChunkInterpolator { * @return double - The interpolated noise at the coordinates. */ public double getNoise(double x, double y, double z) { - return interpGrid[reRange(((int) x) / 4, 3)][(FastMath.max(FastMath.min(((int) y), max), min) - min) / 4][reRange(((int) z) / 4, + return interpGrid[reRange(((int) x) / 4, 3)][(Math.max(Math.min(((int) y), max), min) - min) / 4][reRange(((int) z) / 4, 3)].trilerp( (x % 4) / 4, (y % 4) / 4, (z % 4) / 4); } 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 f2a48c50a..d2aa6d13d 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,7 +1,5 @@ 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.world.biome.generation.BiomeProvider; @@ -30,8 +28,8 @@ public class LazilyEvaluatedInterpolator { PropertyKey noisePropertiesKey, int min, int horizontalRes, int verticalRes, long seed) { this.noisePropertiesKey = noisePropertiesKey; - int hSamples = FastMath.ceilToInt(16.0 / horizontalRes); - int vSamples = FastMath.ceilToInt((double) (max - min) / verticalRes); + int hSamples = (int) Math.ceil(16.0 / horizontalRes); + int vSamples = (int) Math.ceil((double) (max - min) / verticalRes); this.zMul = (hSamples + 1); this.yMul = zMul * zMul; samples = new Double[yMul * (vSamples + 1)]; @@ -52,7 +50,7 @@ public class LazilyEvaluatedInterpolator { int xi = ox + chunkX; int zi = oz + chunkZ; - int y = FastMath.min(max, oy); + int y = Math.min(max, oy); sample = biomeProvider .getBiome(xi, y, zi, seed) @@ -93,7 +91,7 @@ public class LazilyEvaluatedInterpolator { return lerp_bottom; } - double yFrac = (double) FastMath.floorMod(y, verticalRes) / verticalRes; + double yFrac = (double) Math.floorMod(y, verticalRes) / verticalRes; double sample_0_1_0 = sample(xIndex, yIndex + 1, zIndex, x, y + verticalRes, z); diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java index 15a480969..a4d6545d6 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.samplers; -import net.jafama.FastMath; - import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties; import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ChunkInterpolator; import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ElevationInterpolator; @@ -28,10 +26,10 @@ public class Sampler3D { } public double sample(double x, double y, double z) { - return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation(FastMath.roundToInt(x), FastMath.roundToInt(z)); + return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation((int) Math.round(x), (int) Math.round(z)); } public double sample(int x, int y, int z) { - return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation(FastMath.roundToInt(x), FastMath.roundToInt(z)); + return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation(x, z); } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/SamplerProvider.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/SamplerProvider.java index ab20614b5..73a29ef52 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/SamplerProvider.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/SamplerProvider.java @@ -19,7 +19,6 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.samplers; import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; -import net.jafama.FastMath; import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties; import com.dfsek.terra.api.Platform; @@ -45,8 +44,8 @@ public class SamplerProvider { } public Sampler3D get(int x, int z, WorldProperties world, BiomeProvider provider) { - int cx = FastMath.floorDiv(x, 16); - int cz = FastMath.floorDiv(z, 16); + int cx = Math.floorDiv(x, 16); + int cz = Math.floorDiv(z, 16); return getChunk(cx, cz, world, provider); } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java index fcd48f4a8..3a3c2089b 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.chunkgenerator.palette; -import net.jafama.FastMath; - import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -55,11 +53,11 @@ public class PaletteHolder { public PaletteHolder build() { - int min = FastMath.min(paletteMap.keySet().stream().min(Integer::compareTo).orElse(0), 0); - int max = FastMath.max(paletteMap.keySet().stream().max(Integer::compareTo).orElse(255), 255); + int min = Math.min(paletteMap.keySet().stream().min(Integer::compareTo).orElse(0), 0); + int max = Math.max(paletteMap.keySet().stream().max(Integer::compareTo).orElse(255), 255); Palette[] palettes = new Palette[paletteMap.lastKey() + 1 - min]; - for(int y = min; y <= FastMath.max(paletteMap.lastKey(), max); y++) { + for(int y = min; y <= Math.max(paletteMap.lastKey(), max); y++) { Palette d = null; for(Entry e : paletteMap.entrySet()) { if(e.getKey() >= y) { diff --git a/common/addons/config-distributors/build.gradle.kts b/common/addons/config-distributors/build.gradle.kts index e38fb40ee..9d0aac37f 100644 --- a/common/addons/config-distributors/build.gradle.kts +++ b/common/addons/config-distributors/build.gradle.kts @@ -2,11 +2,4 @@ version = version("1.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) - - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) } - -tasks.named("shadowJar") { - relocate("net.jafama", "com.dfsek.terra.addons.feature.distributor.lib.jafama") -} \ No newline at end of file diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java index bb380e034..bba9a1a42 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PaddedGridDistributor.java @@ -1,7 +1,5 @@ package com.dfsek.terra.addons.feature.distributor.distributors; -import net.jafama.FastMath; - import java.util.Random; import com.dfsek.terra.api.structure.feature.Distributor; @@ -21,21 +19,12 @@ public class PaddedGridDistributor implements Distributor { this.cellWidth = width + padding; } - private static long murmur64(long h) { - h ^= h >>> 33; - h *= 0xff51afd7ed558ccdL; - h ^= h >>> 33; - h *= 0xc4ceb9fe1a85ec53L; - h ^= h >>> 33; - return h; - } - @Override public boolean matches(int x, int z, long seed) { - int cellX = FastMath.floorDiv(x, cellWidth); - int cellZ = FastMath.floorDiv(z, cellWidth); + int cellX = Math.floorDiv(x, cellWidth); + int cellZ = Math.floorDiv(z, cellWidth); - Random random = new Random((murmur64(MathUtil.squash(cellX, cellZ)) ^ seed) + salt); + Random random = new Random((MathUtil.murmur64(MathUtil.squash(cellX, cellZ)) ^ seed) + salt); int pointX = random.nextInt(width) + cellX * cellWidth; int pointZ = random.nextInt(width) + cellZ * cellWidth; diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts index 9e1e78d1f..9d0aac37f 100644 --- a/common/addons/config-flora/build.gradle.kts +++ b/common/addons/config-flora/build.gradle.kts @@ -2,10 +2,4 @@ version = version("1.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) -} - -tasks.named("shadowJar") { - relocate("net.jafama", "com.dfsek.terra.addons.flora.lib.jafama") } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java index 31fbf1558..b9c345677 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.flora.flora.gen; -import net.jafama.FastMath; - import java.util.ArrayList; import java.util.EnumSet; import java.util.List; @@ -60,7 +58,7 @@ public class TerraFlora implements Structure { } private ProbabilityCollection getStateCollection(int layer) { - return layers.get(FastMath.max(FastMath.min(layer, layers.size() - 1), 0)); + return layers.get(Math.max(Math.min(layer, layers.size() - 1), 0)); } private EnumSet getFaces(Vector3Int b, WritableWorld world) { @@ -82,8 +80,8 @@ public class TerraFlora implements Structure { Direction.class); if(doRotation && faces.size() == 0) return false; // Don't plant if no faces are valid. - for(int i = 0; FastMath.abs(i) < size; i += c) { // Down if ceiling, up if floor - int lvl = (FastMath.abs(i)); + for(int i = 0; Math.abs(i) < size; i += c) { // Down if ceiling, up if floor + int lvl = (Math.abs(i)); BlockState data = getStateCollection((ceiling ? lvl : size - lvl - 1)).get(distribution, location.getX(), location.getY(), location.getZ(), world.getSeed()); if(doRotation) { diff --git a/common/addons/config-locators/build.gradle.kts b/common/addons/config-locators/build.gradle.kts index 50fc70400..47ace7fcc 100644 --- a/common/addons/config-locators/build.gradle.kts +++ b/common/addons/config-locators/build.gradle.kts @@ -2,11 +2,4 @@ version = version("1.1.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) - - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) -} - -tasks.named("shadowJar") { - relocate("net.jafama", "com.dfsek.terra.addons.feature.locator.lib.jafama") -} +} \ No newline at end of file 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 b4ea6b1d8..0d748aea3 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,8 +7,6 @@ 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; @@ -27,8 +25,8 @@ public class PatternLocator implements Locator { @Override public BinaryColumn getSuitableCoordinates(Column column) { - int min = FastMath.max(column.getMinY(), search.getMin()); - int max = FastMath.min(column.getMaxY(), search.getMax()); + int min = Math.max(column.getMinY(), search.getMin()); + int max = Math.min(column.getMaxY(), search.getMax()); if(min >= max) return BinaryColumn.getNull(); return new BinaryColumn(min, max, y -> pattern.matches(y, column)); } 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 9e9b7ef2e..03cccd404 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,8 +7,6 @@ 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; @@ -26,8 +24,8 @@ public class SurfaceLocator implements Locator { @Override public BinaryColumn getSuitableCoordinates(Column column) { BinaryColumnBuilder builder = column.newBinaryColumn(); - int max = FastMath.min(search.getMax(), column.getMaxY()); - int min = FastMath.max(search.getMin(), column.getMinY()); + int max = Math.min(search.getMax(), column.getMaxY()); + int min = Math.max(search.getMin(), column.getMinY()); if(min >= max) return builder.build(); for(int y = min; y < max; y++) { if(column.getBlock(y).isAir() && !column.getBlock(y - 1).isAir()) { 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 e2ca64f69..2f83ab30f 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,8 +7,6 @@ package com.dfsek.terra.addons.feature.locator.patterns; -import net.jafama.FastMath; - import java.util.function.Predicate; import com.dfsek.terra.api.block.state.BlockState; @@ -28,8 +26,8 @@ public class MatchPattern implements Pattern { @Override public boolean matches(int y, Column column) { - int min = FastMath.max(column.getMinY(), range.getMin() + y); - int max = FastMath.min(column.getMaxY(), range.getMax() + y); + int min = Math.max(column.getMinY(), range.getMin() + y); + int max = Math.min(column.getMaxY(), range.getMax() + y); if(max <= min) return false; for(int i = min; i < max; i++) { if(!matches.test(column.getBlock(i))) return false; @@ -39,8 +37,8 @@ public class MatchPattern implements Pattern { @Override public boolean matches(WritableWorld world, int x, int y, int z) { - int min = FastMath.max(world.getMinHeight(), range.getMin() + y); - int max = FastMath.min(world.getMaxHeight(), range.getMax() + y); + int min = Math.max(world.getMinHeight(), range.getMin() + y); + int max = Math.min(world.getMaxHeight(), range.getMax() + y); if(max <= min) return false; for(int i = min; i < max; i++) { if(!matches.test(world.getBlockState(x, i, z))) return false; diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts index 02054f08b..887d158b7 100644 --- a/common/addons/config-noise-function/build.gradle.kts +++ b/common/addons/config-noise-function/build.gradle.kts @@ -5,12 +5,4 @@ version = version("1.1.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) api("com.dfsek", "paralithic", Versions.Libraries.paralithic) - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) } - - -tasks.named("shadowJar") { - relocate("com.dfsek.paralithic", "com.dfsek.terra.addons.noise.lib.paralithic") - relocate("net.jafama", "com.dfsek.terra.addons.noise.lib.jafama") -} \ No newline at end of file diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/CubicSplineNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/CubicSplineNormalizerTemplate.java index 7e70dcc3c..67e537fad 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/CubicSplineNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/CubicSplineNormalizerTemplate.java @@ -2,14 +2,14 @@ package com.dfsek.terra.addons.noise.config.templates.normalizer; import com.dfsek.tectonic.api.config.template.annotations.Value; +import java.util.List; + import com.dfsek.terra.addons.noise.math.CubicSpline; import com.dfsek.terra.addons.noise.math.CubicSpline.Point; import com.dfsek.terra.addons.noise.normalizer.CubicSplineNoiseSampler; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; -import java.util.List; - public class CubicSplineNormalizerTemplate extends NormalizerTemplate { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ExpressionNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ExpressionNormalizerTemplate.java index 97318d388..217147efc 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ExpressionNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ExpressionNormalizerTemplate.java @@ -11,16 +11,16 @@ import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; import com.dfsek.terra.addons.noise.normalizer.ExpressionNormalizer; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.noise.NoiseSampler; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; - import static com.dfsek.terra.addons.noise.paralithic.FunctionUtil.convertFunctionsAndSamplers; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/math/CubicSpline.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/math/CubicSpline.java index ff86bfa10..a1ab99d28 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/math/CubicSpline.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/math/CubicSpline.java @@ -5,6 +5,8 @@ import org.jetbrains.annotations.NotNull; import java.util.Collections; import java.util.List; +import static com.dfsek.terra.api.util.MathUtil.lerp; + public class CubicSpline { @@ -74,11 +76,7 @@ public class CubicSpline { } return left; } - - private static double lerp(double t, double a, double b) { - return a + t * (b - a); - } - + public record Point(double from, double to, double gradient) implements Comparable { @Override diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java index 62836d966..531a11749 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.noise.normalizer; -import net.jafama.FastMath; - import com.dfsek.terra.api.noise.NoiseSampler; @@ -24,6 +22,6 @@ public class ClampNormalizer extends Normalizer { @Override public double normalize(double in) { - return FastMath.max(FastMath.min(in, max), min); + return Math.max(Math.min(in, max), min); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ExpressionNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ExpressionNormalizer.java index 95c607f76..816bba788 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ExpressionNormalizer.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ExpressionNormalizer.java @@ -6,10 +6,10 @@ import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.paralithic.functions.Function; -import com.dfsek.terra.api.noise.NoiseSampler; - import java.util.Map; +import com.dfsek.terra.api.noise.NoiseSampler; + public class ExpressionNormalizer extends Normalizer { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java index 132efd3c2..165157119 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.noise.normalizer; -import net.jafama.FastMath; - import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.util.MathUtil; @@ -41,8 +39,8 @@ public class NormalNormalizer extends Normalizer { end = mid; } } - double left = FastMath.abs(lookup[start] - in); - double right = FastMath.abs(lookup[end] - in); + double left = Math.abs(lookup[start] - in); + double right = Math.abs(lookup[end] - in); double fin; if(left <= right) { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/PosterizationNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/PosterizationNormalizer.java index bdf1c90d9..03d3902d6 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/PosterizationNormalizer.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/PosterizationNormalizer.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.noise.normalizer; -import net.jafama.FastMath; - import com.dfsek.terra.api.noise.NoiseSampler; @@ -22,6 +20,6 @@ public class PosterizationNormalizer extends Normalizer { @Override public double normalize(double in) { - return FastMath.roundToInt((in + 1) / stepSize) * stepSize - 1; + return (int) Math.round((in + 1) / stepSize) * stepSize - 1; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/FunctionUtil.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/FunctionUtil.java index f968f5bad..9bee3e2c0 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/FunctionUtil.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/FunctionUtil.java @@ -3,15 +3,15 @@ package com.dfsek.terra.addons.noise.paralithic; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.paralithic.functions.Function; +import java.util.HashMap; +import java.util.Map; + import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; import com.dfsek.terra.addons.noise.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction2; import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction3; -import java.util.HashMap; -import java.util.Map; - public class FunctionUtil { private FunctionUtil() {} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java index 5016d7954..bd60744ad 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.noise.samplers; -import net.jafama.FastMath; - import java.awt.image.BufferedImage; import com.dfsek.terra.api.noise.NoiseSampler; @@ -28,8 +26,8 @@ public class ImageSampler implements NoiseSampler { @Override public double noise(long seed, double x, double y) { - return ((channel.getChannel(image.getRGB(FastMath.floorMod(FastMath.floorToInt(x * frequency), image.getWidth()), - FastMath.floorMod(FastMath.floorToInt(y * frequency), image.getHeight()))) / 255D) - 0.5) * + return ((channel.getChannel(image.getRGB(Math.floorMod((int) Math.floor(x * frequency), image.getWidth()), + Math.floorMod((int) Math.floor(y * frequency), image.getHeight()))) / 255D) - 0.5) * 2; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MaxSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MaxSampler.java index 4a6521dd3..0418d2069 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MaxSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MaxSampler.java @@ -1,7 +1,5 @@ package com.dfsek.terra.addons.noise.samplers.arithmetic; -import net.jafama.FastMath; - import com.dfsek.terra.api.noise.NoiseSampler; @@ -12,6 +10,6 @@ public class MaxSampler extends BinaryArithmeticSampler { @Override public double operate(double left, double right) { - return FastMath.max(left, right); + return Math.max(left, right); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MinSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MinSampler.java index 7e7ee7087..a4ada7e26 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MinSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/arithmetic/MinSampler.java @@ -1,7 +1,5 @@ package com.dfsek.terra.addons.noise.samplers.arithmetic; -import net.jafama.FastMath; - import com.dfsek.terra.api.noise.NoiseSampler; @@ -12,6 +10,6 @@ public class MinSampler extends BinaryArithmeticSampler { @Override public double operate(double left, double right) { - return FastMath.min(left, right); + return Math.min(left, right); } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java index cdd40990d..89efaf376 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.noise.samplers.noise; -import net.jafama.FastMath; - import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.api.noise.NoiseSampler; @@ -223,8 +221,8 @@ public class CellularSampler extends NoiseFunction { @Override public double getNoiseRaw(long sl, double x, double y) { int seed = (int) sl; - int xr = fastRound(x); - int yr = fastRound(y); + int xr = (int) Math.round(x); + int yr = (int) Math.round(y); double distance0 = Double.MAX_VALUE; double distance1 = Double.MAX_VALUE; @@ -251,12 +249,12 @@ public class CellularSampler extends NoiseFunction { double vecY = (yi - y) + RAND_VECS_2D[idx | 1] * cellularJitter; double newDistance = switch(distanceFunction) { - case Manhattan -> fastAbs(vecX) + fastAbs(vecY); - case Hybrid -> (fastAbs(vecX) + fastAbs(vecY)) + (vecX * vecX + vecY * vecY); + case Manhattan -> Math.abs(vecX) + Math.abs(vecY); + case Hybrid -> (Math.abs(vecX) + Math.abs(vecY)) + (vecX * vecX + vecY * vecY); default -> vecX * vecX + vecY * vecY; }; - distance1 = fastMax(fastMin(distance1, newDistance), distance0); + distance1 = Math.max(Math.min(distance1, newDistance), distance0); if(newDistance < distance0) { distance0 = newDistance; closestHash = hash; @@ -274,9 +272,9 @@ public class CellularSampler extends NoiseFunction { } if(distanceFunction == DistanceFunction.Euclidean && returnType != ReturnType.CellValue) { - distance0 = fastSqrt(distance0); + distance0 = Math.sqrt(distance0); if(returnType != ReturnType.CellValue) { - distance1 = fastSqrt(distance1); + distance1 = Math.sqrt(distance1); } } @@ -295,16 +293,16 @@ public class CellularSampler extends NoiseFunction { case Distance3Sub -> distance2 - distance0 - 1; case Distance3Mul -> distance2 * distance0 - 1; case Distance3Div -> distance0 / distance2 - 1; - case Angle -> FastMath.atan2(y / frequency - centerY, x / frequency - centerX); + case Angle -> Math.atan2(y / frequency - centerY, x / frequency - centerX); }; } @Override public double getNoiseRaw(long sl, double x, double y, double z) { int seed = (int) sl; - int xr = fastRound(x); - int yr = fastRound(y); - int zr = fastRound(z); + int xr = (int) Math.round(x); + int yr = (int) Math.round(y); + int zr = (int) Math.round(z); double distance0 = Double.MAX_VALUE; double distance1 = Double.MAX_VALUE; @@ -338,10 +336,10 @@ public class CellularSampler extends NoiseFunction { double newDistance = 0; switch(distanceFunction) { case Euclidean, EuclideanSq -> newDistance = vecX * vecX + vecY * vecY + vecZ * vecZ; - case Manhattan -> newDistance = fastAbs(vecX) + fastAbs(vecY) + fastAbs(vecZ); + case Manhattan -> newDistance = Math.abs(vecX) + Math.abs(vecY) + Math.abs(vecZ); case Hybrid -> { - newDistance = (fastAbs(vecX) + fastAbs(vecY) + fastAbs(vecZ)) + (vecX * vecX + vecY * vecY + vecZ * vecZ); - distance1 = fastMax(fastMin(distance1, newDistance), distance0); + newDistance = (Math.abs(vecX) + Math.abs(vecY) + Math.abs(vecZ)) + (vecX * vecX + vecY * vecY + vecZ * vecZ); + distance1 = Math.max(Math.min(distance1, newDistance), distance0); } } @@ -365,9 +363,9 @@ public class CellularSampler extends NoiseFunction { } if(distanceFunction == DistanceFunction.Euclidean && returnType != ReturnType.CellValue) { - distance0 = fastSqrt(distance0); + distance0 = Math.sqrt(distance0); if(returnType != ReturnType.CellValue) { - distance1 = fastSqrt(distance1); + distance1 = Math.sqrt(distance1); } } @@ -386,7 +384,7 @@ public class CellularSampler extends NoiseFunction { case Distance3Sub -> distance2 - distance0 - 1; case Distance3Mul -> distance2 * distance0 - 1; case Distance3Div -> distance0 / distance2 - 1; - case Angle -> FastMath.atan2(y / frequency - centerY, x / frequency - centerX); + case Angle -> Math.atan2(y / frequency - centerY, x / frequency - centerX); }; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/DistanceSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/DistanceSampler.java index 1e083fb86..246c7bab1 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/DistanceSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/DistanceSampler.java @@ -25,9 +25,9 @@ public class DistanceSampler extends NoiseFunction { public double getNoiseRaw(long seed, double x, double y) { double dx = x - ox; double dy = y - oz; - if (normalize && (fastAbs(dx) > radius || fastAbs(dy) > radius)) return 1; + if (normalize && (Math.abs(dx) > radius || Math.abs(dy) > radius)) return 1; double dist = distance2d(distanceFunction, dx, dy); - if (normalize) return fastMin(((2*dist)/distanceAtRadius)-1, 1); + if (normalize) return Math.min(((2*dist)/distanceAtRadius)-1, 1); return dist; } @@ -36,25 +36,25 @@ public class DistanceSampler extends NoiseFunction { double dx = x - ox; double dy = y - oy; double dz = z - oz; - if(normalize && (fastAbs(dx) > radius || fastAbs(dy) > radius || fastAbs(dz) > radius)) return 1; + if(normalize && (Math.abs(dx) > radius || Math.abs(dy) > radius || Math.abs(dz) > radius)) return 1; double dist = distance3d(distanceFunction, dx, dy, dz); - if (normalize) return fastMin(((2*dist)/distanceAtRadius)-1, 1); + if (normalize) return Math.min(((2*dist)/distanceAtRadius)-1, 1); return dist; } private static double distance2d(DistanceFunction distanceFunction, double x, double z) { return switch(distanceFunction) { - case Euclidean -> fastSqrt(x*x + z*z); + case Euclidean -> Math.sqrt(x*x + z*z); case EuclideanSq -> x*x + z*z; - case Manhattan -> fastAbs(x) + fastAbs(z); + case Manhattan -> Math.abs(x) + Math.abs(z); }; } private static double distance3d(DistanceFunction distanceFunction, double x, double y, double z) { return switch(distanceFunction) { - case Euclidean -> fastSqrt(x*x + y*y + z*z); + case Euclidean -> Math.sqrt(x*x + y*y + z*z); case EuclideanSq -> x*x + y*y + z*z; - case Manhattan -> fastAbs(x) + fastAbs(y) + fastAbs(z); + case Manhattan -> Math.abs(x) + Math.abs(y) + Math.abs(z); }; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java index 816b6f35e..458d5fbfe 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java @@ -7,9 +7,8 @@ package com.dfsek.terra.addons.noise.samplers.noise; -import net.jafama.FastMath; - import com.dfsek.terra.addons.noise.samplers.noise.random.WhiteNoiseSampler; +import com.dfsek.terra.api.util.MathUtil; public class GaborNoiseSampler extends NoiseFunction { @@ -17,11 +16,11 @@ public class GaborNoiseSampler extends NoiseFunction { private double k = 1.0; private double a = 0.1; private double f0 = 0.625; - private double kernelRadius = (FastMath.sqrt(-FastMath.log(0.05) / Math.PI) / a); + private double kernelRadius = (Math.sqrt(-Math.log(0.05) / Math.PI) / a); private double impulsesPerKernel = 64d; private double impulseDensity = (impulsesPerKernel / (Math.PI * kernelRadius * kernelRadius)); private double impulsesPerCell = impulseDensity * kernelRadius * kernelRadius; - private double g = FastMath.exp(-impulsesPerCell); + private double g = Math.exp(-impulsesPerCell); private double omega0 = Math.PI * 0.25; private boolean isotropic = true; @@ -32,17 +31,17 @@ public class GaborNoiseSampler extends NoiseFunction { } private void recalculateRadiusAndDensity() { - kernelRadius = (FastMath.sqrt(-FastMath.log(0.05) / Math.PI) / this.a); + kernelRadius = (Math.sqrt(-Math.log(0.05) / Math.PI) / this.a); impulseDensity = (impulsesPerKernel / (Math.PI * kernelRadius * kernelRadius)); impulsesPerCell = impulseDensity * kernelRadius * kernelRadius; - g = FastMath.exp(-impulsesPerCell); + g = Math.exp(-impulsesPerCell); } private double gaborNoise(long seed, double x, double y) { x /= kernelRadius; y /= kernelRadius; - int xi = fastFloor(x); - int yi = fastFloor(y); + int xi = (int) Math.floor(x); + int yi = (int) Math.floor(y); double xf = x - xi; double yf = y - yi; double noise = 0; @@ -55,7 +54,7 @@ public class GaborNoiseSampler extends NoiseFunction { } private double calculateCell(long seed, int xi, int yi, double x, double y) { - long mashedSeed = murmur64(31L * xi + yi) + seed; + long mashedSeed = MathUtil.murmur64(31L * xi + yi) + seed; double gaussianSource = (rand.getNoiseRaw(mashedSeed++) + 1) / 2; int impulses = 0; @@ -73,7 +72,7 @@ public class GaborNoiseSampler extends NoiseFunction { } private double gabor(double omega_0, double x, double y) { - return k * (FastMath.exp(-Math.PI * (a * a) * (x * x + y * y)) * fastCos(2 * Math.PI * f0 * (x * fastCos(omega_0) + y * fastSin( + return k * (Math.exp(-Math.PI * (a * a) * (x * x + y * y)) * MathUtil.cos(2 * Math.PI * f0 * (x * MathUtil.cos(omega_0) + y * MathUtil.sin( omega_0)))); } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java index a1a788ebb..545b59385 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java @@ -7,25 +7,15 @@ package com.dfsek.terra.addons.noise.samplers.noise; -import net.jafama.FastMath; - import com.dfsek.terra.api.noise.NoiseSampler; -@SuppressWarnings("ManualMinMaxCalculation") public abstract class NoiseFunction implements NoiseSampler { // Hashing protected static final int PRIME_X = 501125321; protected static final int PRIME_Y = 1136930381; protected static final int PRIME_Z = 1720413743; - static final int precision = 100; - static final int modulus = 360 * precision; - static final double[] sin = new double[360 * 100]; // lookup table - static { - for(int i = 0; i < sin.length; i++) { - sin[i] = (float) Math.sin((double) (i) / (precision)); - } - } + protected double frequency = 0.02d; protected long salt; @@ -33,10 +23,6 @@ public abstract class NoiseFunction implements NoiseSampler { this.salt = 0; } - protected static int fastFloor(double f) { - return f >= 0 ? (int) f : (int) f - 1; - } - protected static int hash(int seed, int xPrimed, int yPrimed, int zPrimed) { int hash = seed ^ xPrimed ^ yPrimed ^ zPrimed; @@ -51,77 +37,6 @@ public abstract class NoiseFunction implements NoiseSampler { return hash; } - protected static int fastRound(double f) { - return f >= 0 ? (int) (f + 0.5f) : (int) (f - 0.5); - } - - protected static double lerp(double a, double b, double t) { - return a + t * (b - a); - } - - protected static double interpHermite(double t) { - return t * t * (3 - 2 * t); - } - - protected static double interpQuintic(double t) { - return t * t * t * (t * (t * 6 - 15) + 10); - } - - protected static double cubicLerp(double a, double b, double c, double d, double t) { - double p = (d - c) - (a - b); - return t * t * t * p + t * t * ((a - b) - p) + t * (c - a) + b; - } - - protected static double fastMin(double a, double b) { - return a < b ? a : b; - } - - protected static double fastMax(double a, double b) { - return a > b ? a : b; - } - - protected static double fastAbs(double f) { - return f < 0 ? -f : f; - } - - protected static double fastSqrt(double f) { - return FastMath.sqrt(f); - } - - protected static int fastCeil(double f) { - int i = (int) f; - if(i < f) i++; - return i; - } - - /** - * Murmur64 hashing function - * - * @param h Input value - * - * @return Hashed value - */ - protected static long murmur64(long h) { - h ^= h >>> 33; - h *= 0xff51afd7ed558ccdL; - h ^= h >>> 33; - h *= 0xc4ceb9fe1a85ec53L; - h ^= h >>> 33; - return h; - } - - protected static double fastSin(double a) { - return sinLookup((int) (a * precision + 0.5f)); - } - - protected static double fastCos(double a) { - return sinLookup((int) ((a + Math.PI / 2) * precision + 0.5f)); - } - - private static double sinLookup(int a) { - return a >= 0 ? sin[a % (modulus)] : -sin[-a % (modulus)]; - } - public void setSalt(long salt) { this.salt = salt; } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java index 91a7fb3fc..a51c574c3 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java @@ -8,6 +8,7 @@ package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; public class BrownianMotionSampler extends FractalNoiseFunction { @@ -23,7 +24,7 @@ public class BrownianMotionSampler extends FractalNoiseFunction { for(int i = 0; i < octaves; i++) { double noise = input.noise(seed++, x, y); sum += noise * amp; - amp *= lerp(1.0, fastMin(noise + 1, 2) * 0.5, weightedStrength); + amp *= MathUtil.lerp(1.0, Math.min(noise + 1, 2) * 0.5, weightedStrength); x *= lacunarity; y *= lacunarity; @@ -41,7 +42,7 @@ public class BrownianMotionSampler extends FractalNoiseFunction { for(int i = 0; i < octaves; i++) { double noise = input.noise(seed++, x, y, z); sum += noise * amp; - amp *= lerp(1.0, (noise + 1) * 0.5, weightedStrength); + amp *= MathUtil.lerp(1.0, (noise + 1) * 0.5, weightedStrength); x *= lacunarity; y *= lacunarity; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java index f24e59f39..e52e6eff4 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java @@ -25,7 +25,7 @@ public abstract class FractalNoiseFunction extends NoiseFunction { } protected void calculateFractalBounding() { - double gain = fastAbs(this.gain); + double gain = Math.abs(this.gain); double amp = gain; double ampFractal = 1.0; for(int i = 1; i < octaves; i++) { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java index b5f9fdd50..e8fd2a114 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java @@ -8,6 +8,7 @@ package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; public class PingPongSampler extends FractalNoiseFunction { @@ -35,7 +36,7 @@ public class PingPongSampler extends FractalNoiseFunction { for(int i = 0; i < octaves; i++) { double noise = pingPong((input.noise(seed++, x, y) + 1) * pingPongStrength); sum += (noise - 0.5) * 2 * amp; - amp *= lerp(1.0, noise, weightedStrength); + amp *= MathUtil.lerp(1.0, noise, weightedStrength); x *= lacunarity; y *= lacunarity; @@ -53,7 +54,7 @@ public class PingPongSampler extends FractalNoiseFunction { for(int i = 0; i < octaves; i++) { double noise = pingPong((input.noise(seed++, x, y, z) + 1) * pingPongStrength); sum += (noise - 0.5) * 2 * amp; - amp *= lerp(1.0, noise, weightedStrength); + amp *= MathUtil.lerp(1.0, noise, weightedStrength); x *= lacunarity; y *= lacunarity; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java index 9569a8971..19800bed8 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java @@ -8,6 +8,7 @@ package com.dfsek.terra.addons.noise.samplers.noise.fractal; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.MathUtil; public class RidgedFractalSampler extends FractalNoiseFunction { @@ -22,9 +23,9 @@ public class RidgedFractalSampler extends FractalNoiseFunction { double amp = fractalBounding; for(int i = 0; i < octaves; i++) { - double noise = fastAbs(input.noise(seed++, x, y)); + double noise = Math.abs(input.noise(seed++, x, y)); sum += (noise * -2 + 1) * amp; - amp *= lerp(1.0, 1 - noise, weightedStrength); + amp *= MathUtil.lerp(1.0, 1 - noise, weightedStrength); x *= lacunarity; y *= lacunarity; @@ -40,9 +41,9 @@ public class RidgedFractalSampler extends FractalNoiseFunction { double amp = fractalBounding; for(int i = 0; i < octaves; i++) { - double noise = fastAbs(input.noise(seed++, x, y, z)); + double noise = Math.abs(input.noise(seed++, x, y, z)); sum += (noise * -2 + 1) * amp; - amp *= lerp(1.0, 1 - noise, weightedStrength); + amp *= MathUtil.lerp(1.0, 1 - noise, weightedStrength); x *= lacunarity; y *= lacunarity; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/PositiveWhiteNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/PositiveWhiteNoiseSampler.java index 4046cdef4..d4b4ddd94 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/PositiveWhiteNoiseSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/PositiveWhiteNoiseSampler.java @@ -7,6 +7,9 @@ package com.dfsek.terra.addons.noise.samplers.noise.random; +import com.dfsek.terra.api.util.MathUtil; + + /** * NoiseSampler implementation to produce random, uniformly distributed (white) noise. */ @@ -15,7 +18,7 @@ public class PositiveWhiteNoiseSampler extends WhiteNoiseSampler { // Bits that when applied to the exponent/sign section of a double, produce a positive number with a power of 1. public double getNoiseRaw(long seed) { - return (Double.longBitsToDouble((murmur64(seed) & 0x000fffffffffffffL) | POSITIVE_POW1) - 1.5) * 2; + return (Double.longBitsToDouble((MathUtil.murmur64(seed) & 0x000fffffffffffffL) | POSITIVE_POW1) - 1.5) * 2; } @Override diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java index d8399f1af..4c98e04e1 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java @@ -8,6 +8,7 @@ package com.dfsek.terra.addons.noise.samplers.noise.random; import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; +import com.dfsek.terra.api.util.MathUtil; /** @@ -24,18 +25,18 @@ public class WhiteNoiseSampler extends NoiseFunction { long hashX = Double.doubleToRawLongBits(x) ^ seed; long hashZ = Double.doubleToRawLongBits(y) ^ seed; long hash = (((hashX ^ (hashX >>> 32)) + ((hashZ ^ (hashZ >>> 32)) << 32)) ^ seed) + Double.doubleToRawLongBits(z); - return murmur64(hash); + return MathUtil.murmur64(hash); } public long randomBits(long seed, double x, double y) { long hashX = Double.doubleToRawLongBits(x) ^ seed; long hashZ = Double.doubleToRawLongBits(y) ^ seed; long hash = ((hashX ^ (hashX >>> 32)) + ((hashZ ^ (hashZ >>> 32)) << 32)) ^ seed; - return murmur64(hash); + return MathUtil.murmur64(hash); } public double getNoiseRaw(long seed) { - return (Double.longBitsToDouble((murmur64(seed) & 0x000fffffffffffffL) | POSITIVE_POW1) - 1.5) * 2; + return (Double.longBitsToDouble((MathUtil.murmur64(seed) & 0x000fffffffffffffL) | POSITIVE_POW1) - 1.5) * 2; } @Override diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java index 90f6a713f..be20803a8 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java @@ -26,8 +26,8 @@ public class OpenSimplex2SSampler extends SimplexStyleSampler { y += s; - int i = fastFloor(x); - int j = fastFloor(y); + int i = (int) Math.floor(x); + int j = (int) Math.floor(y); double xi = x - i; double yi = y - j; @@ -131,9 +131,9 @@ public class OpenSimplex2SSampler extends SimplexStyleSampler { z = r - z; - int i = fastFloor(x); - int j = fastFloor(y); - int k = fastFloor(z); + int i = (int) Math.floor(x); + int j = (int) Math.floor(y); + int k = (int) Math.floor(z); double xi = x - i; double yi = y - j; double zi = z - k; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java index f4fc0018e..5c5256478 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java @@ -25,8 +25,8 @@ public class OpenSimplex2Sampler extends SimplexStyleSampler { y += s; - int i = fastFloor(x); - int j = fastFloor(y); + int i = (int) Math.floor(x); + int j = (int) Math.floor(y); double xi = x - i; double yi = y - j; @@ -85,9 +85,9 @@ public class OpenSimplex2Sampler extends SimplexStyleSampler { z = r - z; - int i = fastRound(x); - int j = fastRound(y); - int k = fastRound(z); + int i = (int) Math.round(x); + int j = (int) Math.round(y); + int k = (int) Math.round(z); double x0 = x - i; double y0 = y - j; double z0 = z - k; diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java index 999b73265..7b8866c44 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java @@ -7,6 +7,9 @@ package com.dfsek.terra.addons.noise.samplers.noise.simplex; +import com.dfsek.terra.api.util.MathUtil; + + /** * NoiseSampler implementation to provide Perlin Noise. */ @@ -14,34 +17,34 @@ public class PerlinSampler extends SimplexStyleSampler { @Override public double getNoiseRaw(long sl, double x, double y) { int seed = (int) sl; - int x0 = fastFloor(x); - int y0 = fastFloor(y); + int x0 = (int) Math.floor(x); + int y0 = (int) Math.floor(y); double xd0 = x - x0; double yd0 = y - y0; double xd1 = xd0 - 1; double yd1 = yd0 - 1; - double xs = interpQuintic(xd0); - double ys = interpQuintic(yd0); + double xs = MathUtil.interpQuintic(xd0); + double ys = MathUtil.interpQuintic(yd0); x0 *= PRIME_X; y0 *= PRIME_Y; int x1 = x0 + PRIME_X; int y1 = y0 + PRIME_Y; - double xf0 = lerp(gradCoord(seed, x0, y0, xd0, yd0), gradCoord(seed, x1, y0, xd1, yd0), xs); - double xf1 = lerp(gradCoord(seed, x0, y1, xd0, yd1), gradCoord(seed, x1, y1, xd1, yd1), xs); + double xf0 = MathUtil.lerp(gradCoord(seed, x0, y0, xd0, yd0), gradCoord(seed, x1, y0, xd1, yd0), xs); + double xf1 = MathUtil.lerp(gradCoord(seed, x0, y1, xd0, yd1), gradCoord(seed, x1, y1, xd1, yd1), xs); - return lerp(xf0, xf1, ys) * 1.4247691104677813; + return MathUtil.lerp(xf0, xf1, ys) * 1.4247691104677813; } @Override public double getNoiseRaw(long sl, double x, double y, double z) { int seed = (int) sl; - int x0 = fastFloor(x); - int y0 = fastFloor(y); - int z0 = fastFloor(z); + int x0 = (int) Math.floor(x); + int y0 = (int) Math.floor(y); + int z0 = (int) Math.floor(z); double xd0 = x - x0; double yd0 = y - y0; @@ -50,9 +53,9 @@ public class PerlinSampler extends SimplexStyleSampler { double yd1 = yd0 - 1; double zd1 = zd0 - 1; - double xs = interpQuintic(xd0); - double ys = interpQuintic(yd0); - double zs = interpQuintic(zd0); + double xs = MathUtil.interpQuintic(xd0); + double ys = MathUtil.interpQuintic(yd0); + double zs = MathUtil.interpQuintic(zd0); x0 *= PRIME_X; y0 *= PRIME_Y; @@ -61,14 +64,14 @@ public class PerlinSampler extends SimplexStyleSampler { int y1 = y0 + PRIME_Y; int z1 = z0 + PRIME_Z; - double xf00 = lerp(gradCoord(seed, x0, y0, z0, xd0, yd0, zd0), gradCoord(seed, x1, y0, z0, xd1, yd0, zd0), xs); - double xf10 = lerp(gradCoord(seed, x0, y1, z0, xd0, yd1, zd0), gradCoord(seed, x1, y1, z0, xd1, yd1, zd0), xs); - double xf01 = lerp(gradCoord(seed, x0, y0, z1, xd0, yd0, zd1), gradCoord(seed, x1, y0, z1, xd1, yd0, zd1), xs); - double xf11 = lerp(gradCoord(seed, x0, y1, z1, xd0, yd1, zd1), gradCoord(seed, x1, y1, z1, xd1, yd1, zd1), xs); + double xf00 = MathUtil.lerp(gradCoord(seed, x0, y0, z0, xd0, yd0, zd0), gradCoord(seed, x1, y0, z0, xd1, yd0, zd0), xs); + double xf10 = MathUtil.lerp(gradCoord(seed, x0, y1, z0, xd0, yd1, zd0), gradCoord(seed, x1, y1, z0, xd1, yd1, zd0), xs); + double xf01 = MathUtil.lerp(gradCoord(seed, x0, y0, z1, xd0, yd0, zd1), gradCoord(seed, x1, y0, z1, xd1, yd0, zd1), xs); + double xf11 = MathUtil.lerp(gradCoord(seed, x0, y1, z1, xd0, yd1, zd1), gradCoord(seed, x1, y1, z1, xd1, yd1, zd1), xs); - double yf0 = lerp(xf00, xf10, ys); - double yf1 = lerp(xf01, xf11, ys); + double yf0 = MathUtil.lerp(xf00, xf10, ys); + double yf1 = MathUtil.lerp(xf01, xf11, ys); - return lerp(yf0, yf1, zs) * 0.964921414852142333984375; + return MathUtil.lerp(yf0, yf1, zs) * 0.964921414852142333984375; } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java index 4cacc6fef..5066f1488 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java @@ -61,8 +61,8 @@ public class SimplexSampler extends SimplexStyleSampler { public double getNoiseRaw(long sl, double x, double y) { int seed = (int) sl; double t = (x + y) * F2; - int i = fastFloor(x + t); - int j = fastFloor(y + t); + int i = (int) Math.floor(x + t); + int j = (int) Math.floor(y + t); t = (i + j) * G2; double X0 = i - t; @@ -118,9 +118,9 @@ public class SimplexSampler extends SimplexStyleSampler { public double getNoiseRaw(long sl, double x, double y, double z) { int seed = (int) sl; double t = (x + y + z) * F3; - int i = fastFloor(x + t); - int j = fastFloor(y + t); - int k = fastFloor(z + t); + int i = (int) Math.floor(x + t); + int j = (int) Math.floor(y + t); + int k = (int) Math.floor(z + t); t = (i + j + k) * G3; double x0 = x - (i - t); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java index 9995046e1..ab4074a5c 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java @@ -7,12 +7,15 @@ package com.dfsek.terra.addons.noise.samplers.noise.value; +import com.dfsek.terra.api.util.MathUtil; + + public class ValueCubicSampler extends ValueStyleNoise { @Override public double getNoiseRaw(long sl, double x, double y) { int seed = (int) sl; - int x1 = fastFloor(x); - int y1 = fastFloor(y); + int x1 = (int) Math.floor(x); + int y1 = (int) Math.floor(y); double xs = x - x1; double ys = y - y1; @@ -26,14 +29,14 @@ public class ValueCubicSampler extends ValueStyleNoise { int x3 = x1 + (PRIME_X << 1); int y3 = y1 + (PRIME_Y << 1); - return cubicLerp( - cubicLerp(valCoord(seed, x0, y0), valCoord(seed, x1, y0), valCoord(seed, x2, y0), valCoord(seed, x3, y0), + return MathUtil.cubicLerp( + MathUtil.cubicLerp(valCoord(seed, x0, y0), valCoord(seed, x1, y0), valCoord(seed, x2, y0), valCoord(seed, x3, y0), + xs), + MathUtil.cubicLerp(valCoord(seed, x0, y1), valCoord(seed, x1, y1), valCoord(seed, x2, y1), valCoord(seed, x3, y1), xs), - cubicLerp(valCoord(seed, x0, y1), valCoord(seed, x1, y1), valCoord(seed, x2, y1), valCoord(seed, x3, y1), + MathUtil.cubicLerp(valCoord(seed, x0, y2), valCoord(seed, x1, y2), valCoord(seed, x2, y2), valCoord(seed, x3, y2), xs), - cubicLerp(valCoord(seed, x0, y2), valCoord(seed, x1, y2), valCoord(seed, x2, y2), valCoord(seed, x3, y2), - xs), - cubicLerp(valCoord(seed, x0, y3), valCoord(seed, x1, y3), valCoord(seed, x2, y3), valCoord(seed, x3, y3), + MathUtil.cubicLerp(valCoord(seed, x0, y3), valCoord(seed, x1, y3), valCoord(seed, x2, y3), valCoord(seed, x3, y3), xs), ys) * (1 / (1.5 * 1.5)); } @@ -41,9 +44,9 @@ public class ValueCubicSampler extends ValueStyleNoise { @Override public double getNoiseRaw(long sl, double x, double y, double z) { int seed = (int) sl; - int x1 = fastFloor(x); - int y1 = fastFloor(y); - int z1 = fastFloor(z); + int x1 = (int) Math.floor(x); + int y1 = (int) Math.floor(y); + int z1 = (int) Math.floor(z); double xs = x - x1; double ys = y - y1; @@ -63,45 +66,45 @@ public class ValueCubicSampler extends ValueStyleNoise { int y3 = y1 + (PRIME_Y << 1); int z3 = z1 + (PRIME_Z << 1); - return cubicLerp( - cubicLerp( - cubicLerp(valCoord(seed, x0, y0, z0), valCoord(seed, x1, y0, z0), valCoord(seed, x2, y0, z0), + return MathUtil.cubicLerp( + MathUtil.cubicLerp( + MathUtil.cubicLerp(valCoord(seed, x0, y0, z0), valCoord(seed, x1, y0, z0), valCoord(seed, x2, y0, z0), valCoord(seed, x3, y0, z0), xs), - cubicLerp(valCoord(seed, x0, y1, z0), valCoord(seed, x1, y1, z0), valCoord(seed, x2, y1, z0), + MathUtil.cubicLerp(valCoord(seed, x0, y1, z0), valCoord(seed, x1, y1, z0), valCoord(seed, x2, y1, z0), valCoord(seed, x3, y1, z0), xs), - cubicLerp(valCoord(seed, x0, y2, z0), valCoord(seed, x1, y2, z0), valCoord(seed, x2, y2, z0), + MathUtil.cubicLerp(valCoord(seed, x0, y2, z0), valCoord(seed, x1, y2, z0), valCoord(seed, x2, y2, z0), valCoord(seed, x3, y2, z0), xs), - cubicLerp(valCoord(seed, x0, y3, z0), valCoord(seed, x1, y3, z0), valCoord(seed, x2, y3, z0), + MathUtil.cubicLerp(valCoord(seed, x0, y3, z0), valCoord(seed, x1, y3, z0), valCoord(seed, x2, y3, z0), valCoord(seed, x3, y3, z0), xs), ys), - cubicLerp( - cubicLerp(valCoord(seed, x0, y0, z1), valCoord(seed, x1, y0, z1), valCoord(seed, x2, y0, z1), + MathUtil.cubicLerp( + MathUtil.cubicLerp(valCoord(seed, x0, y0, z1), valCoord(seed, x1, y0, z1), valCoord(seed, x2, y0, z1), valCoord(seed, x3, y0, z1), xs), - cubicLerp(valCoord(seed, x0, y1, z1), valCoord(seed, x1, y1, z1), valCoord(seed, x2, y1, z1), + MathUtil.cubicLerp(valCoord(seed, x0, y1, z1), valCoord(seed, x1, y1, z1), valCoord(seed, x2, y1, z1), valCoord(seed, x3, y1, z1), xs), - cubicLerp(valCoord(seed, x0, y2, z1), valCoord(seed, x1, y2, z1), valCoord(seed, x2, y2, z1), + MathUtil.cubicLerp(valCoord(seed, x0, y2, z1), valCoord(seed, x1, y2, z1), valCoord(seed, x2, y2, z1), valCoord(seed, x3, y2, z1), xs), - cubicLerp(valCoord(seed, x0, y3, z1), valCoord(seed, x1, y3, z1), valCoord(seed, x2, y3, z1), + MathUtil.cubicLerp(valCoord(seed, x0, y3, z1), valCoord(seed, x1, y3, z1), valCoord(seed, x2, y3, z1), valCoord(seed, x3, y3, z1), xs), ys), - cubicLerp( - cubicLerp(valCoord(seed, x0, y0, z2), valCoord(seed, x1, y0, z2), valCoord(seed, x2, y0, z2), + MathUtil.cubicLerp( + MathUtil.cubicLerp(valCoord(seed, x0, y0, z2), valCoord(seed, x1, y0, z2), valCoord(seed, x2, y0, z2), valCoord(seed, x3, y0, z2), xs), - cubicLerp(valCoord(seed, x0, y1, z2), valCoord(seed, x1, y1, z2), valCoord(seed, x2, y1, z2), + MathUtil.cubicLerp(valCoord(seed, x0, y1, z2), valCoord(seed, x1, y1, z2), valCoord(seed, x2, y1, z2), valCoord(seed, x3, y1, z2), xs), - cubicLerp(valCoord(seed, x0, y2, z2), valCoord(seed, x1, y2, z2), valCoord(seed, x2, y2, z2), + MathUtil.cubicLerp(valCoord(seed, x0, y2, z2), valCoord(seed, x1, y2, z2), valCoord(seed, x2, y2, z2), valCoord(seed, x3, y2, z2), xs), - cubicLerp(valCoord(seed, x0, y3, z2), valCoord(seed, x1, y3, z2), valCoord(seed, x2, y3, z2), + MathUtil.cubicLerp(valCoord(seed, x0, y3, z2), valCoord(seed, x1, y3, z2), valCoord(seed, x2, y3, z2), valCoord(seed, x3, y3, z2), xs), ys), - cubicLerp( - cubicLerp(valCoord(seed, x0, y0, z3), valCoord(seed, x1, y0, z3), valCoord(seed, x2, y0, z3), + MathUtil.cubicLerp( + MathUtil.cubicLerp(valCoord(seed, x0, y0, z3), valCoord(seed, x1, y0, z3), valCoord(seed, x2, y0, z3), valCoord(seed, x3, y0, z3), xs), - cubicLerp(valCoord(seed, x0, y1, z3), valCoord(seed, x1, y1, z3), valCoord(seed, x2, y1, z3), + MathUtil.cubicLerp(valCoord(seed, x0, y1, z3), valCoord(seed, x1, y1, z3), valCoord(seed, x2, y1, z3), valCoord(seed, x3, y1, z3), xs), - cubicLerp(valCoord(seed, x0, y2, z3), valCoord(seed, x1, y2, z3), valCoord(seed, x2, y2, z3), + MathUtil.cubicLerp(valCoord(seed, x0, y2, z3), valCoord(seed, x1, y2, z3), valCoord(seed, x2, y2, z3), valCoord(seed, x3, y2, z3), xs), - cubicLerp(valCoord(seed, x0, y3, z3), valCoord(seed, x1, y3, z3), valCoord(seed, x2, y3, z3), + MathUtil.cubicLerp(valCoord(seed, x0, y3, z3), valCoord(seed, x1, y3, z3), valCoord(seed, x2, y3, z3), valCoord(seed, x3, y3, z3), xs), ys), zs) * (1 / (1.5 * 1.5 * 1.5)); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java index fbab36d35..c4912d90f 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java @@ -7,37 +7,40 @@ package com.dfsek.terra.addons.noise.samplers.noise.value; +import com.dfsek.terra.api.util.MathUtil; + + public class ValueSampler extends ValueStyleNoise { @Override public double getNoiseRaw(long sl, double x, double y) { int seed = (int) sl; - int x0 = fastFloor(x); - int y0 = fastFloor(y); + int x0 = (int) Math.floor(x); + int y0 = (int) Math.floor(y); - double xs = interpHermite(x - x0); - double ys = interpHermite(y - y0); + double xs = MathUtil.interpHermite(x - x0); + double ys = MathUtil.interpHermite(y - y0); x0 *= PRIME_X; y0 *= PRIME_Y; int x1 = x0 + PRIME_X; int y1 = y0 + PRIME_Y; - double xf0 = lerp(valCoord(seed, x0, y0), valCoord(seed, x1, y0), xs); - double xf1 = lerp(valCoord(seed, x0, y1), valCoord(seed, x1, y1), xs); + double xf0 = MathUtil.lerp(valCoord(seed, x0, y0), valCoord(seed, x1, y0), xs); + double xf1 = MathUtil.lerp(valCoord(seed, x0, y1), valCoord(seed, x1, y1), xs); - return lerp(xf0, xf1, ys); + return MathUtil.lerp(xf0, xf1, ys); } @Override public double getNoiseRaw(long sl, double x, double y, double z) { int seed = (int) sl; - int x0 = fastFloor(x); - int y0 = fastFloor(y); - int z0 = fastFloor(z); + int x0 = (int) Math.floor(x); + int y0 = (int) Math.floor(y); + int z0 = (int) Math.floor(z); - double xs = interpHermite(x - x0); - double ys = interpHermite(y - y0); - double zs = interpHermite(z - z0); + double xs = MathUtil.interpHermite(x - x0); + double ys = MathUtil.interpHermite(y - y0); + double zs = MathUtil.interpHermite(z - z0); x0 *= PRIME_X; y0 *= PRIME_Y; @@ -46,14 +49,14 @@ public class ValueSampler extends ValueStyleNoise { int y1 = y0 + PRIME_Y; int z1 = z0 + PRIME_Z; - double xf00 = lerp(valCoord(seed, x0, y0, z0), valCoord(seed, x1, y0, z0), xs); - double xf10 = lerp(valCoord(seed, x0, y1, z0), valCoord(seed, x1, y1, z0), xs); - double xf01 = lerp(valCoord(seed, x0, y0, z1), valCoord(seed, x1, y0, z1), xs); - double xf11 = lerp(valCoord(seed, x0, y1, z1), valCoord(seed, x1, y1, z1), xs); + double xf00 = MathUtil.lerp(valCoord(seed, x0, y0, z0), valCoord(seed, x1, y0, z0), xs); + double xf10 = MathUtil.lerp(valCoord(seed, x0, y1, z0), valCoord(seed, x1, y1, z0), xs); + double xf01 = MathUtil.lerp(valCoord(seed, x0, y0, z1), valCoord(seed, x1, y0, z1), xs); + double xf11 = MathUtil.lerp(valCoord(seed, x0, y1, z1), valCoord(seed, x1, y1, z1), xs); - double yf0 = lerp(xf00, xf10, ys); - double yf1 = lerp(xf01, xf11, ys); + double yf0 = MathUtil.lerp(xf00, xf10, ys); + double yf1 = MathUtil.lerp(xf01, xf11, ys); - return lerp(yf0, yf1, zs); + return MathUtil.lerp(yf0, yf1, zs); } } diff --git a/common/addons/config-ore-v2/build.gradle.kts b/common/addons/config-ore-v2/build.gradle.kts index d575f43d3..d3eaff9fe 100644 --- a/common/addons/config-ore-v2/build.gradle.kts +++ b/common/addons/config-ore-v2/build.gradle.kts @@ -2,10 +2,4 @@ version = version("1.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) -} - -tasks.named("shadowJar") { - relocate("net.jafama", "com.dfsek.terra.addons.ore.lib.jafama") -} +} \ No newline at end of file diff --git a/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/ores/VanillaOre.java b/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/ores/VanillaOre.java index dc77f31ed..9f219f17f 100644 --- a/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/ores/VanillaOre.java +++ b/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/ores/VanillaOre.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.ore.v2.ores; -import net.jafama.FastMath; - import java.util.BitSet; import java.util.Map; import java.util.Random; @@ -16,6 +14,7 @@ import java.util.Random; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.vector.Vector3Int; @@ -62,11 +61,11 @@ public class VanillaOre implements Structure { double eigthSize = size / 8.0F; // Place points to form a line segment - double startX = (double) location.getX() + FastMath.sin(randomRadian) * eigthSize; - double endX = (double) location.getX() - FastMath.sin(randomRadian) * eigthSize; + double startX = (double) location.getX() + MathUtil.sin(randomRadian) * eigthSize; + double endX = (double) location.getX() - MathUtil.sin(randomRadian) * eigthSize; - double startZ = (double) location.getZ() + FastMath.cos(randomRadian) * eigthSize; - double endZ = (double) location.getZ() - FastMath.cos(randomRadian) * eigthSize; + double startZ = (double) location.getZ() + MathUtil.cos(randomRadian) * eigthSize; + double endZ = (double) location.getZ() - MathUtil.cos(randomRadian) * eigthSize; double startY = location.getY() + random.nextInt(3) - 2; double endY = location.getY() + random.nextInt(3) - 2; @@ -82,7 +81,7 @@ public class VanillaOre implements Structure { double zt = lerp(t, startZ, endZ); double roll = random.nextDouble() * size / 16.0; // Taper radius closer to line ends - double radius = ((FastMath.sin((float) Math.PI * t) + 1.0F) * roll + 1.0) / 2.0; + double radius = ((MathUtil.sin((float) Math.PI * t) + 1.0F) * roll + 1.0) / 2.0; points[i * 4] = xt; points[i * 4 + 1] = yt; points[i * 4 + 2] = zt; @@ -115,12 +114,12 @@ public class VanillaOre implements Structure { } } - int outset = (int) FastMath.ceil((size / 16.0F * 2.0F + 1.0F) / 2.0F); - int x = (int) (location.getX() - FastMath.ceil(eigthSize) - outset); + int outset = (int) Math.ceil((size / 16.0F * 2.0F + 1.0F) / 2.0F); + int x = (int) (location.getX() - Math.ceil(eigthSize) - outset); int y = location.getY() - 2 - outset; - int z = (int) (location.getZ() - FastMath.ceil(eigthSize) - outset); + int z = (int) (location.getZ() - Math.ceil(eigthSize) - outset); - int horizontalSize = (int) (2 * (FastMath.ceil(eigthSize) + outset)); + int horizontalSize = (int) (2 * (Math.ceil(eigthSize) + outset)); int verticalSize = 2 * (2 + outset); int sphereCount = 0; @@ -134,14 +133,14 @@ public class VanillaOre implements Structure { double yt = points[i * 4 + 1]; double zt = points[i * 4 + 2]; - int xLowerBound = (int) FastMath.max(FastMath.floor(xt - radius), x); - int xUpperBound = (int) FastMath.max(FastMath.floor(xt + radius), xLowerBound); + int xLowerBound = (int) Math.max(Math.floor(xt - radius), x); + int xUpperBound = (int) Math.max(Math.floor(xt + radius), xLowerBound); - int yLowerBound = (int) FastMath.max(FastMath.floor(yt - radius), y); - int yUpperBound = (int) FastMath.max(FastMath.floor(yt + radius), yLowerBound); + int yLowerBound = (int) Math.max(Math.floor(yt - radius), y); + int yUpperBound = (int) Math.max(Math.floor(yt + radius), yLowerBound); - int zLowerBound = (int) FastMath.max(FastMath.floor(zt - radius), z); - int zUpperBound = (int) FastMath.max(FastMath.floor(zt + radius), zLowerBound); + int zLowerBound = (int) Math.max(Math.floor(zt - radius), z); + int zUpperBound = (int) Math.max(Math.floor(zt + radius), zLowerBound); // Iterate over coordinates within bounds for(int xi = xLowerBound; xi <= xUpperBound; ++xi) { diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts index d575f43d3..8cbbf63e6 100644 --- a/common/addons/config-ore/build.gradle.kts +++ b/common/addons/config-ore/build.gradle.kts @@ -2,10 +2,5 @@ version = version("1.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) } -tasks.named("shadowJar") { - relocate("net.jafama", "com.dfsek.terra.addons.ore.lib.jafama") -} diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java index a1046aea9..224d0b502 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java @@ -7,14 +7,13 @@ package com.dfsek.terra.addons.ore.ores; -import net.jafama.FastMath; - import java.util.Map; import java.util.Random; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.vector.Vector3Int; @@ -50,10 +49,10 @@ public class VanillaOre implements Structure { float f = random.nextFloat() * (float) Math.PI; - double d1 = centerX + 8 + FastMath.sin(f) * size / 8.0F; - double d2 = centerX + 8 - FastMath.sin(f) * size / 8.0F; - double d3 = centerZ + 8 + FastMath.cos(f) * size / 8.0F; - double d4 = centerZ + 8 - FastMath.cos(f) * size / 8.0F; + double d1 = centerX + 8 + MathUtil.sin(f) * size / 8.0F; + double d2 = centerX + 8 - MathUtil.sin(f) * size / 8.0F; + double d3 = centerZ + 8 + MathUtil.cos(f) * size / 8.0F; + double d4 = centerZ + 8 - MathUtil.cos(f) * size / 8.0F; double d5 = centerY + random.nextInt(3) - 2D; double d6 = centerY + random.nextInt(3) - 2D; @@ -62,16 +61,16 @@ public class VanillaOre implements Structure { float iFactor = (float) i / (float) size; double d10 = random.nextDouble() * size / 16.0D; - double d11 = (FastMath.sin(Math.PI * iFactor) + 1.0) * d10 + 1.0; - double d12 = (FastMath.sin(Math.PI * iFactor) + 1.0) * d10 + 1.0; + double d11 = (MathUtil.sin(Math.PI * iFactor) + 1.0) * d10 + 1.0; + double d12 = (MathUtil.sin(Math.PI * iFactor) + 1.0) * d10 + 1.0; - int xStart = FastMath.roundToInt(FastMath.floor(d1 + (d2 - d1) * iFactor - d11 / 2.0D)); - int yStart = FastMath.roundToInt(FastMath.floor(d5 + (d6 - d5) * iFactor - d12 / 2.0D)); - int zStart = FastMath.roundToInt(FastMath.floor(d3 + (d4 - d3) * iFactor - d11 / 2.0D)); + int xStart = (int) Math.round(Math.floor(d1 + (d2 - d1) * iFactor - d11 / 2.0D)); + int yStart = (int) Math.round(Math.floor(d5 + (d6 - d5) * iFactor - d12 / 2.0D)); + int zStart = (int) Math.round(Math.floor(d3 + (d4 - d3) * iFactor - d11 / 2.0D)); - int xEnd = FastMath.roundToInt(FastMath.floor(d1 + (d2 - d1) * iFactor + d11 / 2.0D)); - int yEnd = FastMath.roundToInt(FastMath.floor(d5 + (d6 - d5) * iFactor + d12 / 2.0D)); - int zEnd = FastMath.roundToInt(FastMath.floor(d3 + (d4 - d3) * iFactor + d11 / 2.0D)); + int xEnd = (int) Math.round(Math.floor(d1 + (d2 - d1) * iFactor + d11 / 2.0D)); + int yEnd = (int) Math.round(Math.floor(d5 + (d6 - d5) * iFactor + d12 / 2.0D)); + int zEnd = (int) Math.round(Math.floor(d3 + (d4 - d3) * iFactor + d11 / 2.0D)); for(int x = xStart; x <= xEnd; x++) { double d13 = (x + 0.5D - (d1 + (d2 - d1) * iFactor)) / (d11 / 2.0D); diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts index dad8fff7d..aab2399ea 100644 --- a/common/addons/config-structure/build.gradle.kts +++ b/common/addons/config-structure/build.gradle.kts @@ -3,11 +3,4 @@ version = version("1.0.0") dependencies { api("com.googlecode.json-simple:json-simple:1.1.1") compileOnlyApi(project(":common:addons:manifest-addon-loader")) - - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) -} - -tasks.named("shadowJar") { - relocate("net.jafama", "com.dfsek.terra.addons.structure.lib.jafama") } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java index ab8be10e2..01344af73 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java @@ -7,7 +7,6 @@ package com.dfsek.terra.addons.structure.structures.loot; -import net.jafama.FastMath; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -62,12 +61,12 @@ public class Entry { max = (long) ((JSONObject) loot).get("max"); min = (long) ((JSONObject) loot).get("min"); } - functions.add(new AmountFunction(FastMath.toIntExact(min), FastMath.toIntExact(max))); + functions.add(new AmountFunction(Math.toIntExact(min), Math.toIntExact(max))); } case "minecraft:set_damage", "set_damage" -> { long maxDamage = (long) ((JSONObject) ((JSONObject) function).get("damage")).get("max"); long minDamage = (long) ((JSONObject) ((JSONObject) function).get("damage")).get("min"); - functions.add(new DamageFunction(FastMath.toIntExact(minDamage), FastMath.toIntExact(maxDamage))); + functions.add(new DamageFunction(Math.toIntExact(minDamage), Math.toIntExact(maxDamage))); } case "minecraft:enchant_with_levels", "enchant_with_levels" -> { long maxEnchant = (long) ((JSONObject) ((JSONObject) function).get("levels")).get("max"); @@ -76,7 +75,7 @@ public class Entry { if(((JSONObject) function).containsKey("disabled_enchants")) disabled = (JSONArray) ((JSONObject) function).get("disabled_enchants"); functions.add( - new EnchantFunction(FastMath.toIntExact(minEnchant), FastMath.toIntExact(maxEnchant), disabled, platform)); + new EnchantFunction(Math.toIntExact(minEnchant), Math.toIntExact(maxEnchant), disabled, platform)); } } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java index a807cb4a1..64200dd05 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java @@ -7,7 +7,6 @@ package com.dfsek.terra.addons.structure.structures.loot; -import net.jafama.FastMath; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -37,16 +36,16 @@ public class Pool { entries = new ProbabilityCollection<>(); Object amount = pool.get("rolls"); if(amount instanceof Long) { - max = FastMath.toIntExact((Long) amount); - min = FastMath.toIntExact((Long) amount); + max = Math.toIntExact((Long) amount); + min = Math.toIntExact((Long) amount); } else { - max = FastMath.toIntExact((Long) ((JSONObject) amount).get("max")); - min = FastMath.toIntExact((Long) ((JSONObject) amount).get("min")); + max = Math.toIntExact((Long) ((JSONObject) amount).get("max")); + min = Math.toIntExact((Long) ((JSONObject) amount).get("min")); } for(Object entryJSON : (JSONArray) pool.get("entries")) { Entry entry = new Entry((JSONObject) entryJSON, platform); - entries.add(entry, FastMath.toIntExact(entry.getWeight())); + entries.add(entry, Math.toIntExact(entry.getWeight())); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java index 6f5b4d62d..2e3f4b515 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java @@ -7,7 +7,6 @@ package com.dfsek.terra.addons.structure.structures.loot.functions; -import net.jafama.FastMath; import org.json.simple.JSONArray; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -57,7 +56,7 @@ public class EnchantFunction implements LootFunction { possible.add(ench); } } - int numEnchant = (r.nextInt((int) FastMath.abs(enchant)) / 10 + 1); + int numEnchant = (r.nextInt((int) Math.abs(enchant)) / 10 + 1); Collections.shuffle(possible); ItemMeta meta = original.getItemMeta(); iter: @@ -68,12 +67,12 @@ public class EnchantFunction implements LootFunction { } int lvl = r.nextInt(1 + (int) (((enchant / 40 > 1) ? 1 : enchant / 40) * (chosen.getMaxLevel()))); try { - meta.addEnchantment(chosen, FastMath.max(lvl, 1)); + meta.addEnchantment(chosen, Math.max(lvl, 1)); } catch(IllegalArgumentException e) { LOGGER.warn( "Attempted to enchant {} with {} at level {}, but an unexpected exception occurred! Usually this is caused by a " + "misbehaving enchantment plugin.", - original.getType(), chosen, FastMath.max(lvl, 1)); + original.getType(), chosen, Math.max(lvl, 1)); } } original.setItemMeta(meta); diff --git a/common/addons/library-image/build.gradle.kts b/common/addons/library-image/build.gradle.kts index 6f5d40074..e39ddc12a 100644 --- a/common/addons/library-image/build.gradle.kts +++ b/common/addons/library-image/build.gradle.kts @@ -3,6 +3,6 @@ version = version("1.0.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) + + } diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java index fdcbc701d..9ef07e187 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java @@ -4,20 +4,20 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.function.Supplier; +import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.image.config.ColorLoader; import com.dfsek.terra.addons.image.config.ColorLoader.ColorString; -import com.dfsek.terra.addons.image.config.noisesampler.ChannelNoiseSamplerTemplate; -import com.dfsek.terra.addons.image.config.noisesampler.DistanceTransformNoiseSamplerTemplate; -import com.dfsek.terra.addons.image.config.image.ImageTemplate; -import com.dfsek.terra.addons.image.config.image.StitchedImageTemplate; import com.dfsek.terra.addons.image.config.colorsampler.ConstantColorSamplerTemplate; import com.dfsek.terra.addons.image.config.colorsampler.image.SingleImageColorSamplerTemplate; import com.dfsek.terra.addons.image.config.colorsampler.image.TileImageColorSamplerTemplate; import com.dfsek.terra.addons.image.config.colorsampler.mutate.RotateColorSamplerTemplate; import com.dfsek.terra.addons.image.config.colorsampler.mutate.TranslateColorSamplerTemplate; +import com.dfsek.terra.addons.image.config.image.ImageTemplate; +import com.dfsek.terra.addons.image.config.image.StitchedImageTemplate; +import com.dfsek.terra.addons.image.config.noisesampler.ChannelNoiseSamplerTemplate; +import com.dfsek.terra.addons.image.config.noisesampler.DistanceTransformNoiseSamplerTemplate; import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.operator.DistanceTransform; -import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/image/SingleImageColorSampler.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/image/SingleImageColorSampler.java index 420b0f62f..a66dee104 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/image/SingleImageColorSampler.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/image/SingleImageColorSampler.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addons.image.colorsampler.image; -import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.image.colorsampler.image.transform.ImageTransformation; +import com.dfsek.terra.addons.image.image.Image; public class SingleImageColorSampler implements ColorSampler { diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/image/TileImageColorSampler.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/image/TileImageColorSampler.java index ec03c4941..d9106d6ff 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/image/TileImageColorSampler.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/image/TileImageColorSampler.java @@ -1,10 +1,8 @@ package com.dfsek.terra.addons.image.colorsampler.image; -import net.jafama.FastMath; - -import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.image.colorsampler.image.transform.ImageTransformation; +import com.dfsek.terra.addons.image.image.Image; public class TileImageColorSampler implements ColorSampler { @@ -22,6 +20,6 @@ public class TileImageColorSampler implements ColorSampler { public int apply(int x, int z) { x = transformation.transformX(image, x); z = transformation.transformZ(image, z); - return image.getRGB(FastMath.floorMod(x, image.getWidth()), FastMath.floorMod(z, image.getHeight())); + return image.getRGB(Math.floorMod(x, image.getWidth()), Math.floorMod(z, image.getHeight())); } } diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/mutate/RotateColorSampler.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/mutate/RotateColorSampler.java index 46a449773..8ace7a3ef 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/mutate/RotateColorSampler.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/colorsampler/mutate/RotateColorSampler.java @@ -1,8 +1,7 @@ package com.dfsek.terra.addons.image.colorsampler.mutate; -import net.jafama.FastMath; - import com.dfsek.terra.addons.image.colorsampler.ColorSampler; +import com.dfsek.terra.api.util.MathUtil; public class RotateColorSampler implements ColorSampler { @@ -29,7 +28,7 @@ public class RotateColorSampler implements ColorSampler { else rotationMethod = RotationMethod.RAD_ANY; - this.radians = FastMath.toRadians(degrees); + this.radians = Math.toRadians(degrees); } @Override @@ -39,14 +38,14 @@ public class RotateColorSampler implements ColorSampler { case DEG_90 -> -z; case DEG_180 -> -x; case DEG_270 -> z; - case RAD_ANY -> (int) (x * FastMath.cos(radians) - z * FastMath.sin(radians)); + case RAD_ANY -> (int) (x * MathUtil.cos(radians) - z * MathUtil.sin(radians)); }; int rz = switch(rotationMethod) { case DEG_0 -> z; case DEG_90 -> x; case DEG_180 -> -z; case DEG_270 -> -x; - case RAD_ANY -> (int) (z * FastMath.cos(radians) + x * FastMath.sin(radians)); + case RAD_ANY -> (int) (z * MathUtil.cos(radians) + x * MathUtil.sin(radians)); }; return sampler.apply(rx, rz); } diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/colorsampler/image/ImageColorSamplerTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/colorsampler/image/ImageColorSamplerTemplate.java index 3b9e6fe37..2053b53fe 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/colorsampler/image/ImageColorSamplerTemplate.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/colorsampler/image/ImageColorSamplerTemplate.java @@ -4,9 +4,9 @@ import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.colorsampler.ColorSampler; import com.dfsek.terra.addons.image.colorsampler.image.transform.Alignment; +import com.dfsek.terra.addons.image.image.Image; public abstract class ImageColorSamplerTemplate implements ObjectTemplate { diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java index 626380720..a7fbe1194 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java @@ -1,7 +1,5 @@ package com.dfsek.terra.addons.image.operator; -import net.jafama.FastMath; - import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.util.ColorUtil; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; @@ -115,7 +113,7 @@ public class DistanceTransform { row[x] = d[x][y]; row = calculateDistance1D(row); for(int x = 0; x < f[0].length; x++) { - d[x][y] = FastMath.sqrt(row[x]); + d[x][y] = Math.sqrt(row[x]); } } return d; @@ -130,10 +128,10 @@ public class DistanceTransform { z[0] = Integer.MIN_VALUE; z[1] = Integer.MAX_VALUE; for(int q = 1; q <= f.length-1; q++) { - double s = ((f[q]+FastMath.pow2(q))-(f[v[k]]+FastMath.pow2(v[k])))/(2*q-2*v[k]); + double s = ((f[q]+Math.pow(q, 2))-(f[v[k]]+Math.pow(v[k], 2)))/(2*q-2*v[k]); while (s <= z[k]) { k--; - s = ((f[q]+FastMath.pow2(q))-(f[v[k]]+FastMath.pow2(v[k])))/(2*q-2*v[k]); + s = ((f[q]+Math.pow(q, 2))-(f[v[k]]+Math.pow(v[k], 2)))/(2*q-2*v[k]); } k++; v[k] = q; @@ -145,7 +143,7 @@ public class DistanceTransform { for(int q = 0; q <= f.length-1; q++) { while(z[k+1] < q) k++; - d[q] = FastMath.pow2(q-v[k]) + f[v[k]]; + d[q] = Math.pow(q-v[k], 2) + f[v[k]]; } return d; } @@ -166,9 +164,9 @@ public class DistanceTransform { yield lerp(distances[x][y], minDistance, -1, maxDistance, 1); } else { if(d > 0) { - yield FastMath.pow2(d/maxDistance); + yield Math.pow(d/maxDistance, 2); } else if(d < 0) { - yield -FastMath.pow2(d/minDistance); + yield -Math.pow(d/minDistance, 2); } else { yield 0; } @@ -231,7 +229,7 @@ public class DistanceTransform { @Override public double noise(long seed, double x, double y) { if(x<0 || y<0 || x>=transform.width || y>=transform.height) return transform.minDistance; - return transform.distances[FastMath.floorToInt(x)][FastMath.floorToInt(y)]; + return transform.distances[(int) Math.floor(x)][(int) Math.floor(y)]; } @Override diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/util/ColorUtil.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/util/ColorUtil.java index 0c52ea5a6..6e76cd72e 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/util/ColorUtil.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/util/ColorUtil.java @@ -1,8 +1,5 @@ package com.dfsek.terra.addons.image.util; -import net.jafama.FastMath; - - /** * Utility class for manipulating 8 bit ARGB colors */ @@ -11,9 +8,9 @@ public class ColorUtil { private ColorUtil() {} public static int distance(int a, int b) { - return FastMath.abs(getRed(a) - getRed(b)) + - FastMath.abs(getGreen(a) - getGreen(b)) + - FastMath.abs(getBlue(a) - getBlue(b)); + return Math.abs(getRed(a) - getRed(b)) + + Math.abs(getGreen(a) - getGreen(b)) + + Math.abs(getBlue(a) - getBlue(b)); } /** diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts index 18d4019b9..7a6884eda 100644 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ b/common/addons/structure-terrascript-loader/build.gradle.kts @@ -5,11 +5,4 @@ version = version("1.1.0") dependencies { api("commons-io:commons-io:2.7") compileOnlyApi(project(":common:addons:manifest-addon-loader")) - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) } - -tasks.named("shadowJar") { - relocate("org.apache.commons", "com.dfsek.terra.addons.terrascript.lib.commons") - relocate("net.jafama", "com.dfsek.terra.addons.terrascript.lib.jafama") -} \ No newline at end of file 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 511c486bd..951bb261c 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,8 +1,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang; -import net.jafama.FastMath; - import java.util.HashMap; import java.util.Map; @@ -102,21 +100,21 @@ public class Scope { } private void updateBoolSize(int size) { - this.boolSize = FastMath.max(boolSize, size); + this.boolSize = Math.max(boolSize, size); if(parent != null) { parent.updateBoolSize(size); } } private void updateNumSize(int size) { - this.numSize = FastMath.max(numSize, size); + this.numSize = Math.max(numSize, size); if(parent != null) { parent.updateNumSize(size); } } private void updateStrSize(int size) { - this.strSize = FastMath.max(strSize, size); + this.strSize = Math.max(strSize, size); if(parent != null) { parent.updateStrSize(size); } 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 f402e4862..1e96a9b0f 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,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import net.jafama.FastMath; - 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; @@ -40,7 +38,7 @@ public class EqualsStatement extends BinaryOperation { Object leftValue = left.apply(implementationArguments, scope); Object rightValue = right.apply(implementationArguments, scope); if(leftValue instanceof Number l && rightValue instanceof Number r) { - return FastMath.abs(l.doubleValue() - r.doubleValue()) <= EPSILON; + return Math.abs(l.doubleValue() - r.doubleValue()) <= EPSILON; } return leftValue.equals(rightValue); 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 3241c8657..44eae0ef2 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,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import net.jafama.FastMath; - 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; @@ -33,7 +31,7 @@ public class NotEqualsStatement extends BinaryOperation { Object leftValue = left.apply(implementationArguments, scope); Object rightValue = right.apply(implementationArguments, scope); if(leftValue instanceof Number l && rightValue instanceof Number r) { - return FastMath.abs(l.doubleValue() - r.doubleValue()) > EPSILON; + return Math.abs(l.doubleValue() - r.doubleValue()) > EPSILON; } return !leftValue.equals(rightValue); 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 e865d0d6d..1a70cf4b8 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,7 +7,6 @@ package com.dfsek.terra.addons.terrascript.script; -import net.jafama.FastMath; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,6 +43,7 @@ import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.key.RegistryKey; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.vector.Vector3Int; import com.dfsek.terra.api.world.WritableWorld; @@ -100,25 +100,25 @@ public class StructureScript implements Structure, Keyed { Returnable.ReturnType.NUMBER)) .registerFunction("print", new UnaryStringFunctionBuilder(string -> LOGGER.info("[TerraScript:{}] {}", id, string))) - .registerFunction("abs", new UnaryNumberFunctionBuilder(number -> FastMath.abs(number.doubleValue()))) - .registerFunction("pow2", new UnaryNumberFunctionBuilder(number -> FastMath.pow2(number.doubleValue()))) + .registerFunction("abs", new UnaryNumberFunctionBuilder(number -> Math.abs(number.doubleValue()))) + .registerFunction("pow2", new UnaryNumberFunctionBuilder(number -> Math.pow(number.doubleValue(), 2))) .registerFunction("pow", new BinaryNumberFunctionBuilder( - (number, number2) -> FastMath.pow(number.doubleValue(), number2.doubleValue()))) - .registerFunction("sqrt", new UnaryNumberFunctionBuilder(number -> FastMath.sqrt(number.doubleValue()))) - .registerFunction("floor", new UnaryNumberFunctionBuilder(number -> FastMath.floor(number.doubleValue()))) - .registerFunction("ceil", new UnaryNumberFunctionBuilder(number -> FastMath.ceil(number.doubleValue()))) - .registerFunction("log", new UnaryNumberFunctionBuilder(number -> FastMath.log(number.doubleValue()))) - .registerFunction("round", new UnaryNumberFunctionBuilder(number -> FastMath.round(number.doubleValue()))) - .registerFunction("sin", new UnaryNumberFunctionBuilder(number -> FastMath.sin(number.doubleValue()))) - .registerFunction("cos", new UnaryNumberFunctionBuilder(number -> FastMath.cos(number.doubleValue()))) - .registerFunction("tan", new UnaryNumberFunctionBuilder(number -> FastMath.tan(number.doubleValue()))) - .registerFunction("asin", new UnaryNumberFunctionBuilder(number -> FastMath.asin(number.doubleValue()))) - .registerFunction("acos", new UnaryNumberFunctionBuilder(number -> FastMath.acos(number.doubleValue()))) - .registerFunction("atan", new UnaryNumberFunctionBuilder(number -> FastMath.atan(number.doubleValue()))) + (number, number2) -> Math.pow(number.doubleValue(), number2.doubleValue()))) + .registerFunction("sqrt", new UnaryNumberFunctionBuilder(number -> Math.sqrt(number.doubleValue()))) + .registerFunction("floor", new UnaryNumberFunctionBuilder(number -> Math.floor(number.doubleValue()))) + .registerFunction("ceil", new UnaryNumberFunctionBuilder(number -> Math.ceil(number.doubleValue()))) + .registerFunction("log", new UnaryNumberFunctionBuilder(number -> Math.log(number.doubleValue()))) + .registerFunction("round", new UnaryNumberFunctionBuilder(number -> Math.round(number.doubleValue()))) + .registerFunction("sin", new UnaryNumberFunctionBuilder(number -> MathUtil.sin(number.doubleValue()))) + .registerFunction("cos", new UnaryNumberFunctionBuilder(number -> MathUtil.cos(number.doubleValue()))) + .registerFunction("tan", new UnaryNumberFunctionBuilder(number -> Math.tan(number.doubleValue()))) + .registerFunction("asin", new UnaryNumberFunctionBuilder(number -> Math.asin(number.doubleValue()))) + .registerFunction("acos", new UnaryNumberFunctionBuilder(number -> Math.acos(number.doubleValue()))) + .registerFunction("atan", new UnaryNumberFunctionBuilder(number -> Math.atan(number.doubleValue()))) .registerFunction("max", new BinaryNumberFunctionBuilder( - (number, number2) -> FastMath.max(number.doubleValue(), number2.doubleValue()))) + (number, number2) -> Math.max(number.doubleValue(), number2.doubleValue()))) .registerFunction("min", new BinaryNumberFunctionBuilder( - (number, number2) -> FastMath.min(number.doubleValue(), number2.doubleValue()))); + (number, number2) -> Math.min(number.doubleValue(), number2.doubleValue()))); if(!platform.getTerraConfig().isDebugScript()) { parser.ignoreFunction("debugBlock"); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java index 452b9f43b..865cad586 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import net.jafama.FastMath; - 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; @@ -48,9 +46,9 @@ public class BiomeFunction implements Function { return grid.getBiome(arguments.getOrigin() .toVector3() .mutable() - .add(Vector3.of(FastMath.roundToInt(xz.getX()), + .add(Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - FastMath.roundToInt(xz.getZ()))).immutable(), arguments.getWorld().getSeed()).getID(); + (int) Math.round(xz.getZ()))).immutable(), arguments.getWorld().getSeed()).getID(); } @Override diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java index 7997a15aa..85be45515 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java @@ -7,7 +7,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import net.jafama.FastMath; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -73,9 +72,9 @@ public class BlockFunction implements Function { Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), z.apply(implementationArguments, scope).doubleValue()), arguments.getRotation()); try { - Vector3.Mutable set = Vector3.of(FastMath.roundToInt(xz.getX()), + Vector3.Mutable set = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).doubleValue(), - FastMath.roundToInt(xz.getZ())).mutable().add(arguments.getOrigin()); + (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin()); BlockState current = arguments.getWorld().getBlockState(set); if(overwrite.apply(implementationArguments, scope) || current.isAir()) { arguments.getWorld().setBlockState(set, rot, physics.apply(implementationArguments, scope)); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java index d2fddf169..ef3518462 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import net.jafama.FastMath; - 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; @@ -45,9 +43,9 @@ public class CheckBlockFunction implements Function { .getBlockState(arguments.getOrigin() .toVector3() .mutable() - .add(Vector3.of(FastMath.roundToInt(xz.getX()), + .add(Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope) - .doubleValue(), FastMath.roundToInt(xz.getZ())))) + .doubleValue(), (int) Math.round(xz.getZ())))) .getAsString(); if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties else return data; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java index 09e735665..d29b900bf 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import net.jafama.FastMath; - 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; @@ -37,9 +35,9 @@ public class GetMarkFunction implements Function { Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), z.apply(implementationArguments, scope).doubleValue()), arguments.getRotation()); - String mark = arguments.getMark(Vector3.of(FastMath.floorToInt(xz.getX()), FastMath.floorToInt( + String mark = arguments.getMark(Vector3.of((int) Math.floor(xz.getX()), (int) Math.floor( y.apply(implementationArguments, scope).doubleValue()), - FastMath.floorToInt(xz.getZ())) + (int) Math.floor(xz.getZ())) .mutable() .add(arguments.getOrigin()) .immutable()); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java index ebadb9288..17808f8a0 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java @@ -7,7 +7,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import net.jafama.FastMath; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,10 +65,10 @@ public class LootFunction implements Function { registry.get(RegistryKey.parse(id)) .ifPresentOrElse(table -> { - Vector3 apply = Vector3.of(FastMath.roundToInt(xz.getX()), + Vector3 apply = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope) .intValue(), - FastMath.roundToInt(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); + (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); try { BlockEntity data = arguments.getWorld().getBlockEntity(apply); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java index 70fbbafc5..26511fd85 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import net.jafama.FastMath; - import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -46,8 +44,8 @@ public class PullFunction implements Function { Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.apply(implementationArguments, scope).doubleValue(), z.apply(implementationArguments, scope).doubleValue()), arguments.getRotation()); - Vector3.Mutable mutable = Vector3.of(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, scope).intValue(), - FastMath.roundToInt(xz.getZ())).mutable().add(arguments.getOrigin()); + Vector3.Mutable mutable = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), + (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin()); while(mutable.getY() > arguments.getWorld().getMinHeight()) { if(!arguments.getWorld().getBlockState(mutable).isAir()) { arguments.getWorld().setBlockState(mutable, data); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java index 43a7436b9..1ab0782ee 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import net.jafama.FastMath; - 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; @@ -40,10 +38,10 @@ public class SetMarkFunction implements Function { z.apply(implementationArguments, scope).doubleValue()), arguments.getRotation()); - arguments.setMark(Vector3.of(FastMath.floorToInt(xz.getX()), - FastMath.floorToInt( + arguments.setMark(Vector3.of((int) Math.floor(xz.getX()), + (int) Math.floor( y.apply(implementationArguments, scope).doubleValue()), - FastMath.floorToInt(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(), + (int) Math.floor(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(), mark.apply(implementationArguments, scope)); return null; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java index 6ccbe1a80..1d0e899bf 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java @@ -7,7 +7,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import net.jafama.FastMath; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,8 +44,8 @@ public class StateFunction implements Function { z.apply(implementationArguments, scope).doubleValue()), arguments.getRotation()); - Vector3 origin = Vector3.of(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, scope).intValue(), - FastMath.roundToInt(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); + Vector3 origin = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), + (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); try { BlockEntity state = arguments.getWorld().getBlockEntity(origin); state.applyState(data.apply(implementationArguments, scope)); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java index 51fb47054..1ec4886f5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java @@ -7,7 +7,6 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import net.jafama.FastMath; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -79,17 +78,17 @@ public class StructureFunction implements Function { if(script instanceof StructureScript structureScript) { return structureScript.generate(arguments.getOrigin(), arguments.getWorld() - .buffer(FastMath.roundToInt(xz.getX()), + .buffer((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - FastMath.roundToInt(xz.getZ())), + (int) Math.round(xz.getZ())), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); } return script.generate(arguments.getOrigin(), arguments.getWorld() - .buffer(FastMath.roundToInt(xz.getX()), + .buffer((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - FastMath.roundToInt(xz.getZ())), + (int) Math.round(xz.getZ())), arguments.getRandom(), arguments.getRotation().rotate(rotation1)); }).orElseGet(() -> { diff --git a/common/addons/terrascript-function-check-noise-3d/build.gradle.kts b/common/addons/terrascript-function-check-noise-3d/build.gradle.kts index 51bb33cf6..bb694d2c6 100644 --- a/common/addons/terrascript-function-check-noise-3d/build.gradle.kts +++ b/common/addons/terrascript-function-check-noise-3d/build.gradle.kts @@ -4,11 +4,4 @@ dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) compileOnlyApi(project(":common:addons:chunk-generator-noise-3d")) compileOnlyApi(project(":common:addons:structure-terrascript-loader")) - - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) - testImplementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) -} - -tasks.named("shadowJar") { - relocate("net.jafama", "com.dfsek.terra.addon.terrascript.check.lib.jafama") -} +} \ No newline at end of file diff --git a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java index 1dfb1d293..b1a5e6024 100644 --- a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java +++ b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java @@ -7,8 +7,6 @@ package com.dfsek.terra.addon.terrascript.check; -import net.jafama.FastMath; - import com.dfsek.terra.addons.chunkgenerator.generation.NoiseChunkGenerator3D; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.SamplerProvider; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; @@ -49,8 +47,8 @@ public class CheckFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); Vector3 location = arguments.getOrigin().toVector3Mutable().add( - Vector3.of(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, scope).doubleValue(), - FastMath.roundToInt(xz.getZ()))).immutable(); + Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).doubleValue(), + (int) Math.round(xz.getZ()))).immutable(); return apply(location, arguments.getWorld()); } @@ -82,8 +80,8 @@ public class CheckFunction implements Function { } private double sample(double x, double y, double z, SamplerProvider cache, World world) { - int cx = FastMath.floorDiv((int) x, 16); - int cz = FastMath.floorDiv((int) z, 16); + int cx = Math.floorDiv((int) x, 16); + int cz = Math.floorDiv((int) z, 16); return cache.getChunk(cx, cz, world, world.getBiomeProvider()).sample(x - (cx << 4), y, z - (cz << 4)); } } diff --git a/common/api/build.gradle.kts b/common/api/build.gradle.kts index 2fce99b17..bdcdd3901 100644 --- a/common/api/build.gradle.kts +++ b/common/api/build.gradle.kts @@ -7,5 +7,5 @@ dependencies { api("com.dfsek.tectonic", "common", Versions.Libraries.tectonic) api("com.github.ben-manes.caffeine:caffeine:3.1.0") - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) + } \ No newline at end of file diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java b/common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java index 5849d09a6..405fdab28 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/ConstantRange.java @@ -7,7 +7,6 @@ package com.dfsek.terra.api.util; -import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; import java.util.Iterator; @@ -44,7 +43,7 @@ public class ConstantRange implements Range { @Override public Range intersects(Range other) { try { - return new ConstantRange(FastMath.max(this.getMin(), other.getMin()), FastMath.min(this.getMax(), other.getMax())); + return new ConstantRange(Math.max(this.getMin(), other.getMin()), Math.min(this.getMax(), other.getMax())); } catch(IllegalArgumentException e) { return null; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java index 3c95df139..f4122e694 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/MathUtil.java @@ -7,8 +7,6 @@ package com.dfsek.terra.api.util; -import net.jafama.FastMath; - import java.util.List; @@ -16,11 +14,58 @@ import java.util.List; * Utility class for mathematical functions. */ public final class MathUtil { + private static final int SIN_BITS, SIN_MASK, SIN_COUNT; + private static final double radFull, radToIndex; + private static final double degFull, degToIndex; + private static final double[] sin, cos; + + static { + SIN_BITS = 12; + SIN_MASK = ~(-1 << SIN_BITS); + SIN_COUNT = SIN_MASK + 1; + + radFull = Math.PI * 2.0; + degFull = 360.0; + radToIndex = SIN_COUNT / radFull; + degToIndex = SIN_COUNT / degFull; + + sin = new double[SIN_COUNT]; + cos = new double[SIN_COUNT]; + + for (int i = 0; i < SIN_COUNT; i++) { + sin[i] = Math.sin((i + 0.5f) / SIN_COUNT * radFull); + cos[i] = Math.cos((i + 0.5f) / SIN_COUNT * radFull); + } + + // Four cardinal directions (credits: Nate) + for (int i = 0; i < 360; i += 90) { + sin[(int) (i * degToIndex) & SIN_MASK] = Math.sin(i * Math.PI / 180.0); + cos[(int) (i * degToIndex) & SIN_MASK] = Math.cos(i * Math.PI / 180.0); + } + } + /** * Epsilon for fuzzy floating point comparisons. */ public static final double EPSILON = 1.0E-5; + public static double sin(double rad) { + return sin[(int) (rad * radToIndex) & SIN_MASK]; + } + + public static double cos(double rad) { + return cos[(int) (rad * radToIndex) & SIN_MASK]; + } + + public static double invSqrt(double x) { + double xhalf = 0.5d * x; + long i = Double.doubleToLongBits(x); + i = 0x5fe6ec85e7de30daL - (i >> 1); + x = Double.longBitsToDouble(i); + x *= (1.5d - xhalf * x * x); + return x; + } + /** * Gets the standard deviation of an array of doubles. * @@ -39,10 +84,10 @@ public final class MathUtil { double mean = sum / length; for(Number num : numArray) { - standardDeviation += FastMath.pow2(num.doubleValue() - mean); + standardDeviation += Math.pow(num.doubleValue() - mean, 2); } - return FastMath.sqrt(standardDeviation / length); + return Math.sqrt(standardDeviation / length); } public static long hashToLong(String s) { @@ -65,11 +110,11 @@ public final class MathUtil { * @return Whether these values are equal */ public static boolean equals(double a, double b) { - return a == b || FastMath.abs(a - b) < EPSILON; + return a == b || Math.abs(a - b) < EPSILON; } public static int normalizeIndex(double val, int size) { - return FastMath.max(FastMath.min(FastMath.floorToInt(((val + 1D) / 2D) * size), size - 1), 0); + return Math.max(Math.min((int)Math.floor(((val + 1D) / 2D) * size), size - 1), 0); } public static long squash(int first, int last) { @@ -84,11 +129,11 @@ public final class MathUtil { * @return Clamped value */ public static double clamp(double in) { - return FastMath.min(FastMath.max(in, -1), 1); + return Math.min(Math.max(in, -1), 1); } public static int clamp(int min, int i, int max) { - return FastMath.max(FastMath.min(i, max), min); + return Math.max(Math.min(i, max), min); } /** @@ -115,7 +160,7 @@ public final class MathUtil { q = p - 0.5; - if(FastMath.abs(q) <= .425) { + if(Math.abs(q) <= .425) { r = .180625 - q * q; val = q * (((((((r * 2509.0809287301226727 + @@ -134,7 +179,7 @@ public final class MathUtil { r = p; } - r = FastMath.sqrt(-FastMath.log(r)); + r = Math.sqrt(-Math.log(r)); if(r <= 5) { r -= 1.6; @@ -173,4 +218,37 @@ public final class MathUtil { return mu + sigma * val; } + + /** + * Murmur64 hashing function + * + * @param h Input value + * + * @return Hashed value + */ + public static long murmur64(long h) { + h ^= h >>> 33; + h *= 0xff51afd7ed558ccdL; + h ^= h >>> 33; + h *= 0xc4ceb9fe1a85ec53L; + h ^= h >>> 33; + return h; + } + + public static double lerp(double a, double b, double t) { + return a + t * (b - a); + } + + public static double cubicLerp(double a, double b, double c, double d, double t) { + double p = (d - c) - (a - b); + return t * t * t * p + t * t * ((a - b) - p) + t * (c - a) + b; + } + + public static double interpHermite(double t) { + return t * t * (3 - 2 * t); + } + + public static double interpQuintic(double t) { + return t * t * t * (t * (t * 6 - 15) + 10); + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/Rotation.java b/common/api/src/main/java/com/dfsek/terra/api/util/Rotation.java index 4d43b1732..20b37881b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/Rotation.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/Rotation.java @@ -7,9 +7,6 @@ package com.dfsek.terra.api.util; -import net.jafama.FastMath; - - public enum Rotation { CW_90(90), @@ -23,7 +20,7 @@ public enum Rotation { } public static Rotation fromDegrees(int deg) { - return switch(FastMath.floorMod(deg, 360)) { + return switch(Math.floorMod(deg, 360)) { case 0 -> Rotation.NONE; case 90 -> Rotation.CW_90; case 180 -> Rotation.CW_180; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java b/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java index f5d5863c6..f85344849 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java @@ -51,25 +51,25 @@ public class ProbabilityCollection implements Collection { @SuppressWarnings("unchecked") public E get(NoiseSampler n, double x, double y, double z, long seed) { if(array.length == 0) return null; - return (E) array[MathUtil.normalizeIndex(n.noise(seed, x, y, z), array.length)]; + return (E) array[(int) MathUtil.normalizeIndex(n.noise(seed, x, y, z), array.length)]; } @SuppressWarnings("unchecked") public E get(NoiseSampler n, Vector3Int vector3Int, long seed) { if(array.length == 0) return null; - return (E) array[MathUtil.normalizeIndex(n.noise(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), array.length)]; + return (E) array[(int) MathUtil.normalizeIndex(n.noise(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), array.length)]; } @SuppressWarnings("unchecked") public E get(NoiseSampler n, Vector3 vector3Int, long seed) { if(array.length == 0) return null; - return (E) array[MathUtil.normalizeIndex(n.noise(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), array.length)]; + return (E) array[(int) MathUtil.normalizeIndex(n.noise(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), array.length)]; } @SuppressWarnings("unchecked") public E get(NoiseSampler n, double x, double z, long seed) { if(array.length == 0) return null; - return (E) array[MathUtil.normalizeIndex(n.noise(seed, x, z), array.length)]; + return (E) array[(int) MathUtil.normalizeIndex(n.noise(seed, x, z), array.length)]; } @SuppressWarnings("unchecked") diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java index 5dc1e8f1c..057ab22aa 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java @@ -7,8 +7,6 @@ package com.dfsek.terra.api.util.vector; -import net.jafama.FastMath; - import com.dfsek.terra.api.util.MathUtil; @@ -41,7 +39,7 @@ public class Vector2 { * @return length */ public double length() { - return FastMath.sqrt(lengthSquared()); + return Math.sqrt(lengthSquared()); } /** @@ -61,7 +59,7 @@ public class Vector2 { * @return Distance between vectors */ public double distance(Vector2 other) { - return FastMath.sqrt(distanceSquared(other)); + return Math.sqrt(distanceSquared(other)); } /** @@ -102,11 +100,11 @@ public class Vector2 { public int getBlockX() { - return FastMath.floorToInt(x); + return (int) Math.floor(x); } public int getBlockZ() { - return FastMath.floorToInt(z); + return (int) Math.floor(z); } @Override @@ -166,7 +164,7 @@ public class Vector2 { * @return length */ public double length() { - return FastMath.sqrt(lengthSquared()); + return Math.sqrt(lengthSquared()); } /** diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java index b5c45ca61..1c024eaf1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java @@ -7,7 +7,6 @@ package com.dfsek.terra.api.util.vector; -import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; import com.dfsek.terra.api.util.MathUtil; @@ -33,11 +32,11 @@ public class Vector3 { } public double length() { - return FastMath.sqrt(lengthSquared()); + return Math.sqrt(lengthSquared()); } public double inverseLength() { - return FastMath.invSqrtQuick(lengthSquared()); + return MathUtil.invSqrt(lengthSquared()); } /** @@ -52,7 +51,7 @@ public class Vector3 { * @return the distance */ public double distance(@NotNull Vector3 o) { - return FastMath.sqrt(FastMath.pow2(x - o.getX()) + FastMath.pow2(y - o.getY()) + FastMath.pow2(z - o.getZ())); + return Math.sqrt(Math.pow(x - o.getX(), 2) + Math.pow(y - o.getY(), 2) + Math.pow(z - o.getZ(), 2)); } /** @@ -63,7 +62,7 @@ public class Vector3 { * @return the distance */ public double distanceSquared(@NotNull Vector3 o) { - return FastMath.pow2(x - o.getX()) + FastMath.pow2(y - o.getY()) + FastMath.pow2(z - o.getZ()); + return Math.pow(x - o.getX(), 2) + Math.pow(y - o.getY(), 2) + Math.pow(z - o.getZ(), 2); } /** @@ -94,15 +93,15 @@ public class Vector3 { public int getBlockX() { - return FastMath.floorToInt(x); + return (int) Math.floor(x); } public int getBlockY() { - return FastMath.floorToInt(y); + return (int) Math.floor(y); } public int getBlockZ() { - return FastMath.floorToInt(z); + return (int) Math.floor(z); } /** @@ -201,11 +200,11 @@ public class Vector3 { } public double length() { - return FastMath.sqrt(lengthSquared()); + return Math.sqrt(lengthSquared()); } public double inverseLength() { - return FastMath.invSqrtQuick(lengthSquared()); + return MathUtil.invSqrt(lengthSquared()); } public Mutable normalize() { @@ -323,8 +322,8 @@ public class Vector3 { double x = getX(), y = getY(), z = getZ(); double x2 = axis.getX(), y2 = axis.getY(), z2 = axis.getZ(); - double cosTheta = Math.cos(angle); - double sinTheta = Math.sin(angle); + double cosTheta = MathUtil.cos(angle); + double sinTheta = MathUtil.sin(angle); double dotProduct = this.dot(axis); double xPrime = x2 * dotProduct * (1d - cosTheta) @@ -355,8 +354,8 @@ public class Vector3 { */ @NotNull public Mutable rotateAroundX(double angle) { - double angleCos = Math.cos(angle); - double angleSin = Math.sin(angle); + double angleCos = MathUtil.cos(angle); + double angleSin = MathUtil.sin(angle); double y = angleCos * getY() - angleSin * getZ(); double z = angleSin * getY() + angleCos * getZ(); @@ -378,8 +377,8 @@ public class Vector3 { */ @NotNull public Mutable rotateAroundY(double angle) { - double angleCos = Math.cos(angle); - double angleSin = Math.sin(angle); + double angleCos = MathUtil.cos(angle); + double angleSin = MathUtil.sin(angle); double x = angleCos * getX() + angleSin * getZ(); double z = -angleSin * getX() + angleCos * getZ(); @@ -401,8 +400,8 @@ public class Vector3 { */ @NotNull public Mutable rotateAroundZ(double angle) { - double angleCos = Math.cos(angle); - double angleSin = Math.sin(angle); + double angleCos = MathUtil.cos(angle); + double angleSin = MathUtil.sin(angle); double x = angleCos * getX() - angleSin * getY(); double y = angleSin * getX() + angleCos * getY(); @@ -420,15 +419,15 @@ public class Vector3 { } public int getBlockX() { - return FastMath.floorToInt(x); + return (int) Math.floor(x); } public int getBlockY() { - return FastMath.floorToInt(y); + return (int) Math.floor(y); } public int getBlockZ() { - return FastMath.floorToInt(z); + return (int) Math.floor(z); } } } diff --git a/common/implementation/base/build.gradle.kts b/common/implementation/base/build.gradle.kts index 1910484f0..75ebf671e 100644 --- a/common/implementation/base/build.gradle.kts +++ b/common/implementation/base/build.gradle.kts @@ -9,7 +9,7 @@ dependencies { implementation("org.apache.commons", "commons-text", Versions.Libraries.Internal.apacheText) implementation("com.dfsek.tectonic", "yaml", Versions.Libraries.tectonic) - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) + implementation("com.dfsek", "paralithic", Versions.Libraries.paralithic) } diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java index ca40d6b90..5093a0263 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java @@ -23,16 +23,13 @@ import com.dfsek.tectonic.api.depth.DepthTracker; import com.dfsek.tectonic.api.exception.LoadException; import com.dfsek.tectonic.api.loader.ConfigLoader; import com.dfsek.tectonic.api.loader.type.TypeLoader; - import com.dfsek.tectonic.impl.MapConfiguration; - -import com.dfsek.terra.api.config.meta.Meta; - import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; import java.util.Map; +import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.util.ConstantRange; import com.dfsek.terra.api.util.Range; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java index 8a6b17bdd..f3235d65a 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java @@ -20,7 +20,6 @@ package com.dfsek.terra.bukkit.generator; import org.bukkit.World; import org.bukkit.generator.BiomeProvider; import org.bukkit.generator.BlockPopulator; -import org.bukkit.generator.LimitedRegion; import org.bukkit.generator.WorldInfo; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -29,14 +28,12 @@ import org.slf4j.LoggerFactory; import java.util.List; import java.util.Random; -import java.util.stream.Collectors; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.util.GeneratorWrapper; import com.dfsek.terra.api.world.info.WorldProperties; -import com.dfsek.terra.bukkit.world.BukkitProtoWorld; import com.dfsek.terra.bukkit.world.BukkitWorldProperties; diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitProtoWorld.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitProtoWorld.java index d6316325d..d634eedba 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitProtoWorld.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitProtoWorld.java @@ -1,7 +1,5 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.bukkit.util.BukkitUtils; - import org.bukkit.Location; import org.bukkit.block.data.BlockData; import org.bukkit.generator.LimitedRegion; @@ -23,6 +21,7 @@ import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.ProtoWorld; import com.dfsek.terra.bukkit.BukkitEntity; import com.dfsek.terra.bukkit.generator.BukkitChunkGeneratorWrapper; +import com.dfsek.terra.bukkit.util.BukkitUtils; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import com.dfsek.terra.bukkit.world.block.state.BukkitBlockEntity; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; diff --git a/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSChunkGeneratorDelegate.java b/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSChunkGeneratorDelegate.java index 395ea949c..284eff2b1 100644 --- a/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSChunkGeneratorDelegate.java +++ b/platforms/bukkit/nms/v1_18_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_18_R2/NMSChunkGeneratorDelegate.java @@ -42,6 +42,7 @@ import java.util.concurrent.Executor; import java.util.stream.Collectors; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.generic.Lazy; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.info.WorldProperties; @@ -215,8 +216,8 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { for(int j1 = 0; j1 < j; ++j1) { double d1 = (double) (4 * i + i * i1 * 6) + (random.nextDouble() - 0.5D) * (double) i * 2.5D; - int k1 = (int) Math.round(Math.cos(d0) * d1); - int l1 = (int) Math.round(Math.sin(d0) * d1); + int k1 = (int) Math.round(MathUtil.cos(d0) * d1); + int l1 = (int) Math.round(MathUtil.sin(d0) * d1); int i2 = SectionPos.sectionToBlockCoord(k1, 8); int j2 = SectionPos.sectionToBlockCoord(l1, 8); diff --git a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSChunkGeneratorDelegate.java b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSChunkGeneratorDelegate.java index c35bae020..ea8b2267d 100644 --- a/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSChunkGeneratorDelegate.java +++ b/platforms/bukkit/nms/v1_19_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R1/NMSChunkGeneratorDelegate.java @@ -1,11 +1,5 @@ package com.dfsek.terra.bukkit.nms.v1_19_R1; -import com.dfsek.terra.bukkit.config.PreLoadCompatibilityOptions; - -import com.dfsek.terra.bukkit.world.BukkitWorldProperties; - -import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; - import com.mojang.datafixers.util.Pair; import com.mojang.serialization.Codec; import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap; @@ -24,12 +18,9 @@ import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeManager; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.Beardifier; -import net.minecraft.world.level.levelgen.DensityFunction; -import net.minecraft.world.level.levelgen.DensityFunction.FunctionContext; import net.minecraft.world.level.levelgen.DensityFunction.SinglePointContext; import net.minecraft.world.level.levelgen.GenerationStep.Carving; import net.minecraft.world.level.levelgen.Heightmap.Types; @@ -55,9 +46,13 @@ import java.util.concurrent.Executor; import java.util.stream.Stream; import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.generic.Lazy; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.info.WorldProperties; +import com.dfsek.terra.bukkit.config.PreLoadCompatibilityOptions; +import com.dfsek.terra.bukkit.world.BukkitWorldProperties; +import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; public class NMSChunkGeneratorDelegate extends ChunkGenerator { @@ -262,8 +257,8 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { for(int j1 = 0; j1 < j; ++j1) { double d1 = (double) (4 * i + i * i1 * 6) + (randomsource.nextDouble() - 0.5D) * (double) i * 2.5D; - int k1 = (int) Math.round(Math.cos(d0) * d1); - int l1 = (int) Math.round(Math.sin(d0) * d1); + int k1 = (int) Math.round(MathUtil.cos(d0) * d1); + int l1 = (int) Math.round(MathUtil.sin(d0) * d1); int i2 = SectionPos.sectionToBlockCoord(k1, 8); int j2 = SectionPos.sectionToBlockCoord(l1, 8); diff --git a/platforms/bukkit/nms/v1_19_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R2/NMSBiomeInjector.java b/platforms/bukkit/nms/v1_19_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R2/NMSBiomeInjector.java index 20a426949..efcdf004a 100644 --- a/platforms/bukkit/nms/v1_19_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R2/NMSBiomeInjector.java +++ b/platforms/bukkit/nms/v1_19_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R2/NMSBiomeInjector.java @@ -2,7 +2,6 @@ package com.dfsek.terra.bukkit.nms.v1_19_R2; import net.minecraft.core.Holder; import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeSpecialEffects; @@ -10,7 +9,6 @@ import net.minecraft.world.level.biome.BiomeSpecialEffects; import java.util.Locale; import java.util.Objects; import java.util.Optional; -import java.util.function.Function; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.bukkit.config.VanillaBiomeProperties; diff --git a/platforms/bukkit/nms/v1_19_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R2/Reflection.java b/platforms/bukkit/nms/v1_19_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R2/Reflection.java index c65df8ca1..11236d132 100644 --- a/platforms/bukkit/nms/v1_19_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R2/Reflection.java +++ b/platforms/bukkit/nms/v1_19_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R2/Reflection.java @@ -12,8 +12,6 @@ import xyz.jpenilla.reflectionremapper.proxy.annotation.FieldSetter; import xyz.jpenilla.reflectionremapper.proxy.annotation.MethodName; import xyz.jpenilla.reflectionremapper.proxy.annotation.Proxies; -import java.util.Objects; - public class Reflection { public static final MappedRegistryProxy MAPPED_REGISTRY; diff --git a/platforms/bukkit/nms/v1_19_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R2/RegistryFetcher.java b/platforms/bukkit/nms/v1_19_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R2/RegistryFetcher.java index f0c776f48..904fba60b 100644 --- a/platforms/bukkit/nms/v1_19_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R2/RegistryFetcher.java +++ b/platforms/bukkit/nms/v1_19_R2/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R2/RegistryFetcher.java @@ -5,7 +5,6 @@ import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.server.dedicated.DedicatedServer; import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.levelgen.structure.StructureSet; import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v1_19_R2.CraftServer; diff --git a/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/NMSBiomeInjector.java b/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/NMSBiomeInjector.java index f7bedfd0f..2c328f26d 100644 --- a/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/NMSBiomeInjector.java +++ b/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/NMSBiomeInjector.java @@ -1,9 +1,7 @@ package com.dfsek.terra.bukkit.nms.v1_19_R3; import net.minecraft.core.Holder; -import java.util.stream.Stream; import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeSpecialEffects; @@ -11,14 +9,10 @@ import net.minecraft.world.level.biome.BiomeSpecialEffects; import java.util.Locale; import java.util.Objects; import java.util.Optional; -import java.util.function.Function; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.bukkit.config.VanillaBiomeProperties; -import static net.minecraft.world.level.biome.Biome.ClimateSettings; -import static net.minecraft.world.level.biome.Biome.Precipitation; - public class NMSBiomeInjector { public static Optional> getEntry(Registry registry, ResourceLocation identifier) { diff --git a/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/NMSBiomeProvider.java b/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/NMSBiomeProvider.java index 52711f0ec..3040d1956 100644 --- a/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/NMSBiomeProvider.java +++ b/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/NMSBiomeProvider.java @@ -2,13 +2,14 @@ package com.dfsek.terra.bukkit.nms.v1_19_R3; import com.mojang.serialization.Codec; import net.minecraft.core.Holder; -import java.util.stream.Stream; import net.minecraft.core.Registry; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeSource; import net.minecraft.world.level.biome.Climate.Sampler; import org.jetbrains.annotations.NotNull; +import java.util.stream.Stream; + import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; diff --git a/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/Reflection.java b/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/Reflection.java index a10837e11..beb2c1e75 100644 --- a/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/Reflection.java +++ b/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/Reflection.java @@ -12,8 +12,6 @@ import xyz.jpenilla.reflectionremapper.proxy.annotation.FieldSetter; import xyz.jpenilla.reflectionremapper.proxy.annotation.MethodName; import xyz.jpenilla.reflectionremapper.proxy.annotation.Proxies; -import java.util.Objects; - public class Reflection { public static final MappedRegistryProxy MAPPED_REGISTRY; diff --git a/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/RegistryFetcher.java b/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/RegistryFetcher.java index 4c5c704b1..5147eb360 100644 --- a/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/RegistryFetcher.java +++ b/platforms/bukkit/nms/v1_19_R3/src/main/java/com/dfsek/terra/bukkit/nms/v1_19_R3/RegistryFetcher.java @@ -5,7 +5,6 @@ import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.server.dedicated.DedicatedServer; import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.levelgen.structure.StructureSet; import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v1_19_R3.CraftServer; diff --git a/platforms/bukkit/nms/v1_20_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R1/NMSBiomeInjector.java b/platforms/bukkit/nms/v1_20_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R1/NMSBiomeInjector.java index d0c32c7d5..36d43b0ec 100644 --- a/platforms/bukkit/nms/v1_20_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R1/NMSBiomeInjector.java +++ b/platforms/bukkit/nms/v1_20_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R1/NMSBiomeInjector.java @@ -1,9 +1,7 @@ package com.dfsek.terra.bukkit.nms.v1_20_R1; import net.minecraft.core.Holder; -import java.util.stream.Stream; import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeSpecialEffects; @@ -11,14 +9,10 @@ import net.minecraft.world.level.biome.BiomeSpecialEffects; import java.util.Locale; import java.util.Objects; import java.util.Optional; -import java.util.function.Function; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.bukkit.config.VanillaBiomeProperties; -import static net.minecraft.world.level.biome.Biome.ClimateSettings; -import static net.minecraft.world.level.biome.Biome.Precipitation; - public class NMSBiomeInjector { public static Optional> getEntry(Registry registry, ResourceLocation identifier) { diff --git a/platforms/bukkit/nms/v1_20_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R1/NMSBiomeProvider.java b/platforms/bukkit/nms/v1_20_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R1/NMSBiomeProvider.java index 2f29ac3ef..4f0cbea1a 100644 --- a/platforms/bukkit/nms/v1_20_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R1/NMSBiomeProvider.java +++ b/platforms/bukkit/nms/v1_20_R1/src/main/java/com/dfsek/terra/bukkit/nms/v1_20_R1/NMSBiomeProvider.java @@ -2,13 +2,14 @@ package com.dfsek.terra.bukkit.nms.v1_20_R1; import com.mojang.serialization.Codec; import net.minecraft.core.Holder; -import java.util.stream.Stream; import net.minecraft.core.Registry; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeSource; import net.minecraft.world.level.biome.Climate.Sampler; import org.jetbrains.annotations.NotNull; +import java.util.stream.Stream; + import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.bukkit.world.BukkitPlatformBiome; diff --git a/platforms/cli/build.gradle.kts b/platforms/cli/build.gradle.kts index 945bfbc0e..7e35aa714 100644 --- a/platforms/cli/build.gradle.kts +++ b/platforms/cli/build.gradle.kts @@ -14,7 +14,7 @@ dependencies { shadedImplementation("ch.qos.logback:logback-classic:${Versions.CLI.logback}") - implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama) + } tasks.withType { diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java index e281efd0e..00c5f17d3 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java @@ -1,7 +1,6 @@ package com.dfsek.terra.cli.world; import com.google.common.collect.Streams; -import net.jafama.FastMath; import net.querz.mca.MCAFile; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -119,8 +118,8 @@ public class CLIWorld implements ServerWorld, NBTSerializable> { 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 11bbae507..30f19bac4 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,10 +17,10 @@ package com.dfsek.terra.mod.config; +import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Identifier; -import net.minecraft.registry.Registry; import net.minecraft.world.biome.Biome; import java.util.Objects; 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 feb3680d2..2015f7019 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 @@ -8,7 +8,6 @@ import net.minecraft.sound.BiomeMoodSound; import net.minecraft.sound.MusicSound; import net.minecraft.sound.SoundEvent; import net.minecraft.village.VillagerType; -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; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java index 9aaf3362b..c998d8abf 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/config/VillagerTypeTemplate.java @@ -5,7 +5,6 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; -import net.minecraft.registry.Registry; import net.minecraft.village.VillagerType; 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 890e3e2b5..e7c0d5002 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 @@ -2,8 +2,6 @@ package com.dfsek.terra.mod.data; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.RegistryOps; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; import com.dfsek.terra.api.config.ConfigPack; 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 75fd4f498..fd1ee7cf9 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,20 +17,16 @@ package com.dfsek.terra.mod.generation; -import com.dfsek.terra.mod.util.SeedHack; - import com.mojang.serialization.Codec; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.structure.StructureSet; import net.minecraft.util.Util; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; import net.minecraft.util.math.random.CheckedRandom; import net.minecraft.util.math.random.ChunkRandom; import net.minecraft.util.math.random.RandomSeed; -import net.minecraft.registry.Registry; import net.minecraft.world.ChunkRegion; import net.minecraft.world.HeightLimitView; import net.minecraft.world.Heightmap.Type; @@ -51,7 +47,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; -import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; @@ -67,6 +62,7 @@ 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; +import com.dfsek.terra.mod.util.SeedHack; public class MinecraftChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.ChunkGenerator implements GeneratorWrapper { 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 d4a285edd..4bd2866ae 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 @@ -18,7 +18,6 @@ package com.dfsek.terra.mod.generation; import com.mojang.serialization.Codec; -import net.minecraft.registry.Registry; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.source.BiomeSource; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftItemHandle.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftItemHandle.java index 66582857a..8bed0298a 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftItemHandle.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftItemHandle.java @@ -22,10 +22,10 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.command.CommandRegistryAccess; import net.minecraft.command.argument.ItemStackArgumentType; import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; -import net.minecraft.registry.Registry; import java.util.Set; import java.util.stream.Collectors; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java index aabc38471..ba84f3129 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java @@ -22,7 +22,6 @@ import net.minecraft.block.Blocks; import net.minecraft.command.argument.BlockArgumentParser; import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; -import net.minecraft.registry.Registry; import org.jetbrains.annotations.NotNull; import com.dfsek.terra.api.block.state.BlockState; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java index 95fe9154c..7f8a6850b 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java @@ -24,7 +24,6 @@ import net.minecraft.block.entity.MobSpawnerBlockEntity; import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; -import net.minecraft.registry.Registry; import net.minecraft.util.math.random.Random; import net.minecraft.world.MobSpawnerLogic; import org.jetbrains.annotations.NotNull; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/SignBlockEntityMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/SignBlockEntityMixin.java index fe8d2cbab..b0ba7b69e 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/SignBlockEntityMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/SignBlockEntityMixin.java @@ -21,7 +21,6 @@ import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.block.entity.SignText; import net.minecraft.text.Text; import org.jetbrains.annotations.NotNull; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Mixin; 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 2ec3cf649..a666b3491 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 @@ -7,7 +7,6 @@ import net.minecraft.block.AbstractBlock.AbstractBlockState; import net.minecraft.block.Block; import net.minecraft.registry.Registries; import net.minecraft.state.State; -import net.minecraft.registry.Registry; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Intrinsic; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/WorldChunkMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/WorldChunkMixin.java index 2cf8123ea..0cc130471 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/WorldChunkMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/chunk/WorldChunkMixin.java @@ -17,7 +17,6 @@ package com.dfsek.terra.mod.mixin.implementations.terra.chunk; -import net.minecraft.block.Block; import net.minecraft.util.math.BlockPos; import net.minecraft.world.chunk.Chunk.TickSchedulers; import net.minecraft.world.chunk.WorldChunk; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/EnchantmentMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/EnchantmentMixin.java index 5b4b3eaf7..f73b91cfe 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/EnchantmentMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/EnchantmentMixin.java @@ -19,8 +19,6 @@ package com.dfsek.terra.mod.mixin.implementations.terra.inventory.meta; import net.minecraft.enchantment.Enchantment; import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; -import net.minecraft.registry.RegistryKeys; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Mixin; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/ItemStackMetaMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/ItemStackMetaMixin.java index 0391cd4ef..bb8159c99 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/ItemStackMetaMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/inventory/meta/ItemStackMetaMixin.java @@ -21,7 +21,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtList; import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Intrinsic; 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 d4a27e750..81a9c2cae 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,7 +1,6 @@ package com.dfsek.terra.mod.mixin.lifecycle; import net.minecraft.registry.DynamicRegistryManager; -import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKeys; import net.minecraft.server.DataPackContents; 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 803b78b0b..2470f139f 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 @@ -4,12 +4,12 @@ import net.minecraft.block.entity.LootableContainerBlockEntity; import net.minecraft.block.entity.MobSpawnerBlockEntity; import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; -import net.minecraft.registry.Registry; import net.minecraft.world.WorldAccess; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome.Builder; @@ -25,7 +25,6 @@ import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.function.Function; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.entity.Container; diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java index 81289fdfb..feb3826f1 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/TagUtil.java @@ -1,8 +1,8 @@ package com.dfsek.terra.mod.util; import com.google.common.collect.ImmutableMap; -import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.Registry; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.tag.TagKey; import net.minecraft.registry.tag.WorldPresetTags; import net.minecraft.world.biome.Biome; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecycleEntryPoint.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecycleEntryPoint.java index 4350f31c0..bc481f560 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecycleEntryPoint.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecycleEntryPoint.java @@ -1,18 +1,14 @@ package com.dfsek.terra.lifecycle; 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.mod.MinecraftAddon; - import net.minecraft.server.command.ServerCommandSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.dfsek.terra.api.command.CommandSender; +import com.dfsek.terra.api.event.events.platform.CommandRegistrationEvent; + public class LifecycleEntryPoint { private static final Logger logger = LoggerFactory.getLogger(LifecycleEntryPoint.class); diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java index 9e0e081d3..4bf538144 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/LifecyclePlatform.java @@ -3,11 +3,7 @@ package com.dfsek.terra.lifecycle; import ca.solostudios.strata.Versions; import ca.solostudios.strata.parser.tokenizer.ParseException; import ca.solostudios.strata.version.Version; - -import com.dfsek.terra.lifecycle.util.BiomeUtil; - import net.minecraft.MinecraftVersion; -import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKeys; import net.minecraft.server.MinecraftServer; @@ -21,11 +17,12 @@ import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.stream.Stream; import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Stream; import com.dfsek.terra.addon.EphemeralAddon; import com.dfsek.terra.api.addon.BaseAddon; +import com.dfsek.terra.lifecycle.util.BiomeUtil; import com.dfsek.terra.mod.CommonPlatform; import com.dfsek.terra.mod.ModPlatform; import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java index e8091826a..714fa7246 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/NoiseConfigMixin.java @@ -2,7 +2,6 @@ package com.dfsek.terra.lifecycle.mixin; import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.util.math.noise.DoublePerlinNoiseSampler; -import net.minecraft.registry.Registry; import net.minecraft.world.biome.source.util.MultiNoiseUtil.MultiNoiseSampler; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; import net.minecraft.world.gen.noise.NoiseConfig; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/RegistryMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/RegistryMixin.java index a2d516931..ce4e4bfe0 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/RegistryMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/RegistryMixin.java @@ -1,7 +1,6 @@ package com.dfsek.terra.lifecycle.mixin; import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/SimpleRegistryMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/SimpleRegistryMixin.java index 2da9f317d..f388e57b6 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/SimpleRegistryMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/SimpleRegistryMixin.java @@ -1,9 +1,6 @@ package com.dfsek.terra.lifecycle.mixin; -import com.dfsek.terra.lifecycle.util.RegistryHack; - import net.minecraft.registry.SimpleRegistry; -import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.entry.RegistryEntry.Reference; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -11,6 +8,8 @@ import org.spongepowered.asm.mixin.Shadow; import java.util.Map; +import com.dfsek.terra.lifecycle.util.RegistryHack; + @Mixin(SimpleRegistry.class) public class SimpleRegistryMixin implements RegistryHack { diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java index 260d3c4a2..953e23dc0 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/SaveLoadingMixin.java @@ -1,9 +1,5 @@ package com.dfsek.terra.lifecycle.mixin.lifecycle; -import com.dfsek.terra.lifecycle.util.LifecycleUtil; - -import com.dfsek.terra.mod.util.MinecraftUtil; - import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.registry.RegistryKeys; import net.minecraft.server.SaveLoading; @@ -11,6 +7,8 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; +import com.dfsek.terra.mod.util.MinecraftUtil; + @Mixin(SaveLoading.class) public class SaveLoadingMixin { diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java index 0eadea7f4..20ad6a17d 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/BiomeUtil.java @@ -1,10 +1,9 @@ package com.dfsek.terra.lifecycle.util; -import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.util.Identifier; -import net.minecraft.registry.Registry; import net.minecraft.village.VillagerType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java index 6c6ee4ad6..a22e449b5 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/util/RegistryUtil.java @@ -1,8 +1,8 @@ package com.dfsek.terra.lifecycle.util; import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; import com.dfsek.terra.mod.data.Codecs; From 6f08908bb4fd902bf1d0168d2b78563394bbd9cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Thu, 26 Oct 2023 10:43:13 -0600 Subject: [PATCH 2/4] merge ovre-v2 into ore(v1) --- common/addons/config-ore-v2/LICENSE | 21 -- common/addons/config-ore-v2/README.md | 3 - common/addons/config-ore-v2/build.gradle.kts | 5 - .../dfsek/terra/addons/ore/v2/OreAddon.java | 33 --- .../terra/addons/ore/v2/OreConfigType.java | 37 ---- .../dfsek/terra/addons/ore/v2/OreFactory.java | 24 -- .../terra/addons/ore/v2/OreTemplate.java | 80 ------- .../terra/addons/ore/v2/ores/VanillaOre.java | 206 ------------------ .../src/main/resources/terra.addon.yml | 12 - .../terra/addons/ore/ores/VanillaOre.java | 178 +++++++++++---- 10 files changed, 134 insertions(+), 465 deletions(-) delete mode 100644 common/addons/config-ore-v2/LICENSE delete mode 100644 common/addons/config-ore-v2/README.md delete mode 100644 common/addons/config-ore-v2/build.gradle.kts delete mode 100644 common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreAddon.java delete mode 100644 common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreConfigType.java delete mode 100644 common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreFactory.java delete mode 100644 common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreTemplate.java delete mode 100644 common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/ores/VanillaOre.java delete mode 100644 common/addons/config-ore-v2/src/main/resources/terra.addon.yml diff --git a/common/addons/config-ore-v2/LICENSE b/common/addons/config-ore-v2/LICENSE deleted file mode 100644 index 64c1cd516..000000000 --- a/common/addons/config-ore-v2/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020-2021 Polyhedral Development - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/common/addons/config-ore-v2/README.md b/common/addons/config-ore-v2/README.md deleted file mode 100644 index 9171511a3..000000000 --- a/common/addons/config-ore-v2/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# config-ore-v2 - -Registers the default configuration for Terra Ores, `ORE`. diff --git a/common/addons/config-ore-v2/build.gradle.kts b/common/addons/config-ore-v2/build.gradle.kts deleted file mode 100644 index d3eaff9fe..000000000 --- a/common/addons/config-ore-v2/build.gradle.kts +++ /dev/null @@ -1,5 +0,0 @@ -version = version("1.0.0") - -dependencies { - compileOnlyApi(project(":common:addons:manifest-addon-loader")) -} \ No newline at end of file diff --git a/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreAddon.java b/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreAddon.java deleted file mode 100644 index 9a3d3d05b..000000000 --- a/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreAddon.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.ore.v2; - -import com.dfsek.terra.addons.manifest.api.AddonInitializer; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; - - -public class OreAddon implements AddonInitializer { - @Inject - private Platform platform; - - @Inject - private BaseAddon addon; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(addon, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().registerConfigType(new OreConfigType(), addon.key("ORE"), 1)) - .failThrough(); - } -} diff --git a/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreConfigType.java b/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreConfigType.java deleted file mode 100644 index dd9c74f12..000000000 --- a/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreConfigType.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.ore.v2; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.ConfigType; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.reflection.TypeKey; - - -public class OreConfigType implements ConfigType { - public static final TypeKey ORE_TYPE_TOKEN = new TypeKey<>() { - }; - private final OreFactory factory = new OreFactory(); - - @Override - public OreTemplate getTemplate(ConfigPack pack, Platform platform) { - return new OreTemplate(); - } - - @Override - public ConfigFactory getFactory() { - return factory; - } - - @Override - public TypeKey getTypeKey() { - return ORE_TYPE_TOKEN; - } -} diff --git a/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreFactory.java b/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreFactory.java deleted file mode 100644 index 65b3f5d65..000000000 --- a/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreFactory.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.ore.v2; - -import com.dfsek.terra.addons.ore.v2.ores.VanillaOre; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.structure.Structure; - - -public class OreFactory implements ConfigFactory { - @Override - public VanillaOre build(OreTemplate config, Platform platform) { - BlockState m = config.getMaterial(); - return new VanillaOre(m, config.getSize(), config.getReplaceable(), config.doPhysics(), config.isExposed(), - config.getMaterialOverrides()); - } -} diff --git a/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreTemplate.java b/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreTemplate.java deleted file mode 100644 index fa8f49b9e..000000000 --- a/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/OreTemplate.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.ore.v2; - -import com.dfsek.tectonic.api.config.template.annotations.Default; -import com.dfsek.tectonic.api.config.template.annotations.Description; -import com.dfsek.tectonic.api.config.template.annotations.Final; -import com.dfsek.tectonic.api.config.template.annotations.Value; - -import java.util.HashMap; -import java.util.Map; - -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.util.collection.MaterialSet; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public class OreTemplate implements AbstractableTemplate { - @Value("id") - @Final - private String id; - - @Value("material") - private @Meta BlockState material; - - @Value("material-overrides") - @Default - private @Meta Map<@Meta BlockType, @Meta BlockState> materials = new HashMap<>(); - - @Value("replace") - private @Meta MaterialSet replaceable; - - @Value("physics") - @Default - private @Meta boolean physics = false; - - @Value("size") - private @Meta double size; - - @Value("exposed") - @Default - @Description("The chance that ore blocks bordering air will be discarded as candidates for ore. 0 = 0%, 1 = 100%") - private @Meta double exposed = 0.0f; - - public boolean doPhysics() { - return physics; - } - - public double getSize() { - return size; - } - - public BlockState getMaterial() { - return material; - } - - public MaterialSet getReplaceable() { - return replaceable; - } - - public String getID() { - return id; - } - - public Map getMaterialOverrides() { - return materials; - } - - public double isExposed() { - return exposed; - } -} diff --git a/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/ores/VanillaOre.java b/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/ores/VanillaOre.java deleted file mode 100644 index 9f219f17f..000000000 --- a/common/addons/config-ore-v2/src/main/java/com/dfsek/terra/addons/ore/v2/ores/VanillaOre.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * Copyright (c) 2020-2021 Polyhedral Development - * - * The Terra Core Addons are licensed under the terms of the MIT License. For more details, - * reference the LICENSE file in this module's root directory. - */ - -package com.dfsek.terra.addons.ore.v2.ores; - -import java.util.BitSet; -import java.util.Map; -import java.util.Random; - -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.util.Rotation; -import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.terra.api.util.vector.Vector3Int; -import com.dfsek.terra.api.world.WritableWorld; - - -public class VanillaOre implements Structure { - - private final BlockState material; - - private final double size; - private final MaterialSet replaceable; - private final boolean applyGravity; - private final double exposed; - private final Map materials; - - public VanillaOre(BlockState material, double size, MaterialSet replaceable, boolean applyGravity, - double exposed, Map materials) { - this.material = material; - this.size = size; - this.replaceable = replaceable; - this.applyGravity = applyGravity; - this.exposed = exposed; - this.materials = materials; - } - - protected static boolean shouldNotDiscard(Random random, double chance) { - if(chance <= 0.0F) { - return true; - } else if(chance >= 1.0F) { - return false; - } else { - return random.nextFloat() >= chance; - } - } - - public static double lerp(double t, double v0, double v1) { - return v0 + t * (v1 - v0); - } - - @Override - public boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation) { - float randomRadian = random.nextFloat() * (float) Math.PI; - double eigthSize = size / 8.0F; - - // Place points to form a line segment - double startX = (double) location.getX() + MathUtil.sin(randomRadian) * eigthSize; - double endX = (double) location.getX() - MathUtil.sin(randomRadian) * eigthSize; - - double startZ = (double) location.getZ() + MathUtil.cos(randomRadian) * eigthSize; - double endZ = (double) location.getZ() - MathUtil.cos(randomRadian) * eigthSize; - - double startY = location.getY() + random.nextInt(3) - 2; - double endY = location.getY() + random.nextInt(3) - 2; - - int sizeInt = (int) size; - double[] points = new double[sizeInt * 4]; - - // Compute initial point positions and radius - for(int i = 0; i < sizeInt; ++i) { - float t = (float) i / (float) sizeInt; - double xt = lerp(t, startX, endX); - double yt = lerp(t, startY, endY); - double zt = lerp(t, startZ, endZ); - double roll = random.nextDouble() * size / 16.0; - // Taper radius closer to line ends - double radius = ((MathUtil.sin((float) Math.PI * t) + 1.0F) * roll + 1.0) / 2.0; - points[i * 4] = xt; - points[i * 4 + 1] = yt; - points[i * 4 + 2] = zt; - points[i * 4 + 3] = radius; - } - - // Compare every point to every other point - for(int a = 0; a < sizeInt - 1; ++a) { - double radiusA = points[a * 4 + 3]; - if(radiusA > 0.0) { - for(int b = a + 1; b < sizeInt; ++b) { - double radiusB = points[b * 4 + 3]; - if(radiusB > 0.0) { - double dxt = points[a * 4] - points[b * 4]; - double dyt = points[a * 4 + 1] - points[b * 4 + 1]; - double dzt = points[a * 4 + 2] - points[b * 4 + 2]; - double dRadius = radiusA - radiusB; - - // If the radius difference is greater than the distance between the two points - if(dRadius * dRadius > dxt * dxt + dyt * dyt + dzt * dzt) { - // Set smaller of two radii to -1 - if(dRadius > 0.0) { - points[b * 4 + 3] = -1.0; - } else { - points[a * 4 + 3] = -1.0; - } - } - } - } - } - } - - int outset = (int) Math.ceil((size / 16.0F * 2.0F + 1.0F) / 2.0F); - int x = (int) (location.getX() - Math.ceil(eigthSize) - outset); - int y = location.getY() - 2 - outset; - int z = (int) (location.getZ() - Math.ceil(eigthSize) - outset); - - int horizontalSize = (int) (2 * (Math.ceil(eigthSize) + outset)); - int verticalSize = 2 * (2 + outset); - - int sphereCount = 0; - BitSet visited = new BitSet(horizontalSize * verticalSize * horizontalSize); - - // Generate a sphere at each point - for(int i = 0; i < sizeInt; ++i) { - double radius = points[i * 4 + 3]; - if(radius > 0.0) { - double xt = points[i * 4]; - double yt = points[i * 4 + 1]; - double zt = points[i * 4 + 2]; - - int xLowerBound = (int) Math.max(Math.floor(xt - radius), x); - int xUpperBound = (int) Math.max(Math.floor(xt + radius), xLowerBound); - - int yLowerBound = (int) Math.max(Math.floor(yt - radius), y); - int yUpperBound = (int) Math.max(Math.floor(yt + radius), yLowerBound); - - int zLowerBound = (int) Math.max(Math.floor(zt - radius), z); - int zUpperBound = (int) Math.max(Math.floor(zt + radius), zLowerBound); - - // Iterate over coordinates within bounds - for(int xi = xLowerBound; xi <= xUpperBound; ++xi) { - double dx = ((double) xi + 0.5 - xt) / radius; - if(dx * dx < 1.0) { - for(int yi = yLowerBound; yi <= yUpperBound; ++yi) { - double dy = ((double) yi + 0.5 - yt) / radius; - if(dx * dx + dy * dy < 1.0) { - for(int zi = zLowerBound; zi <= zUpperBound; ++zi) { - double dz = ((double) zi + 0.5 - zt) / radius; - - // If position is inside the sphere - if(dx * dx + dy * dy + dz * dz < 1.0 && !(yi < world.getMinHeight() || yi >= world.getMaxHeight())) { - int index = xi - x + (yi - y) * horizontalSize + (zi - z) * horizontalSize * verticalSize; - if(!visited.get(index)) { // Skip blocks that have already been visited - - visited.set(index); - BlockType block = world.getBlockState(xi, yi, zi).getBlockType(); - if(shouldPlace(block, random, world, xi, yi, zi)) { - world.setBlockState(xi, yi, zi, getMaterial(block), isApplyGravity()); - ++sphereCount; - break; - } - } - } - } - } - } - } - } - } - } - - return sphereCount > 0; - } - - public boolean shouldPlace(BlockType type, Random random, WritableWorld world, int x, int y, int z) { - if(!getReplaceable().contains(type)) { - return false; - } else if(shouldNotDiscard(random, exposed)) { - return true; - } else { - return !(world.getBlockState(x, y, z - 1).isAir() || - world.getBlockState(x, y, z + 1).isAir() || - world.getBlockState(x, y - 1, z).isAir() || - world.getBlockState(x, y + 1, z).isAir() || - world.getBlockState(x - 1, y, z).isAir() || - world.getBlockState(x + 1, y, z).isAir()); - } - } - - public BlockState getMaterial(BlockType replace) { - return materials.getOrDefault(replace, material); - } - - public MaterialSet getReplaceable() { - return replaceable; - } - - public boolean isApplyGravity() { - return applyGravity; - } -} diff --git a/common/addons/config-ore-v2/src/main/resources/terra.addon.yml b/common/addons/config-ore-v2/src/main/resources/terra.addon.yml deleted file mode 100644 index 72f4b24b9..000000000 --- a/common/addons/config-ore-v2/src/main/resources/terra.addon.yml +++ /dev/null @@ -1,12 +0,0 @@ -schema-version: 1 -contributors: - - Terra contributors -id: config-ore-v2 -version: @VERSION@ -entrypoints: - - "com.dfsek.terra.addons.ore.v2.OreAddon" -website: - issues: https://github.com/PolyhedralDev/Terra/issues - source: https://github.com/PolyhedralDev/Terra - docs: https://terra.polydev.org -license: MIT License \ No newline at end of file diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java index 224d0b502..0e09ffcb7 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.ore.ores; +import java.util.BitSet; import java.util.Map; import java.util.Random; @@ -40,57 +41,130 @@ public class VanillaOre implements Structure { this.materials = materials; } + protected static boolean shouldNotDiscard(Random random, double chance) { + if(chance <= 0.0F) { + return true; + } else if(chance >= 1.0F) { + return false; + } else { + return random.nextFloat() >= chance; + } + } + + public static double lerp(double t, double v0, double v1) { + return v0 + t * (v1 - v0); + } + @Override public boolean generate(Vector3Int location, WritableWorld world, Random random, Rotation rotation) { - int centerX = location.getX(); - int centerZ = location.getZ(); - int centerY = location.getY(); + float randomRadian = random.nextFloat() * (float) Math.PI; + double eigthSize = size / 8.0F; + // Place points to form a line segment + double startX = (double) location.getX() + MathUtil.sin(randomRadian) * eigthSize; + double endX = (double) location.getX() - MathUtil.sin(randomRadian) * eigthSize; - float f = random.nextFloat() * (float) Math.PI; + double startZ = (double) location.getZ() + MathUtil.cos(randomRadian) * eigthSize; + double endZ = (double) location.getZ() - MathUtil.cos(randomRadian) * eigthSize; - double d1 = centerX + 8 + MathUtil.sin(f) * size / 8.0F; - double d2 = centerX + 8 - MathUtil.sin(f) * size / 8.0F; - double d3 = centerZ + 8 + MathUtil.cos(f) * size / 8.0F; - double d4 = centerZ + 8 - MathUtil.cos(f) * size / 8.0F; + double startY = location.getY() + random.nextInt(3) - 2; + double endY = location.getY() + random.nextInt(3) - 2; - double d5 = centerY + random.nextInt(3) - 2D; - double d6 = centerY + random.nextInt(3) - 2D; + int sizeInt = (int) size; + double[] points = new double[sizeInt * 4]; - for(int i = 0; i < size; i++) { - float iFactor = (float) i / (float) size; - - double d10 = random.nextDouble() * size / 16.0D; - double d11 = (MathUtil.sin(Math.PI * iFactor) + 1.0) * d10 + 1.0; - double d12 = (MathUtil.sin(Math.PI * iFactor) + 1.0) * d10 + 1.0; - - int xStart = (int) Math.round(Math.floor(d1 + (d2 - d1) * iFactor - d11 / 2.0D)); - int yStart = (int) Math.round(Math.floor(d5 + (d6 - d5) * iFactor - d12 / 2.0D)); - int zStart = (int) Math.round(Math.floor(d3 + (d4 - d3) * iFactor - d11 / 2.0D)); - - int xEnd = (int) Math.round(Math.floor(d1 + (d2 - d1) * iFactor + d11 / 2.0D)); - int yEnd = (int) Math.round(Math.floor(d5 + (d6 - d5) * iFactor + d12 / 2.0D)); - int zEnd = (int) Math.round(Math.floor(d3 + (d4 - d3) * iFactor + d11 / 2.0D)); - - for(int x = xStart; x <= xEnd; x++) { - double d13 = (x + 0.5D - (d1 + (d2 - d1) * iFactor)) / (d11 / 2.0D); + // Compute initial point positions and radius + for(int i = 0; i < sizeInt; ++i) { + float t = (float) i / (float) sizeInt; + double xt = lerp(t, startX, endX); + double yt = lerp(t, startY, endY); + double zt = lerp(t, startZ, endZ); + double roll = random.nextDouble() * size / 16.0; + // Taper radius closer to line ends + double radius = ((MathUtil.sin((float) Math.PI * t) + 1.0F) * roll + 1.0) / 2.0; + points[i * 4] = xt; + points[i * 4 + 1] = yt; + points[i * 4 + 2] = zt; + points[i * 4 + 3] = radius; + } + + // Compare every point to every other point + for(int a = 0; a < sizeInt - 1; ++a) { + double radiusA = points[a * 4 + 3]; + if(radiusA > 0.0) { + for(int b = a + 1; b < sizeInt; ++b) { + double radiusB = points[b * 4 + 3]; + if(radiusB > 0.0) { + double dxt = points[a * 4] - points[b * 4]; + double dyt = points[a * 4 + 1] - points[b * 4 + 1]; + double dzt = points[a * 4 + 2] - points[b * 4 + 2]; + double dRadius = radiusA - radiusB; + + // If the radius difference is greater than the distance between the two points + if(dRadius * dRadius > dxt * dxt + dyt * dyt + dzt * dzt) { + // Set smaller of two radii to -1 + if(dRadius > 0.0) { + points[b * 4 + 3] = -1.0; + } else { + points[a * 4 + 3] = -1.0; + } + } + } + } + } + } + + int outset = (int) Math.ceil((size / 16.0F * 2.0F + 1.0F) / 2.0F); + int x = (int) (location.getX() - Math.ceil(eigthSize) - outset); + int y = location.getY() - 2 - outset; + int z = (int) (location.getZ() - Math.ceil(eigthSize) - outset); + + int horizontalSize = (int) (2 * (Math.ceil(eigthSize) + outset)); + int verticalSize = 2 * (2 + outset); + + int sphereCount = 0; + BitSet visited = new BitSet(horizontalSize * verticalSize * horizontalSize); + + // Generate a sphere at each point + for(int i = 0; i < sizeInt; ++i) { + double radius = points[i * 4 + 3]; + if(radius > 0.0) { + double xt = points[i * 4]; + double yt = points[i * 4 + 1]; + double zt = points[i * 4 + 2]; - if(d13 * d13 < 1.0D) { - for(int y = yStart; y <= yEnd; y++) { - double d14 = (y + 0.5D - (d5 + (d6 - d5) * iFactor)) / (d12 / 2.0D); - if(d13 * d13 + d14 * d14 < 1.0D) { - for(int z = zStart; z <= zEnd; z++) { - double d15 = (z + 0.5D - (d3 + (d4 - d3) * iFactor)) / (d11 / 2.0D); - if(y >= world.getMaxHeight() || y < world.getMinHeight()) continue; - BlockType block = world.getBlockState(x, y, z).getBlockType(); - if((d13 * d13 + d14 * d14 + d15 * d15 < 1.0D) && getReplaceable().contains(block)) { - if(exposed > random.nextDouble() || !(world.getBlockState(x, y, z - 1).isAir() || - world.getBlockState(x, y, z + 1).isAir() || - world.getBlockState(x, y - 1, z).isAir() || - world.getBlockState(x, y + 1, z).isAir() || - world.getBlockState(x - 1, y, z).isAir() || - world.getBlockState(x + 1, y, z).isAir())) { - world.setBlockState(x, y, z, getMaterial(block), isApplyGravity()); + int xLowerBound = (int) Math.max(Math.floor(xt - radius), x); + int xUpperBound = (int) Math.max(Math.floor(xt + radius), xLowerBound); + + int yLowerBound = (int) Math.max(Math.floor(yt - radius), y); + int yUpperBound = (int) Math.max(Math.floor(yt + radius), yLowerBound); + + int zLowerBound = (int) Math.max(Math.floor(zt - radius), z); + int zUpperBound = (int) Math.max(Math.floor(zt + radius), zLowerBound); + + // Iterate over coordinates within bounds + for(int xi = xLowerBound; xi <= xUpperBound; ++xi) { + double dx = ((double) xi + 0.5 - xt) / radius; + if(dx * dx < 1.0) { + for(int yi = yLowerBound; yi <= yUpperBound; ++yi) { + double dy = ((double) yi + 0.5 - yt) / radius; + if(dx * dx + dy * dy < 1.0) { + for(int zi = zLowerBound; zi <= zUpperBound; ++zi) { + double dz = ((double) zi + 0.5 - zt) / radius; + + // If position is inside the sphere + if(dx * dx + dy * dy + dz * dz < 1.0 && !(yi < world.getMinHeight() || yi >= world.getMaxHeight())) { + int index = xi - x + (yi - y) * horizontalSize + (zi - z) * horizontalSize * verticalSize; + if(!visited.get(index)) { // Skip blocks that have already been visited + + visited.set(index); + BlockType block = world.getBlockState(xi, yi, zi).getBlockType(); + if(shouldPlace(block, random, world, xi, yi, zi)) { + world.setBlockState(xi, yi, zi, getMaterial(block), isApplyGravity()); + ++sphereCount; + break; + } + } } } } @@ -99,7 +173,23 @@ public class VanillaOre implements Structure { } } } - return true; + + return sphereCount > 0; + } + + public boolean shouldPlace(BlockType type, Random random, WritableWorld world, int x, int y, int z) { + if(!getReplaceable().contains(type)) { + return false; + } else if(shouldNotDiscard(random, exposed)) { + return true; + } else { + return !(world.getBlockState(x, y, z - 1).isAir() || + world.getBlockState(x, y, z + 1).isAir() || + world.getBlockState(x, y - 1, z).isAir() || + world.getBlockState(x, y + 1, z).isAir() || + world.getBlockState(x - 1, y, z).isAir() || + world.getBlockState(x + 1, y, z).isAir()); + } } public BlockState getMaterial(BlockType replace) { From 5d12a560f1d052d7506756e499295b39d3b43bf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Thu, 26 Oct 2023 11:08:36 -0600 Subject: [PATCH 3/4] add zero and unit vectors --- .../main/java/com/dfsek/terra/api/util/vector/Vector2.java | 5 +++-- .../java/com/dfsek/terra/api/util/vector/Vector2Int.java | 3 +-- .../main/java/com/dfsek/terra/api/util/vector/Vector3.java | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java index 057ab22aa..48d796274 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java @@ -14,8 +14,9 @@ import com.dfsek.terra.api.util.MathUtil; * oh yeah */ public class Vector2 { - protected double x; - protected double z; + private static final Vector2 ZERO = new Vector2(0, 0); + private static final Vector2 UNIT = new Vector2(0, 1); + protected double x, z; /** * Create a vector with a given X and Z component diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2Int.java b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2Int.java index 09ce8715d..1a64414c8 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2Int.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2Int.java @@ -9,8 +9,7 @@ import com.dfsek.terra.api.util.Rotation; public class Vector2Int { private static final Vector2Int ZERO = new Vector2Int(0, 0); private static final Vector2Int UNIT = new Vector2Int(0, 1); - protected int x; - protected int z; + protected int x, z; protected Vector2Int(int x, int z) { this.x = x; diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java index 1c024eaf1..f065d0366 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java @@ -13,9 +13,9 @@ import com.dfsek.terra.api.util.MathUtil; public class Vector3 { - protected double x; - protected double y; - protected double z; + private static final Vector3 ZERO = new Vector3(0, 0, 0); + private static final Vector3 UNIT = new Vector3(0, 1, 0); + protected double x, y, z; private Vector3(double x, double y, double z) { this.x = x; From c41bf55b7b59da0709ab6880b0e9083051a41d81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Thu, 26 Oct 2023 12:53:55 -0600 Subject: [PATCH 4/4] implement missing methods from last comit --- .../main/java/com/dfsek/terra/api/util/vector/Vector2.java | 7 +++++++ .../main/java/com/dfsek/terra/api/util/vector/Vector3.java | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java index 48d796274..191b0e449 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java @@ -28,6 +28,13 @@ public class Vector2 { this.x = x; this.z = z; } + public static Vector2 zero() { + return ZERO; + } + + public static Vector2 unit() { + return UNIT; + } public static Vector2 of(double x, double z) { return new Vector2(x, z); diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java index f065d0366..bce63c2ea 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java @@ -22,6 +22,13 @@ public class Vector3 { this.y = y; this.z = z; } + public static Vector3 zero() { + return ZERO; + } + + public static Vector3 unit() { + return UNIT; + } public static Vector3 of(double x, double y, double z) { return new Vector3(x, y, z);