Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.

Backport 2.4.3

+8 -9
+3 -3
common/src/main/java/net/lerariemann/infinity/dimensions/RandomDimension.java
··· 98 98 99 99 public void genBasics() { 100 100 type_alike = PROVIDER.randomName(random, "noise_presets"); 101 - min_y = 16*Math.clamp((int)Math.floor(random.nextExponential() * 2), isOverworldLike() ? -125 : -3, 0); 102 - int avgHeight = Math.clamp(RandomProvider.ruleInt("avgDimensionHeight"), 64, 1024); 103 - int max_y = 16*Math.clamp((int)Math.floor(random.nextGaussian(avgHeight/16.0, avgHeight/64.0)), isOverworldLike() ? 1 : 5, 125); 101 + min_y = 16*MathHelper.clamp((int)Math.floor(random.nextExponential() * 2), isOverworldLike() ? -125 : -3, 0); 102 + int avgHeight = MathHelper.clamp(RandomProvider.ruleInt("avgDimensionHeight"), 64, 1024); 103 + int max_y = 16*MathHelper.clamp((int)Math.floor(random.nextGaussian(avgHeight/16.0, avgHeight/64.0)), isOverworldLike() ? 1 : 5, 125); 104 104 randomiseblocks = PROVIDER.roll(random, "randomise_blocks"); 105 105 int sea_level_default = 63; 106 106 if (!isOverworldLike()) sea_level_default = switch(type_alike) {
+4 -2
common/src/main/java/net/lerariemann/infinity/util/InfinityMethods.java
··· 21 21 import net.minecraft.util.Identifier; 22 22 import net.minecraft.util.Util; 23 23 import net.minecraft.util.math.BlockPos; 24 + import net.minecraft.util.math.MathHelper; 25 + import net.minecraft.util.math.noise.DoublePerlinNoiseSampler; 26 + import net.minecraft.util.math.random.CheckedRandom; 24 27 import net.minecraft.util.math.random.Random; 25 28 import net.minecraft.world.BlockRenderView; 26 29 import net.minecraft.world.World; 27 30 import net.minecraft.world.WorldAccess; 28 31 29 32 import java.nio.charset.StandardCharsets; 33 + import java.util.Arrays; 30 34 import java.util.concurrent.atomic.AtomicBoolean; 31 - 32 - import static net.lerariemann.infinity.InfinityModClient.sampler; 33 35 34 36 /** Common mod methods that work identically on Fabric and NeoForge. 35 37 * @see PlatformMethods */
+1 -4
common/src/main/java/net/lerariemann/infinity/util/PlatformMethods.java
··· 7 7 import net.lerariemann.infinity.block.entity.BiomeBottleBlockEntity; 8 8 import net.lerariemann.infinity.block.entity.InfinityPortalBlockEntity; 9 9 import net.lerariemann.infinity.item.StarOfLangItem; 10 - import net.lerariemann.infinity.registry.core.ModComponentTypes; 11 - import net.lerariemann.infinity.util.var.ColorLogic; 12 10 import net.minecraft.block.Block; 13 11 import net.minecraft.block.BlockState; 14 12 import net.minecraft.block.FluidBlock; ··· 30 28 31 29 import java.nio.file.Path; 32 30 import java.util.function.Function; 33 - import java.util.function.Supplier; 34 31 35 - import static net.lerariemann.infinity.InfinityModClient.sampler; 32 + import static net.lerariemann.infinity.util.InfinityMethods.sampler; 36 33 37 34 /** 38 35 * Methods that require different implementations to work on Fabric vs. NeoForge and thus depend on {@link dev.architectury.injectables.annotations.ExpectPlatform}.