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

import com.mojang.datafixers.Dynamic;
import com.mojang.datafixers.types.DynamicOps;
import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.levelgen.structure.BoundingBox;
import java.util.Collections;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
import java.util.List;
import java.util.Random;
import net.minecraft.world.level.block.Rotation;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureManager;

public class EmptyPoolElement extends StructurePoolElement {
    public static final EmptyPoolElement INSTANCE;
    
    private EmptyPoolElement() {
        super(StructureTemplatePool.Projection.TERRAIN_MATCHING);
    }
    
    @Override
    public List<StructureTemplate.StructureBlockInfo> getShuffledJigsawBlocks(final StructureManager cmo, final BlockPos fk, final Rotation btu, final Random random) {
        return Collections.<StructureTemplate.StructureBlockInfo>emptyList();
    }
    
    @Override
    public BoundingBox getBoundingBox(final StructureManager cmo, final BlockPos fk, final Rotation btu) {
        return BoundingBox.getUnknownBox();
    }
    
    @Override
    public boolean place(final StructureManager cmo, final LevelAccessor bjx, final ChunkGenerator<?> caa, final BlockPos fk, final Rotation btu, final BoundingBox clb, final Random random) {
        return true;
    }
    
    @Override
    public StructurePoolElementType getType() {
        return StructurePoolElementType.EMPTY;
    }
    
    public <T> Dynamic<T> getDynamic(final DynamicOps<T> dynamicOps) {
        return (Dynamic<T>)new Dynamic((DynamicOps)dynamicOps, dynamicOps.emptyMap());
    }
    
    @Override
    public String toString() {
        return "Empty";
    }
    
    static {
        INSTANCE = new EmptyPoolElement();
    }
}
