package tc.oc.pgm.filters.query;
import java.util.Optional;
import javax.annotation.Nullable;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.event.Event;
import static com.google.common.base.Preconditions.checkNotNull;
public class BlockEventQuery extends BlockQuery implements IBlockEventQuery {
private final Event event;
public BlockEventQuery(Event event, World world, int x, int y, int z, @Nullable BlockState block) {
super(world, x, y, z, block);
this.event = checkNotNull(event);
}
public BlockEventQuery(Event event, BlockState block) {
this(event, block.getWorld(), block.getX(), block.getY(), block.getZ(), block);
}
public BlockEventQuery(Event event, Block block) {
this(event, block.getWorld(), block.getX(), block.getY(), block.getZ(), null);
}
public static IBlockQuery of(BlockState block, Optional<? extends Event> event) {
return event.<IBlockQuery>map(e -> new BlockEventQuery(e, block))
.orElseGet(() -> new BlockQuery(block));
}
@Override
public Event getEvent() {
return event;
}
}