The Minecraft Java Edition client knows how to communicate with any TCP server that follows the Minecraft server protocol. Servers that conform to this are called "Notchian" servers. While there is an official implementation of this server provided by Mojang, there are re-implementations and modifications of it.
Below you can see a hierarchy of the most popular server software based on the official server.
CraftBukkit is the most commonly known modification of the vanilla server. It doesn't change or modify the protocol, but it provides an API (Bukkit) for server-side modifications called plugins. CraftBukkit and Bukkit themselves have in turn be forked and modified multiple times. The most popular CraftBukkit fork nowadays is Spigot, which also has several popular forks.
CraftBukkit and most of its descendants are compatible with each other for the most part, meaning that you can often write a plugin for one of them and it will work on all of them.
See the API repository for a list of tools for Bukkit-based plugin development.
Sponge is another modified vanilla server independent of CraftBukkit. It also has a plugin system with an API to create server-side mods, but additionally, it's commonly used as a server for the Forge modding platform.
Cheetah is a Spigot fork by the SpigotMC Team. It allows you to disable entities and block ticking.
TacoSpigot is a even higher performance fork of Paper. (Not maintained anymore)
Tuinity is a Fork of Paper aimed to improve performance at high playercounts.
Akarin is a powerful Minecraft Server Software based on Tuinity by @akarin-project
Purpur is a fork of Paper, Tuinity, Airplane with the goal of providing new and interesting configuration options, which allow for creating a unique gameplay experience not seen anywhere else.
Airplane is a Performance orientated Bukkit implementation based off Tuinity.
Yatopia combines the code from many Paper forks and optimization mods, as well as many unique optimizations.
Nyper is a fork of Paper which forces you to use Java 11 and makes the /reload command nicer with better tab completion.
Forge is a modified version of the vanilla server (& client) just like CraftBukkit, but it's not only for server side modding, it also has a client version that must be installed to work.
Fabric is an alternative to Forge which aims to be more modular and with a more modern api than forge. It also has native support for Kotlin, Scala and Groovy.
There is a number of reasons why it may be beneficial to use a server that does not depend on the official vanilla server at all. First, it prevents the licensing issues that occur when redistributing proprietary code. Second of all, it gives you a lot more freedom in how to structure the server, which systems to use etc.
There are many independent Notchian server implementations and you can find unofficial lists on the internet. Below, we list a couple of Java-based servers that we find interesting.
-
Cleanstone by @Fionera and @MyzelYam
Cleanstone is an alternative server software that is based on Spring and Multi-Threading.
-
A Minecraft creative server built for redstone. Each 256x256 plot runs on a separate thread, allowing for less lag, more concurrency, and many awesome extra features.
-
Minestom is an alternative server software that aims to improve the performance.
Main features:
- Remove the overhead of vanilla features
- Multi-threaded (Chunks & Entities)
- Instance system which is much more scalable than worlds
- Modern API
In case you want to play around with the protocol in Java yourself, this may be of use:
-
MCProtocolLib provides a protocol library to send and receive packets without using Spigot as dependency.
-
minecraft-server by @NyCodeGHG
This is a small project by me experimenting with the minecraft protocol.
Reverse proxies can be used to coordinate connections between different servers.
BungeeCord is the de-facto standard for Minecraft Networks. You can link multiple servers together and dynamically switch between them. Most Networks use Waterfall by the PaperMC team. It's like Paper for spigot, but for bungeecord.
Velocity is a modern alternative to BungeeCord which is faster and more secure than BungeeCord. It also has a nice Plugin API. Also it provides some compatibility stuff, so it can handle the BungeeCord Plugin Messaging Channel.
-
Cloudburst is a server software for Minecraft: Bedrock Edition. It has a few key advantages: written in Java and friendly structure.
There are attempts to construct bridges between the Bedrock and the Java edition protocols, so that players from both editions can play together. Note that none is fully production ready or 100% functional yet.