Creating your Minecraft server is not easy. First you have to download and install the server, then you have to configure it and finally administer it. You don’t need any programming skills, at the end you will know how to create a Minecraft server !
You have undoubtedly heard of Minecraft servers, the ones that allow you to play online with other players from all over the world. You may also have known how to create your own in the past. However, it’s good to come back to the subject since some of the operations have changed, or are now of some importance.
Packed with plugins, these servers have the advantage of offering various game modes, from PvP Swap, to Fallen Kingdom, to simple Jump or Sheep Wars.
No doubt you’ve also felt like, instead of getting mixed up in a crowd of players, each one more knowledgeable than the other, staying in a more restricted setting, with friends or family on a 10 or 20 player server (your machine will depend on it).
That’s what the server provided by Mojang is for. Here, trade point, swap point, vault protection point, it’s raw formwork, which is what Minecraft was developed for : adventure.
For the most ambitious, we will see at the end of this article that it is already possible to go far with these “thin” bases. But in the meantime, let’s get started on the adventure of creating a small server that we’re going to take to the next level and turn it into something fun to spend an evening with friends who are fans of the game. Let’s go learn how to create your Minecraft server !
Installing the Minecraft server
To create your Minecraft server, you will need to download the launch file of our server on the official website of minecraft.net.
No-no! I don’t ask you to download the game, just go to the official server download page. You’ll understand when you arrive on this page :
There is a link called “minecraft_server.1.16.3.jar”. Just click on it. The download should start and ask you where you want to save the file from the server.
First tip, create a folder on your desktop where you will save the file you are about to download. Why should you do this? Because when you launch it, a certain number of files will be created and it will be handy to find them when you need to change some parameters of our server like the maximum number of players, the players who will be administrators, etc. Besides, it would be a pain in the ass to end up with a bunch of new files and folders on a desktop as well organized as mine! (I’m there, you don’t have to do anything on my desktop, naméoh!).
Second tip: do you still see our screenshot? (at worst, a stroke of the mouse wheel upwards and you find it, eh!). Note the very useful java code line. Yes it is! I assure you that you will certainly need it later. It’s the one that tells us :
java -Xmx1024M -Xms1024M -jar minecraft_server.1.16.3.jar nogui
This is just an indication of how to launch our Minecraft server, we’ll come back to this later, but note this in a notepad corner, it will be useful depending on your hardware configuration.
Have you seen this beautiful and tidy office? Well ok, it’s ok ! It’s uncluttered, sure, but clean, right ? Well, a nice little comment on my very first article (the last one?) and I’ll tell you the whole mess. All this to insist on the fact that I created a special folder for my little waiter which will be used as an excuse for long evenings between inveterate Minecraftiens.
It is in this folder that I downloaded the file server.jar.
For the moment, there is only this file. But a double click on it, and miracle !
Well, that’s all well and good, but you’ll have noticed that, apart from creating a folder and 2 files for me, what does my server do to me ?
Well nothing! Indeed, after seeing a window appear in a more than fleeting way, nothing tells you that your server is active. And for good reason, it is not. Why is it not ? Hmmmm ! Let’s take a look at the “logs” folder. You’ll find a file (yes, only one for the moment, but it will increase tenfold!) called “latest.log”. Usually, a “logs” folder is always interesting in case of a problem. A log lists the events related to the execution of a program. Let’s open it with our favorite text editor (a double click on it should be enough).
What do we read in it? Chronologically, what interests us is to know why our server crashes: its last breath. We look at the end of the file and we go back up little by little to discover an essential information.
[Server thread/INFO] : You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
Damn, I can’t wait! When will my server be up and running? Well now! Just open the file the log is talking about! Namely EULA.TXT, in the same folder as your server.jar file! Let’s use the mouse wheel to find the screenshot of our server folder. Or at worst, at this stage, you haven’t closed the said folder yet ! So go ahead !
Concretely, we are explained here that to indicate that we agree with the EULA (End User Licence Agreement), we must manually specify it by “true” instead of “false” on the line “eula=false”.
Well, we’re talking about a little server between friends here! We’re certainly not at the level of a Hypixel or Epicube or PleaseCraft (well, I mentioned three of them, it’s okay, the CSA won’t fall on me?). But if you’re missing reading, go have fun on Mojang’s user license agreement to master all the rules that govern the use and uploading of a Minecraft server. After all, if I’ve managed to inspire a few of them to create a 10,000-slot Minecraft server, you might find it useful.
Anyway, put “true” instead of “false”. Then save the eula.txt file and restart your server by double-clicking server.jar again.
A nice dull window should appear with lots of information about the launch of the holy server.
Well, actually, it’s better to get a little bit of what she’s saying from the window. It can help afterwards. The trick here is our server’s console, and it can give us a lot of useful information, like the players on our server (well, I don’t have any friends, my name isn’t Rémi, but that’s not better, as the console shows!), the memory used to run the server, and, on the right, everything that’s happening in real time. The time needed to generate the world, the chat between players, the messages that appear during the game and an important tip: “To start the server with more ram, launch it as ” java -Xmx1024M -Xms1024M -jar minecraft_server.jar ” “.
And here, a little explanation is necessary. To launch a .jar file, you will need to use the command “java” followed by the file you want to run. In between, you can specify specific parameters such as the amount of RAM allocated to run the java program. Here these parameters are called Xms and Xmx.
Xms = the default amount of memory for program usage.
Xmx = the maximum amount of memory allocated to the program.
In other words, when the console advises us to use the parameter
"java -Xmx1024M -Xms1024M -jar minecraft_server.jar“, it simply tells us to force java to run minecraft_server.jar with 1024MB of default memory and 1024MB of maximum memory (in other words, 1024MB, period!).
Do you have a PC with a large RAM capacity? Well, you can imagine putting this in :
java -Xmx4096M -Xms2048 -jar minecraft_server.jar
Here, I tell my little java to run minecraft_server.jar with 2048Mb of RAM by default, but hey, Coco, if you need it, don’t hesitate to pump up to 4096Mb of RAM, be my guest !
Anyway, don’t forget that behind this little server, you’ll have to run other applications. I don’t know me, like Minecraft, eh! It would be better to take advantage of our server! That’s all well and good friend, but this server is yours, you have the right to enjoy it! So, avoid too high RAM allocations. Personally, a Vanilla server on my ASUS Windows 10 64bits and 8 GB of RAM, I run with Xms1024Mo and Xmx2048Mo parameters without lag with 5 to 10 players. Oh yeah man, you don’t have a dedicated server ! You can’t host 1000 people ! I talked about user-friendliness !
Oh yeah but he talks, he talks, the other one but how do I do that, me?
- You right click in the folder of your server.jar file.
- You click on “New” and then “Text document”.
- You call it (for example, otherwise you can’t be bothered) “server.bat” (if-if! change the extension too, that’s important!).
- Here, we ask you if you want ch…. YOU ANSWER YES !
- Right click on it then “modify”.
- And there you write the magic sentence that I’ve been whispering to you since earlier with the arguments that go with your hardware configuration (RAM). To begin, indicate what Mojang recommends. Nothing prevents you from modifying these parameters later on (always by right-clicking on your server.bat file). But for now, “java -Xmx1024M -Xms1024M -jar server.jar”. Save your file and quit it.
Here, server.jar is the file I downloaded earlier.
At this stage of the tutorial, the console is still running (since I didn’t tell you to close it). In this console, in the bottom right corner, you have an input field in which I ask you to write “stop”, like here :
Press “Enter”, the server will stop. This is normal since you ordered it to do so. Yes, you are the master of the game!
But as you are versatile, you will force it to restart, but this time with the help of your “server.bat” file, which will force it to run with the specified RAM allocation parameters instead of playing “I’ll do as I please”. Baaammmm! You confirm that you’re the boss! And now even the server has understood who the boss is here, and it doesn’t even ask you for the right RAM settings anymore. “You fed the beast! ».
“Mom? Earlier, the gentleman wanted me and now he says “you”. He’s too weird! ».
Yeah, and that’s normal. You have to build a bond with the person you’re talking to. And if you’ve reached this point, it’s because you deserve that I go further in my explanations. And in particular, the configuration of your server. You are a good student. The others are only dunces. And look what awaits you !
“aaaaargh! but what is what ???? ». Nothing else than your original file which has grown a little bit, my young Padawan! Its name is still “server”. The file on your server is still called “server.jar”. But two important things you will have to know ! The first one is “server.properties” and the second one is the “world” folder.
To make it simple, the “world” folder is equivalent to the different backups in your “saves” folder. You know, the one in your famous %APPDATA%/.minecraft/ directory. Be patient, we’ll see later.
For now, a “big” piece is waiting for you: the configuration file of your Vanilla server.
The Minecraft server configuration file
This is your “server.properties” file that you are going to open by right clicking on it (in your “Server” folder created at the beginning, are you following or not?) then you click on “Open with”. I use Sublime Text but you can use Notepad, you’re not scripting a talking clock for daddy’s pills ! Roughly speaking, there are about thirty lines, of which you will certainly only use a few for the moment.
Decrypting the file :
Generator-settings = an option that is used to customize flat worlds.
Op-permission-level = This is the level that an “administrator” can reach in his server management process. If you designate someone as “op”, if you assign the :
- it will not be affected by spawn protection.
- He can use the commands /clear, /difficulty, /effect, /gamemode, /gamerule, /give, /tp, and modify command blocks in addition to spawn protection.
- it can use the commands /ban, /deop, /kick, and /op in addition to the above commands.
- It can use the /stop command in addition to all of the above commands.
- allow-nether = allow generation of the Nether map (true or false)*.
level-name = name of the map that the server should load. This is the default name. We’ll see that it’s possible to bring our own maps and launch them on the server by telling the server the name of the map to be played.
enable-query = true or false. The idea here is to allow the use of a specific protocol that says “my server is here, hou hou ! friends ! I’m here ! my name is machin, I have so many players, I’m open to any proposition”, but within a specific framework that is Gamespy4, so, no, false. I stay among friends.
allow-flight = flight authorization, here, Boeijang 447 Magnum: simply, creatively, always authorized, so it’s survival that is at stake. True = I have the right to fly. False = I’m not allowed to fly.
announce-player-achievements = does the server have to notify everyone of everyone’s brave deeds? “so-and-so opened the inventory! Yihaaaa!”. It’s up to you!
server-port = well, there is a default port indicated. The 25565. If you stay within the LAN, it’s not too annoying. If, on the other hand, like me, you invite people from outside the palace, well, you can like to change this thing, provided you know how to open the subsequent ports on your box. I’ll give some tips at the end of the tutorial, and that will be part of it, because I’m not really worried about security at home, and I’d like to share my experience with you.
max-world-size = another option that is useless, if not confusing. Well, it should play on the maximum size of the world, but it’s advisable to leave the default option untouched.
level-type=DEFAULT = type of map that is generated :
- DEFAULT : standard world, generated as usual under Minecraft without modification.
- FLAT : flat world, without structure, nothing, empty.
- LARGEBIOMES : the same as in DEFAULT but with a larger vaaaaaachement.
- AMPLIFIED : the same as in DEFAULT but with higher vaaaaaachement.
- CUSTOMIZED : the same as in DEFAULT but with a bigger purchase … nothing because in this case we take into account what is in Generator-settings.
- enable-rcon = allow access to a remote console (false)
force-gamememode = if it’s false, the players will arrive in the game as they left it, if it’s true, the gamemode in the configuration file will be used to force the game mode of the players.
level-seed = specify a “seed” for the generation of the world. Like in solo, what.
server-ip = to specify only if you want to run a server on a remote IP. LEAVE IT EMPTY, WHAT !
network-compression-threshold = well, here we’re talking about packets sent over the network. Specifically about the compression they have to undergo to pass well. Computing is about 0s and 1s (binary). Make sure that your cables are not tangled. It makes turns and the 1 doesn’t go through the curves, unlike the 0’s which are round, fluid and follow the curves of your tangled cables. Well, ok, feverish theory that only serves to get me out of a situation where I didn’t find anything deeply documented about this option. Let’s move on to the next one.
max-build-height = the maximum height you will be able to reach in your constructions. This will not prevent the server from generating land beyond the set limit (256 blocks by default).
spawn-npcs = you want to trade with villagers? Send true, otherwise send false.
white-list = you want to choose the list of your guests on your server ? Send true and fill your invitation card in the “whitelist.json” file (ok, we’ll see that later) otherwise, leave false.
spawn-animals = do animals have to spawn. I think they do.
snooper-enabled = send data to minecraft.net or not? It’s up to you. I always change it to false out of paranoia. Which doesn’t hurt sometimes for our security!
hardcore = IMPORTANT ! false by default but if you set to true, the player is banned from the server as soon as he dies. It is up to the administrator to reintegrate him in this case.
resource-pack-sha1 = resource-pack control parameter. Not touched for the moment.
online-mode = UUID validity check on Mojang servers. Allows to check if the player is registered (has bought a game license). In short, this is equivalent to accepting only players with a premium game account when online-mode = true.
resource-pack = if you want to impose a resource-pack on the players of your server, indicate its download address here.
Pvp = true (default), pvp is enabled on your server, players can hit each other and suffer damages. If it’s on false, you can always try to hit a player, he won’t lose his life.
Difficulty = level of difficulty of the game. You have to specify a number from 0 to 3.
- 0 = peaceful
- 1 = easy
- 2 = normal
- 3 = difficult
enable-command-block = by default, this parameter is set to false. In this case, command execution will not be able to be done by command blocks. If you want to enable this function to make your Minecraft server more interactive like for example a button that teleports the player who presses it into the lava (hi hi!), you will have to set this option to true.
player-idle-timeout = This is the time, in minutes, after which the player is ejected from the server if he shows no sign of activity. By default, 0 is specified, which disables this option. If I put 6, for example, after 6 minutes without doing anything (moving, clicking, pressing a key, …), the player is kicked out.
Gamemode = this parameter affects the type of gameplay of your server, by indicating an integer from 0 to 3 :
- 0 = survival (default)
- 1 = creative
- 2 = adventure
- 3 = spectator
max-players = here you can indicate the maximum number of players that your server can host. By default, your server indicates 20 but be careful. Depending on the PC that will host the server, this number of players will affect the game performance. In any case, you can leave this parameter on 20, what will be decisive will be the number of simultaneous connections. Imagine that you leave it on 20, and there, your server is so great that your friends have talked about it, they gave each other the address of your server and bim! 30 peeled try to connect to it at the same time. Well, already, good luck so that your server doesn’t crash if the PC hosting it has only 2 GB of RAM and a saturated hard disk. But, this setting will try to avoid such a situation by forbidding the 21st player (and the following ones) to access the server. Those ones will have to wait for players to disconnect. You lose some buddies, but you win a server that holds up!
max-tick-time = well, I didn’t really plan to go as far as explaining that, but considering what I explained for “max-players”, it can help to understand a lot of things. Besides, you seem to me full of perseverance, little Beetle!
To make sure that everything goes well in the game, all tasks are synchronized with a program loop. Sometimes it lag. Tasks are more difficult to accomplish and are no longer synchronized with this loop. We will control the delay of these tasks.
Roughly 20 ticks per second. You should know that in a Minecraftian day, there are 24,000 ticks during which the position of the “moving objects” will be calculated, plants will grow, the weather will change, your hunger bar will decrease, etc. So many calculations that will eat your little megabytes of RAM.
Minecraft decides that for such and such a tick, it will update a block of wheat (randomly by the way, which explains why it’s not necessarily the first wheat seed that will give wheat first!). Except that you have 20 players on your server. This already represents 20 players for whom you will have to update position, hunger, life, etc.
And here is the drama, your little server notices that it takes him more time to grow this wheat. Instead of 1/20th of a second, he takes 1/10th, then 1/5th. The pending tasks accumulate and wham! 60 000 milliseconds are reached, the server goes to safety and sends back the request system.exit which closes the server.
spawn-monsters = I have the right to spawn monsters? Yes = true. No = false.
view-distance = easy! This is the view-distance of the landscape. You see the famous fog? You can increase this view-distance but it will be at the expense of the performance for the players (and the server, by the way, watch out for ticks!).
generate-structures = Do you want to discover villages, temples? If yes, type the true if not, type the false.
motd = This is the little message that appears under the server name when the players are looking for it.
Well, there you go! Are you still there? You haven’t given up yet? Normally, if you’ve followed the instructions, the configuration file has no more secrets for you, your server is launched with parameters that suit you and you can finally play with your friends.
From now on, you can customize your server, put a map of your choice! Hey! you spent hours creating a world in solo that only you can visit. It’s time to bring your friends. It’s easy to do that.
Installing a map on the Minecraft server
The first thing to do is to import your map into the server directory. If you remember well, we created a special folder for it on our “Desktop” (still as tidy as ever). This is where we will copy our world. Is that it? The “world” in English, as in our “server” folder.
Press the Windows and R keys simultaneously. Oh! A window called “Run”. No capital punishment here, but a simple method to find the map we want to use for our server and not only solo. In this window, type %appdata%/.minecraft .
The miracle is working and here is the new window that appears. All the data from the game is saved in this directory, including the maps you created solo. We’ll go to the “saves” directory and find there the backup we want to use in our server.
Well, don’t go and get the glasses from Granny, there’s no need, I’m the one who decided to hide what you didn’t have to see. You’ll understand, I’m going to put my test backup of 1.9 on my server and let my friends enjoy all the new “Combat Update” fun in a crazy PvP. Hmmm! You didn’t forget to set the “pvp” option to true in your server configuration file, did you? Otherwise, no combat!
Come on, a right click on my folder and then I click on “copy”.
I close everything and go to my “server” folder on my Windows desktop in perfect order. Right click on it and “paste”.
Yippee! I can use my solo map on my server ! euuuhhh, no, not yet. Because, by default, our server will search the “world” folder. This is its default world. From there, you have 2 options before launching your server.
- You can rename your “world” folder to “world_old” (or whatever you want as long as it is no longer the default name), then you rename your imported folder (here Test 1_9 Survival) to “world”. Your server will be happy to find a world with an evocative name for it and won’t care about its content. It won’t have fun comparing what was there before with what is there now. It works, but hey, it’s a lot of manipulations when you can make it much simpler and, above all, cleaner.
- You might want to take a look at the configuration file of your server, server.properties . Indeed, in this file, there is a line “level-name= world”. This line indicates which world folder to use for our server. Instead of renaming the folders, you can simply indicate the name of the folder you copied earlier, here, “Test 1_9 Survival” (even spaces are understood by your server! Magic!).
That’s it! You can now launch your server by double-clicking on “server.bat” that we created at the beginning. You will see that the console indicates that the folder “Test 1_9 Survival” is taken into account.
Just for your information, if you delete the “world” folder, your server will recreate it the next time you launch it. I advise you to make a regular backup.
Well, that’s too good ! My server is started and online. But how do my friends connect to it ? Now it’s coming.
Allowing friends to access the Minecraft server
First possibility, your friends are connected on your local area network (LAN), you just have to give them your local IP address which they will indicate in the server address.
You can find your local IP address by opening a “command prompt”. To do this, press the Windows and R keys simultaneously. Type “cmd” and then press the “Enter” key.
The “ipconfig” command will give you all the useful information about your network cards. Note the address starting with “192.168”. It is your local IP address that your Minecraftiens comparses will have to enter in the server address.
Simple, effective, or not, if your friends live 150 kilometers away from you. They are no longer on your local network and will have to use your public IP address with all the necessary security measures.
Hence the second possibility, if you allow your friends to connect to the Internet. In the era of very, very high speed broadband, we now use boxes that our Internet service providers lend us or rent or give us. These boxes act as firewalls, too, and prevent certain packets from reaching our computers. For example, we will have to tell our Box that we allow Minecraft packets to pass through and be redirected to a computer on our local network.
Return to our configuration file, to the line “server-port”. It says “25565”. This is the port that our server uses to send and receive data related to the game. By default, this data is blocked by our Box. So we’re going to do some “port redirection”.
Here, I take my Box as an example, i.e. my Freebox. The operation is more or less the same for the other Boxes, I’ll let you look for documentation if you can’t manage with my explanations.
I connect to its management interface and go to the “Port Management” menu.
I have created two specific rules for my server using port 25565. So I’m going to allow packets on this port to pass through the TCP and UDP protocols (don’t ask me too many details about this terminology anyway), and redirect them to my computer on which my server is running, at the address (not visible here) 192.168.0.45.
In my example, I allow all computers to access my server. I could go further (I even recommend it) and specify the IP addresses of my friends who are allowed to enter my server. It’s up to you to see with your friends so that they provide you with this information. Knowing that you will have to change the rules of your Box as new people will want to connect to your home. A good way to sort out your friends, eh?
Yesssssss! Well, we have everything set up? We just have to go to the following address:
Go on WhatIsMyIp and note the public IP address that is displayed. Yes, it’s yours! And it’s the one you’ll communicate to your friends who will rush to Minecraft, to the “Multiplayer” option to add your server, which they’ll give the name they want but the address you communicated to them in the form: my.adr.esse.ip:25565 . Ah yes, we’re not on the local network anymore and the Box doesn’t know that your friend wants to access your server whose port is 25565. If you don’t want your buddy to be blocked by the Box, he will have to say why he wants to enter your network. This is the port that will be used as an identity card.
Pfiouuuuuuuuuu! I’m still out of breath from all this diatribe! But, it’s good, our server is set up, running and accessible. You are the happy creator of a Vanilla server, very simple, but fully functional and not so ridiculous if you put your hands in the sludge.
Some editors are very competent in command blocks and authorize them on your server (server.properties?) and with some imagination, you are ready to make your Minecraft server attractive.
Minecraft Server Administration
Although the administration of your server is not as advanced as with a Spigot or Bukkit server, the bare minimum also exists on Vanilla. And it is in our “server” folder that you will find the files useful for user management.
You may have created the server, but you are not an administrator in its eyes. There is no such thing. Even you are a simple player. But, it’s also you who has the console in front of you and who can enter whatever you want. Like specifying that you are the boss. There are a number of commands you can use in the console to do this.
Try typing help at the bottom right and press enter. You will see a non-exhaustive list of commands available through the console. There are a total of 9 pages of help. To see them, type “help 2” or “help 3” to page 9 to scroll through all the commands.
The most interesting for you, Game Master, is certainly the “op” command. This is the command that allows you to use all the commands in the game. In the console, type “op ton_pseudo_ig”. You should get the answer “opped ton_pseudo_ig”. Hurrah! From now on you can ban, de-ban, teleport and kick (I like it, it’s fun!) players directly from the game and not only through the console.
Among the files that could be useful for you, here are those for which a little explanation is necessary:
- banned-ips.json : a guy connects to your server and kicks it ? As much as you can use the “/ban” command in Minecraft, you can also forbid access to him by his public IP address. You never know! You “ban” him, but he has a second Minecraft account (or steal his little brother’s one, the little bastard!). By specifying his IP address, no salvation for the rascal! All you have to do is edit the file and fill in the IP address to be banned.
- banned-players.json : Same principle as the previous file. You can indicate the nickname of the players to be banned. This file is self-complete when you use the “ban” command from Minecraft, as an operator. You will see that the information is even more complete (UUID, nickname, etc.). I won’t go into detail.
- ops.json : This is the list of players who have the title of operator (op, administrator, what). Like the previous file, you can fill it in with your favorite text editor and it will fill itself in if you use the “op” command from Minecraft.
- whitelist.json: Warning! If you fill in this file, only the players whose nickname appears in this list will be able to connect to your server.
For your information, it is quite complex to fill these files manually. The information is structured like this :
Each player has his own paragraph. Me, I truncated a part of the UUID for this tutorial. So rather than typing everything by hand, at the risk of making a mistake that would cause a problem loading the whitelist, there is a command that exists in Minecraft as an administrator. Gather all your friends and with the command “whitelist add nickname_of_your_pote”, you add them one by one to your whitelist. After restarting your server, only these players will be able to connect.
Same for all the other json files I mentioned. They have a command specific to them that will allow you to complete your files. For banned-ips.json, you have the command “/ban-ip” followed by the IP address to ban.
Now that the Minecraft server is created
I hope you will have read this tutorial with as much pleasure as I had in writing it. There are certainly some things I forgot to tell you about, but I think you are now armed to start creating your own Vanilla server. Later on, you might want to move on to a Spigot server, but right now, have fun, you and your friends!