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

moving more methods to InfinityMethods

+36 -44
+3 -3
common/src/main/java/net/lerariemann/infinity/dimensions/RandomDimension.java
··· 63 63 type = new RandomDimensionType(this); 64 64 data.putString("type", type.fullname); 65 65 data.put("generator", randomDimensionGenerator()); 66 - for (Long l: random_biome_ids) if (does_not_contain(RegistryKeys.BIOME, "biome_"+l)) { 66 + for (Long l: random_biome_ids) if (doesNotContain(RegistryKeys.BIOME, "biome_"+l)) { 67 67 RandomBiome b = new RandomBiome(l, this); 68 68 random_biomes.add(b); 69 69 addStructures(b); ··· 153 153 } 154 154 } 155 155 156 - public <T> boolean does_not_contain(RegistryKey<? extends Registry<T>> key, String name) { 156 + public <T> boolean doesNotContain(RegistryKey<? extends Registry<T>> key, String name) { 157 157 return !(server.getRegistryManager().get(key).contains(RegistryKey.of(key, InfinityMethods.getId(name)))); 158 158 } 159 159 ··· 320 320 vanilla_biomes.add(biome); 321 321 } 322 322 else { 323 - long id = WarpLogic.getRandomSeed(random); 323 + long id = InfinityMethods.getRandomSeed(random); 324 324 random_biome_ids.add(id); 325 325 biome = "infinity:biome_" + id; 326 326 }
+3 -9
common/src/main/java/net/lerariemann/infinity/dimensions/features/RandomisedFeature.java
··· 4 4 import net.lerariemann.infinity.dimensions.RandomDimension; 5 5 import net.lerariemann.infinity.util.CommonIO; 6 6 import net.lerariemann.infinity.dimensions.RandomFeaturesList; 7 + import net.lerariemann.infinity.util.InfinityMethods; 7 8 import net.lerariemann.infinity.util.RandomProvider; 8 - import net.lerariemann.infinity.util.WarpLogic; 9 9 import net.minecraft.nbt.*; 10 - import net.minecraft.registry.Registry; 11 - import net.minecraft.registry.RegistryKey; 12 10 import net.minecraft.registry.RegistryKeys; 13 11 14 12 import java.util.List; ··· 24 22 NbtList placement_data; 25 23 26 24 public RandomisedFeature(RandomFeaturesList lst, String namecore) { 27 - this(WarpLogic.getRandomSeed(lst.random), lst, namecore); 25 + this(InfinityMethods.getRandomSeed(lst.random), lst, namecore); 28 26 } 29 27 30 28 public RandomisedFeature(long i, RandomFeaturesList lst, String namecore) { ··· 45 43 return InfinityMod.MOD_ID + ":configured_" + name; 46 44 } 47 45 48 - <T> boolean does_not_contain(RegistryKey<? extends Registry<T>> key) { 49 - return daddy.does_not_contain(key, name); 50 - } 51 - 52 46 void save_with_placement() { 53 - if (does_not_contain(RegistryKeys.CONFIGURED_FEATURE)) CommonIO.write(feature(), 47 + if (daddy.doesNotContain(RegistryKeys.CONFIGURED_FEATURE, name)) CommonIO.write(feature(), 54 48 parent.storagePath + "/worldgen/configured_feature", "configured_" + name + ".json"); 55 49 NbtCompound moredata = new NbtCompound(); 56 50 moredata.putString("feature", fullNameConfigured());
+3 -3
common/src/main/java/net/lerariemann/infinity/features/RandomPortalSetupper.java
··· 4 4 import com.mojang.serialization.codecs.RecordCodecBuilder; 5 5 import net.lerariemann.infinity.block.ModBlocks; 6 6 import net.lerariemann.infinity.block.entity.InfinityPortalBlockEntity; 7 - import net.lerariemann.infinity.util.WarpLogic; 7 + import net.lerariemann.infinity.util.InfinityMethods; 8 8 import net.minecraft.block.BlockState; 9 9 import net.minecraft.block.Blocks; 10 10 import net.minecraft.block.NetherPortalBlock; ··· 28 28 29 29 public static Set<Integer> tileChunkPositions(int start, int offset) { 30 30 Set<Integer> ls = new HashSet<>(); 31 - int mod = WarpLogic.properMod(start, offset); 31 + int mod = InfinityMethods.properMod(start, offset); 32 32 int d_start = mod == 0 ? 0 : offset - mod; 33 33 for (int d_curr = d_start; d_curr < 16; d_curr += offset) ls.add(start + d_curr); 34 34 return ls; ··· 70 70 71 71 public boolean generateOnePortal(StructureWorldAccess structureWorldAccess, BlockPos blockPos, Random random, 72 72 boolean axis_x, int width, int height, int sol, int soy) { 73 - long dim = WarpLogic.getRandomSeed(random); 73 + long dim = InfinityMethods.getRandomSeed(random); 74 74 for (int y = 0; y < height+2; y++) { 75 75 if (y == 0 || y == height+1) for (int l = 0; l < width+2; l++) { 76 76 setBlockState(structureWorldAccess, bpadd(blockPos, l, y, 0, axis_x), obs);
+1 -2
common/src/main/java/net/lerariemann/infinity/iridescence/Iridescence.java
··· 7 7 import net.lerariemann.infinity.entity.custom.ChaosPawn; 8 8 import net.lerariemann.infinity.item.ModItems; 9 9 import net.lerariemann.infinity.util.InfinityMethods; 10 - import net.lerariemann.infinity.util.WarpLogic; 11 10 import net.lerariemann.infinity.var.ModCriteria; 12 11 import net.lerariemann.infinity.var.ModPayloads; 13 12 import net.lerariemann.infinity.var.ModStats; ··· 171 170 172 171 public static Identifier getIdForWarp(ServerPlayerEntity player) { 173 172 ServerWorld w = player.getServerWorld().getServer().getOverworld(); 174 - return WarpLogic.getRandomId(new Random(w.getSeed() + w.getTime() / ticksInHour)); 173 + return InfinityMethods.getRandomId(new Random(w.getSeed() + w.getTime() / ticksInHour)); 175 174 } 176 175 177 176 public static final Map<EntityType<? extends MobEntity>, RegistrySupplier<? extends EntityType<? extends MobEntity>>> convertibles =
+4 -4
common/src/main/java/net/lerariemann/infinity/options/IridescentMap.java
··· 1 1 package net.lerariemann.infinity.options; 2 2 3 3 import net.lerariemann.infinity.iridescence.Iridescence; 4 - import net.lerariemann.infinity.util.WarpLogic; 4 + import net.lerariemann.infinity.util.InfinityMethods; 5 5 import net.minecraft.nbt.NbtCompound; 6 6 import net.minecraft.util.math.BlockPos; 7 7 ··· 11 11 12 12 public interface IridescentMap { 13 13 default int getColor(BlockPos pos) { 14 - return WarpLogic.properMod((int)(num_models * getHue(pos)), num_models); 14 + return InfinityMethods.properMod((int)(num_models * getHue(pos)), num_models); 15 15 } 16 16 default double getHue(BlockPos pos) { 17 17 return Iridescence.sample(pos); ··· 35 35 INSTANCE; 36 36 @Override 37 37 public int getColor(BlockPos pos) { 38 - return WarpLogic.properMod(pos.getX() + pos.getY() + pos.getZ(), num_models); 38 + return InfinityMethods.properMod(pos.getX() + pos.getY() + pos.getZ(), num_models); 39 39 } 40 40 } 41 41 enum RandomMap implements IridescentMap { ··· 54 54 record Static(int value) implements IridescentMap { 55 55 @Override 56 56 public int getColor(BlockPos pos) { 57 - return WarpLogic.properMod(value, num_models); 57 + return InfinityMethods.properMod(value, num_models); 58 58 } 59 59 } 60 60 }
+2 -2
common/src/main/java/net/lerariemann/infinity/options/PortalColorApplier.java
··· 1 1 package net.lerariemann.infinity.options; 2 2 3 - import net.lerariemann.infinity.util.WarpLogic; 3 + import net.lerariemann.infinity.util.InfinityMethods; 4 4 import net.minecraft.nbt.NbtCompound; 5 5 import net.minecraft.nbt.NbtElement; 6 6 import net.minecraft.nbt.NbtList; ··· 35 35 record Checker(NbtList values) implements PortalColorApplier { 36 36 @Override 37 37 public int apply(BlockPos pos) { 38 - int mod = WarpLogic.properMod(pos.getX() + pos.getY() + pos.getZ(), values.size()); 38 + int mod = InfinityMethods.properMod(pos.getX() + pos.getY() + pos.getZ(), values.size()); 39 39 return values.getInt(mod); 40 40 } 41 41 }
+19
common/src/main/java/net/lerariemann/infinity/util/InfinityMethods.java
··· 16 16 import net.minecraft.util.Identifier; 17 17 import net.minecraft.util.math.BlockPos; 18 18 import net.minecraft.util.math.ColorHelper; 19 + import net.minecraft.util.math.random.Random; 19 20 import net.minecraft.world.BlockRenderView; 20 21 import net.minecraft.world.World; 21 22 ··· 56 57 return sampler.sample(x, y, z); 57 58 } 58 59 60 + static int properMod(int a, int b) { 61 + int res = a%b; 62 + return (res >= 0) ? res : b + res; 63 + } 64 + 59 65 static int posToColor(BlockPos pos) { 60 66 double r = sample(pos.getX(), pos.getY() - 10000, pos.getZ()); 61 67 double g = sample(pos.getX(), pos.getY(), pos.getZ()); ··· 100 106 } 101 107 } 102 108 return 0xFFFFFF; 109 + } 110 + 111 + static long getRandomSeed(java.util.Random random) { 112 + return InfinityMod.longArithmeticEnabled ? random.nextLong() : random.nextInt(); 113 + } 114 + static long getRandomSeed(Random random) { 115 + return InfinityMod.longArithmeticEnabled ? random.nextLong() : random.nextInt(); 116 + } 117 + static Identifier getRandomId(java.util.Random random) { 118 + return getDimId(getRandomSeed(random)); 119 + } 120 + static Identifier getRandomId(Random random) { 121 + return getDimId(getRandomSeed(random)); 103 122 } 104 123 }
+1 -1
common/src/main/java/net/lerariemann/infinity/util/PortalCreationLogic.java
··· 101 101 static boolean modifyOnInitialCollision(Identifier dimName, ServerWorld world, BlockPos pos) { 102 102 MinecraftServer server = world.getServer(); 103 103 if (dimName.toString().equals("minecraft:random")) { 104 - dimName = WarpLogic.getRandomId(world.getRandom()); 104 + dimName = InfinityMethods.getRandomId(world.getRandom()); 105 105 } 106 106 PlayerEntity nearestPlayer = world.getClosestPlayer(pos.getX(), pos.getY(), pos.getZ(), 5, false); 107 107
-20
common/src/main/java/net/lerariemann/infinity/util/WarpLogic.java
··· 19 19 import net.minecraft.util.Identifier; 20 20 import net.minecraft.util.math.BlockPos; 21 21 import net.minecraft.util.math.ColorHelper; 22 - import net.minecraft.util.math.random.Random; 23 22 import net.minecraft.world.BlockView; 24 23 import net.minecraft.world.TeleportTarget; 25 24 import net.minecraft.world.World; ··· 58 57 59 58 static void onInvocationNeedDetected(PlayerEntity player) { 60 59 if (player != null) player.sendMessage(Text.translatable("error.infinity.invocation_needed")); 61 - } 62 - 63 - static int properMod(int a, int b) { 64 - int res = a%b; 65 - return (res >= 0) ? res : b + res; 66 60 } 67 61 68 62 static PortalColorApplier getPortalColorApplier(Identifier id, MinecraftServer server) { ··· 132 126 static long getDimensionSeed(String text, RandomProvider prov) { 133 127 HashCode f = Hashing.sha256().hashString(text + prov.salt, StandardCharsets.UTF_8); 134 128 return InfinityMod.longArithmeticEnabled ? f.asLong() & Long.MAX_VALUE : f.asInt() & Integer.MAX_VALUE; 135 - } 136 - 137 - static long getRandomSeed(java.util.Random random) { 138 - return InfinityMod.longArithmeticEnabled ? random.nextLong() : random.nextInt(); 139 - } 140 - static long getRandomSeed(Random random) { 141 - return InfinityMod.longArithmeticEnabled ? random.nextLong() : random.nextInt(); 142 - } 143 - 144 - static Identifier getRandomId(java.util.Random random) { 145 - return InfinityMethods.getDimId(getRandomSeed(random)); 146 - } 147 - static Identifier getRandomId(Random random) { 148 - return InfinityMethods.getDimId(getRandomSeed(random)); 149 129 } 150 130 }