Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
at master 42 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.jetbrains.annotations.NotNull; 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 @NotNull Optional<GenerationStub> findGenerationPoint(GenerationContext context) { 29 Structure shadow = VersionMethods.getRegistry(context.registryAccess(), Registries.STRUCTURE) 30 //? if >1.21.2 { 31 .getValue(VersionMethods.id(id)); 32 //?} else { 33 /*.get(VersionMethods.id(id)); 34 *///?} 35 return shadow == null ? Optional.empty() : ((StructureAccess) shadow).invokeFindGenerationPoint(context); 36 } 37 38 @Override 39 public @NotNull StructureType<?> type() { 40 return ModStructureTypes.SETUPPER.get(); 41 } 42}