package net.minecraft.world.level.levelgen.feature;

import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.levelgen.structure.BoundingBox;
import net.minecraft.world.level.block.Rotation;
import net.minecraft.world.level.levelgen.feature.structures.StructurePoolElement;
import net.minecraft.world.level.levelgen.structure.PoolElementStructurePiece;
import java.util.Random;
import net.minecraft.world.level.levelgen.feature.structures.JigsawPlacement;
import net.minecraft.world.level.levelgen.feature.configurations.VillageConfiguration;
import net.minecraft.world.level.levelgen.WorldgenRandom;
import net.minecraft.world.level.levelgen.structure.StructurePiece;
import java.util.List;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureManager;
import net.minecraft.world.level.chunk.ChunkGenerator;

public class VillagePieces {
    public static void addPieces(final ChunkGenerator<?> caa, final StructureManager cmo, final BlockPos fk, final List<StructurePiece> list, final WorldgenRandom ccf, final VillageConfiguration chm) {
        PlainVillagePools.bootstrap();
        SnowyVillagePools.bootstrap();
        SavannaVillagePools.bootstrap();
        DesertVillagePools.bootstrap();
        TaigaVillagePools.bootstrap();
        JigsawPlacement.addPieces(chm.startPool, chm.size, VillagePiece::new, caa, cmo, fk, list, ccf);
    }
    
    public static class VillagePiece extends PoolElementStructurePiece {
        public VillagePiece(final StructureManager cmo, final StructurePoolElement cik, final BlockPos fk, final int integer, final Rotation btu, final BoundingBox clb) {
            super(StructurePieceType.VILLAGE, cmo, cik, fk, integer, btu, clb);
        }
        
        public VillagePiece(final StructureManager cmo, final CompoundTag jt) {
            super(cmo, jt, StructurePieceType.VILLAGE);
        }
    }
}
