Luffy is fighting Shanks.
Shanks doesn't need to be a villain for it.
Luffy made a promise to Shanks that he would gather a crew that wouldn't lose to Shanks', and he would claim the One Piece.
Shanks declared he's going after the One Piece.
Think Joey Wheeler vs Yugi duel. They aren't enemies, but they had to clash against each other with everything they got for their own goals.
It's not rocket science.
Teach still killing Shanks, though.