package tc.oc.pgm.filters.matcher.block;

import org.bukkit.Material;
import org.bukkit.block.BlockState;
import tc.oc.pgm.filters.matcher.TypedFilter;
import tc.oc.pgm.filters.query.IBlockQuery;
import tc.oc.pgm.listeners.WorldProblemMatchModule;

/**
 * Matches blocks that have only air/void below them
 */
public class VoidFilter extends TypedFilter.Impl<IBlockQuery> {

    @Override
    public boolean matches(IBlockQuery query) {
        final BlockState block = query.getBlock();
        return block.getY() == 0 ||
               (!query.getMatch().needMatchModule(WorldProblemMatchModule.class).wasBlock36(block.getX(), 0, block.getZ()) &&
                block.getWorld().getBlockAt(block.getX(), 0, block.getZ()).getType() == Material.AIR);
    }

    @Override
    public String toString() {
        return "VoidFilter{}";
    }
}