With Minecraft, mods can be used in many different ways, but did you know some mods are fundamentally different in how they function?
Many people think a mod is something that gets plugged into a server and off you go. This is true for most mods, but for some mods, they skip the server requirement and only need to be installed on the client. How is that so? Well, these are mods called client-side mods.
What does client-side mean?
So, before we start looking into what a client-side mod is, we have to break down what client-side even means.
First, the game is broken down into two sides: a client, and a server. The server is what a player will be interacting with. A server comes in two forms: an Integrated and a Dedicated server, where one is a world hosted by a player, and the other is hosted separate from the player. As for the client, this is the individual player, yourself.
There’s also another “client” and “server”, referred to as “logical client” and “logical server”. Where a client and server refers to who is running the game, the logical sides refer to the game’s code and how it runs. The logical server handles code that affects the world, while the logical client affects only what a player - the client - will see.
To help, let’s imagine a bar. The server is the bartender, and you are the client. When you walk up to the bar, there is a menu in front of you. Reading this menu is your task, so the logical client is you reading this menu to figure out what to order. As for the bartender, once you relay what you want, they will make your order. You aren’t involved in that creation process, so this would be the logical server.
The game is like a bar, with the client-side being your side, and the server-side being the bartender’s side. You are the client, and the logical client is what you do to make the order. The bartender is the server, and their job is the logical server. When data is relayed between the two, that is the client communicating with the server.
What is a client-side mod?
Now that we know what the difference is between the client and server, how does this affect a mod? Well, let’s go back to the bar. Let’s say you’re struggling to read the menu, so you bring a magnifying glass. This magnifying glass makes the text appear bigger on the menu, aiding in the ordering step. The bartender doesn’t need a magnifying glass to read the menu, because all they need is for you to place your order, then they will make it.
A mod that would require installing on a server would require synchronising data between the client and server, especially registry entries like new blocks, new items, and new entities. These are required on both sides so that if the player does something, the client notifies the server and the server will relay this information to every other player. This is the same as ordering the drink. It’s on the menu, the bar has the instructions, the information just needs to be relayed.
Mods that only need to be installed on the server only change how the game’s existing features function. These could be mods that process server data, the handling of data between client and server, or anti-cheats. One mod that would be considered server-side is Spark, a mod that runs a profiler on the server to monitor health. As far as the client is concerned, Spark is simply sending chat messages. You can watch the bartender make the order, but you don’t get involved.
The server handles processing, networking, and player management tools like anti-cheat. As long as the server does not relay additional info to the client, these remain on the server.
Now, on the other hand, a client-side mod is handling information that doesn’t concern the server. Mods such as Sodium and Iris would be a client-side mod as they handle rendering and shaders. The server doesn’t have any information on how to render or display visuals, so it doesn’t matter. This is one way a mod is determined to be client-side. This would be the magnifying glass, or maybe a translator if the menu is written in another language.
A client-side mod would affect features such as controller input, menu displays, and rendering such as shaders. Anything here does not affect the server.
The extra bonus with a client-side mod is that only you, the player, can install the mod. Maybe there’s a mod you want that adds extra particle effects to certain actions. You can install it and still connect to a server. Conversely, you can remove a client-side mod from a modpack and still connect just fine. Is everyone using a mod that smooths out animations but you don’t like it? Simply uninstall the mod. Client-side mods are not bound to what happens on the server.
What if I install a client-side mod on a server?
There are two things that can happen if we install a client-side mod on the server. The effects aren’t necessarily destructive, but it can range from nothing happening to the server not working.
Bringing us to the first possible case, nothing happens. A client-side mod generally knows when it is installed on a dedicated server, so rather than try to run logic when it couldn’t, it checks for the side. If the mod notices it’s on the wrong side, it will stop running. In this case, the mod is just a paperweight if it was the same weight as paper.
However, some mods might not do this check correctly. This is where certain server-stopping errors can happen. There are a number of ways this can present, such as a crash report that says the specific mod couldn’t find the client-side code, or a mod trying to get information on the system’s graphics. When this happens, simply remove the file from the server and try again.
Why would a client-side mod crash? It’s because servers are stripped-down versions of the game. Code that would only matter to the client is being given to the server, but the server doesn’t have that sort of information on hand. It would be like asking the bartender to only read instructions in your translated language.
How do I know if the mod is client-side?
There’s a general rule of thumb with identifying a client-side mod. If the mod only affects what you can see, the mod’s functions are client-side. Anything that affects menus, tooltips, particles, and rendering, are a visual change. Therefore, if the only thing that happens with the mod is only what you see, it is client-side. Additionally, anything that affects control inputs will be client-side as the server does not need an input.
As an earlier example with Sodium and Iris, these are commonly used for shaders. The server can’t “see” a shader because it doesn’t have a screen. Similarly, a mod like Controllable is client-side because it assists in using a gamepad, but the server doesn’t take in controller inputs, only commands.
Some mods may also mark themselves as “Client” on the platform they are on. This could be written in the page description or on the project summary. Curseforge, for example, allows modders to list a mod as Client, Server, or both. Any mod that is Client Only is a client-side mod. Note that a mod marked for both Client and Server can include client-only features, or additional features when installed on the server. In this case, a mod may describe if they are client-side. Always double-check the mod’s compatibility when uploading mods to a server.
I need help finding the client-side mod!
If you did upload a client-side mod to the server that is causing the server to crash, not to worry. We have many ways to help with identifying the problematic mod. Log files are a good way to get an idea of what crashed and why, often bringing up the name of the mod or the mod’s file name. If a log file isn’t enough, there is also Binary Testing. Check out this blog on how Binary Testing works.
Still need help? Don’t hesitate to reach out! Our support team is well-versed in identifying what mods are client-side mods and what are mods that can belong on the server.
