Players getting kicked from a modded server for a mod mismatch
Why clients bounce at Joining world, which mods must match and which must not, and how to read the rejection list.
What the server is telling you
Clients disconnect at "Joining world", or with a list of mods in the kick
message. Forge compares the client's registry and mod list against the
server's, and refuses anything that does not line up.
The rule that resolves most of these
Mods fall into three groups, and people routinely treat them as one:
Client-only — shaders, minimaps, zoom, HUD and animation mods.
These belong on clients and must not be on the server. Putting one
there causes a different crash entirely; see
client-only mod on the server.
Server-only — performance and management mods. Fine on the server,
must not be required of clients.
Both — anything adding blocks, items, entities or recipes. These
must match exactly, including version.
A client-only mod is not something to "add to the server so it matches". Mark it
client-side in your pack config instead.
Read the rejection list properly
The kick message names what disagreed. Two patterns worth knowing:
Same mod, different version — the most common cause by a wide
margin. Someone updated one side. Versions must match exactly, not merely
be compatible.
Present on one side only — decide which group above it belongs to,
then add or remove it accordingly.
After changing the pack
Everyone must have the same pack version. The usual failure is one player who
did not re-download. Bump the pack version so the launcher forces an update
rather than relying on people to do it.
Forge Server Doctor performs the whole procedure above — reads the report,
finds the real cause under the wrappers, skips the vanilla frames, and names
the mod jar. 24 failure modes, each with its fix. The free edition covers the
six most common startup failures.