Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
at master 37 lines 1.6 kB view raw
1package net.lerariemann.infinity.structure; 2 3import com.mojang.serialization.Codec; 4import com.mojang.serialization.MapCodec; 5import com.mojang.serialization.codecs.RecordCodecBuilder; 6import net.lerariemann.infinity.access.StructureAccess; 7import net.lerariemann.infinity.registry.core.ModStructureTypes; 8import net.lerariemann.infinity.util.VersionMethods; 9import net.minecraft.core.registries.Registries; 10import net.minecraft.world.level.levelgen.structure.Structure; 11import net.minecraft.world.level.levelgen.structure.StructureType; 12import org.jspecify.annotations.NonNull; 13 14import java.util.Optional; 15 16public class SetupperStructure extends Structure { 17 String id; 18 public static final MapCodec<SetupperStructure> CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( 19 SetupperStructure.settingsCodec(instance), 20 (Codec.STRING.fieldOf("id")).forGetter(a -> a.id)).apply(instance, SetupperStructure::new)); 21 22 SetupperStructure(StructureSettings config, String i) { 23 super(config); 24 id = i; 25 } 26 27 @Override 28 public @NonNull Optional<GenerationStub> findGenerationPoint(GenerationContext context) { 29 Structure shadow = VersionMethods.getFromRegistry(VersionMethods.getRegistry(context.registryAccess(), Registries.STRUCTURE), VersionMethods.id(id)); 30 return shadow == null ? Optional.empty() : ((StructureAccess) shadow).invokeFindGenerationPoint(context); 31 } 32 33 @Override 34 public @NonNull StructureType<?> type() { 35 return ModStructureTypes.SETUPPER.get(); 36 } 37}