Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
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}