Protocol Hack

Have you ever wondered how some Minecraft servers support different Minecraft versions? Well, I will let you on a little secret how you can do that. It's called Protocol hack.
This is simply a technique where we have a protocol transformer (Protocol hack plugin) that transforms server packets to version client understands and vice versa.

We can allow players on older or newer versions to join our server.

Note

Minecraft Game Client versions older than the server's version will display new blocks, items and mobs differently with blocks, items and mobs available on it. Features of newer clients, not present on the server's version, won't work. PvP will also behave like the one of server's version. If you want Old PvP (pre 1.9) on your server for all players, install OldCombatMechanics plugin.

Most popular Protocol hack plugins and the ones I recommend using are ViaVersion, ViaBackwards and ViaRewind.

ViaVersion allows players on newer versions than server's to join.
ViaBackwards allows players on older versions back to 1.9 to join.
ViaRewind allows players on 1.8.x and 1.7.10 versions to join.

Info

ViaBackwards and ViaRewind depend on ViaVersion and can't work without it. If you plan on installing one of them or both, you also have to install ViaVersion as well.

Don't worry! If you don't want to add ViaVersion because you don't want players on newer versions to join your server, that is fine! We can always block specific versions from connecting. Explained later on...