Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
at create-6.0 45 lines 1.8 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.registry.core.ModStructureTypes; 7import net.minecraft.structure.StructurePiecesCollector; 8import net.minecraft.world.Heightmap; 9import net.minecraft.world.gen.stateprovider.BlockStateProvider; 10import net.minecraft.world.gen.structure.Structure; 11import net.minecraft.world.gen.structure.StructureType; 12 13import java.util.Optional; 14 15public class PyramidStructure extends Structure { 16 public static final MapCodec<PyramidStructure> CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( 17 PyramidStructure.configCodecBuilder(instance), 18 (Codec.INT.fieldOf("top_y")).forGetter(a -> a.top_y), 19 (Codec.INT.fieldOf("bottom_y")).forGetter(a -> a.top_y), 20 (BlockStateProvider.TYPE_CODEC.fieldOf("block")).forGetter(a -> a.block)).apply(instance, PyramidStructure::new)); 21 int top_y; 22 int bottom_y; 23 BlockStateProvider block; 24 25 PyramidStructure(Structure.Config config, int i, int j, BlockStateProvider p) { 26 super(config); 27 top_y = i; 28 bottom_y = j; 29 block = p; 30 } 31 32 @Override 33 public Optional<StructurePosition> getStructurePosition(Structure.Context context) { 34 return PyramidStructure.getStructurePosition(context, Heightmap.Type.WORLD_SURFACE_WG, collector -> addPieces(collector, context)); 35 } 36 37 private void addPieces(StructurePiecesCollector collector, Structure.Context context) { 38 collector.addPiece(PyramidGenerator.of(context, top_y, bottom_y, block)); 39 } 40 41 @Override 42 public StructureType<?> getType() { 43 return ModStructureTypes.PYRAMID.get(); 44 } 45}