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

Completely fix Forge (probably)

+21 -3
+1 -1
common/src/main/java/net/lerariemann/infinity/mixin/MinecraftServerMixin.java
··· 133 133 if (PlatformMethods.isModLoaded("gravity_changer_q")) 134 134 GravityChangerCompat.changeMavity(world); 135 135 // Invoke load world event for listeners. 136 - ServerWorldEvents.LOAD.invoker().onWorldLoad((MinecraftServer) (Object) this, world); 136 + PlatformMethods.onWorldLoad(this, world); 137 137 } 138 138 139 139 @Override
+7 -1
common/src/main/java/net/lerariemann/infinity/var/ModMaterialRules.java
··· 1 1 package net.lerariemann.infinity.var; 2 2 3 + import com.mojang.serialization.Codec; 3 4 import com.mojang.serialization.MapCodec; 5 + import dev.architectury.registry.registries.DeferredRegister; 4 6 import net.lerariemann.infinity.InfinityMod; 5 7 import net.lerariemann.infinity.block.ModBlocks; 6 8 import net.lerariemann.infinity.util.RandomProvider; ··· 12 14 import net.minecraft.nbt.NbtElement; 13 15 import net.minecraft.registry.Registries; 14 16 import net.minecraft.registry.Registry; 17 + import net.minecraft.registry.RegistryKeys; 15 18 import net.minecraft.state.property.Properties; 16 19 import net.minecraft.util.Identifier; 17 20 import net.minecraft.util.dynamic.CodecHolder; ··· 362 365 } 363 366 } 364 367 368 + public static final DeferredRegister<Codec<? extends MaterialRules.MaterialRule>> MATERIAL_RULES = 369 + DeferredRegister.create(MOD_ID, RegistryKeys.MATERIAL_RULE); 370 + 365 371 public static <T extends CodecHolder<? extends MaterialRules.MaterialRule>> void register(String name, T holder) { 366 - Registry.register(Registries.MATERIAL_RULE, InfinityMod.MOD_ID + ":" + name, holder.codec()); 372 + MATERIAL_RULES.register(name, () -> holder.codec()); 367 373 } 368 374 369 375 public static void registerRules() {
+6 -1
forge/src/main/java/net/lerariemann/infinity/forge/PlatformMethodsImpl.java
··· 3 3 import dev.architectury.registry.registries.RegistrySupplier; 4 4 import io.netty.buffer.Unpooled; 5 5 import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; 6 + import net.fabricmc.fabric.mixin.registry.sync.RegistriesAccessor; 6 7 import net.minecraft.item.Item; 7 8 import net.minecraft.item.ItemGroup; 8 9 import net.minecraft.item.ItemGroups; 9 10 import net.minecraft.network.PacketByteBuf; 11 + import net.minecraft.registry.MutableRegistry; 10 12 import net.minecraft.registry.Registry; 11 13 import net.minecraft.registry.RegistryKey; 14 + import net.minecraft.registry.SimpleRegistry; 12 15 import net.minecraft.server.MinecraftServer; 13 16 import net.minecraft.server.world.ServerWorld; 17 + import net.minecraft.world.dimension.DimensionOptions; 14 18 import net.minecraftforge.common.MinecraftForge; 15 19 import net.minecraftforge.event.level.LevelEvent; 16 20 import net.minecraftforge.fml.ModList; ··· 40 44 } 41 45 42 46 public static void unfreeze(Registry<?> registry) { 43 - // ((net.fabricmc.fabric.mixin.registry.sync.RegistriesAccessor) registry).invokeUnfreeze(); 47 + SimpleRegistry<?> writableRegistry = (SimpleRegistry<?>) registry; 48 + writableRegistry.unfreeze(); 44 49 } 45 50 46 51 public static void freeze(Registry<?> registry) {
+7
forge/src/main/resources/pack.mcmeta
··· 1 + { 2 + "pack": { 3 + "description": "Infinite Dimensions", 4 + "forge:server_data_pack_format": 15, 5 + "pack_format": 15 6 + } 7 + }