Skip to content

Instantly share code, notes, and snippets.

@ktnjared
Last active January 20, 2023 17:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ktnjared/bd2afc5bdb2bb2181229972cb93d06c3 to your computer and use it in GitHub Desktop.
Save ktnjared/bd2afc5bdb2bb2181229972cb93d06c3 to your computer and use it in GitHub Desktop.
mcjava windows server setup notes.md

MC Java Server on Windows

Install Azul Zulu 17 JDK

PS C:\Users\jared> winget install azul.zulu.17.jdk

Make a directory for server and switch to it.

I'm using C:\mcjava\ for my test.

PS C:\Users\jared> New-Item -Path "C:\mcjava" -ItemType directory
PS C:\Users\jared> Set-Location "C:\mcjava"

Download Minecraft Server 1.19.3

PS C:\mcjava> Invoke-WebRequest https://piston-data.mojang.com/v1/objects/c9df48efed58511cdd0213c56b9013a7b5c9ac1f/server.jar -OutFile minecraft_server.1.19.3.jar

First run

Command

This is the command recommended by https://www.minecraft.net/en-us/download/server.

PS C:\mcjava> java -Xmx1024M -Xms1024M -jar minecraft_server.1.19.3.jar nogui

Output

Unpacking 1.19.3/server-1.19.3.jar (versions:1.19.3) to versions\1.19.3\server-1.19.3.jar
Unpacking com/github/oshi/oshi-core/6.2.2/oshi-core-6.2.2.jar (libraries:com.github.oshi:oshi-core:6.2.2) to libraries\com\github\oshi\oshi-core\6.2.2\oshi-core-6.2.2.jar
Unpacking com/google/code/gson/gson/2.10/gson-2.10.jar (libraries:com.google.code.gson:gson:2.10) to libraries\com\google\code\gson\gson\2.10\gson-2.10.jar
Unpacking com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar (libraries:com.google.guava:failureaccess:1.0.1) to libraries\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar
Unpacking com/google/guava/guava/31.1-jre/guava-31.1-jre.jar (libraries:com.google.guava:guava:31.1-jre) to libraries\com\google\guava\guava\31.1-jre\guava-31.1-jre.jar
Unpacking com/mojang/authlib/3.16.29/authlib-3.16.29.jar (libraries:com.mojang:authlib:3.16.29) to libraries\com\mojang\authlib\3.16.29\authlib-3.16.29.jar
Unpacking com/mojang/brigadier/1.0.18/brigadier-1.0.18.jar (libraries:com.mojang:brigadier:1.0.18) to libraries\com\mojang\brigadier\1.0.18\brigadier-1.0.18.jar
Unpacking com/mojang/datafixerupper/5.0.28/datafixerupper-5.0.28.jar (libraries:com.mojang:datafixerupper:5.0.28) to libraries\com\mojang\datafixerupper\5.0.28\datafixerupper-5.0.28.jar
Unpacking com/mojang/javabridge/2.0.25/javabridge-2.0.25.jar (libraries:com.mojang:javabridge:2.0.25) to libraries\com\mojang\javabridge\2.0.25\javabridge-2.0.25.jar
Unpacking com/mojang/logging/1.1.1/logging-1.1.1.jar (libraries:com.mojang:logging:1.1.1) to libraries\com\mojang\logging\1.1.1\logging-1.1.1.jar
Unpacking commons-io/commons-io/2.11.0/commons-io-2.11.0.jar (libraries:commons-io:commons-io:2.11.0) to libraries\commons-io\commons-io\2.11.0\commons-io-2.11.0.jar
Unpacking io/netty/netty-buffer/4.1.82.Final/netty-buffer-4.1.82.Final.jar (libraries:io.netty:netty-buffer:4.1.82.Final) to libraries\io\netty\netty-buffer\4.1.82.Final\netty-buffer-4.1.82.Final.jar
Unpacking io/netty/netty-codec/4.1.82.Final/netty-codec-4.1.82.Final.jar (libraries:io.netty:netty-codec:4.1.82.Final) to libraries\io\netty\netty-codec\4.1.82.Final\netty-codec-4.1.82.Final.jar
Unpacking io/netty/netty-common/4.1.82.Final/netty-common-4.1.82.Final.jar (libraries:io.netty:netty-common:4.1.82.Final) to libraries\io\netty\netty-common\4.1.82.Final\netty-common-4.1.82.Final.jar
Unpacking io/netty/netty-handler/4.1.82.Final/netty-handler-4.1.82.Final.jar (libraries:io.netty:netty-handler:4.1.82.Final) to libraries\io\netty\netty-handler\4.1.82.Final\netty-handler-4.1.82.Final.jar
Unpacking io/netty/netty-resolver/4.1.82.Final/netty-resolver-4.1.82.Final.jar (libraries:io.netty:netty-resolver:4.1.82.Final) to libraries\io\netty\netty-resolver\4.1.82.Final\netty-resolver-4.1.82.Final.jar
Unpacking io/netty/netty-transport/4.1.82.Final/netty-transport-4.1.82.Final.jar (libraries:io.netty:netty-transport:4.1.82.Final) to libraries\io\netty\netty-transport\4.1.82.Final\netty-transport-4.1.82.Final.jar
Unpacking io/netty/netty-transport-classes-epoll/4.1.82.Final/netty-transport-classes-epoll-4.1.82.Final.jar (libraries:io.netty:netty-transport-classes-epoll:4.1.82.Final) to libraries\io\netty\netty-transport-classes-epoll\4.1.82.Final\netty-transport-classes-epoll-4.1.82.Final.jar
Unpacking io/netty/netty-transport-native-epoll/4.1.82.Final/netty-transport-native-epoll-4.1.82.Final-linux-x86_64.jar (libraries:io.netty:netty-transport-native-epoll:4.1.82.Final:linux-x86_64) to libraries\io\netty\netty-transport-native-epoll\4.1.82.Final\netty-transport-native-epoll-4.1.82.Final-linux-x86_64.jar
Unpacking io/netty/netty-transport-native-epoll/4.1.82.Final/netty-transport-native-epoll-4.1.82.Final-linux-aarch_64.jar (libraries:io.netty:netty-transport-native-epoll:4.1.82.Final:linux-aarch_64) to libraries\io\netty\netty-transport-native-epoll\4.1.82.Final\netty-transport-native-epoll-4.1.82.Final-linux-aarch_64.jar
Unpacking io/netty/netty-transport-native-unix-common/4.1.82.Final/netty-transport-native-unix-common-4.1.82.Final.jar (libraries:io.netty:netty-transport-native-unix-common:4.1.82.Final) to libraries\io\netty\netty-transport-native-unix-common\4.1.82.Final\netty-transport-native-unix-common-4.1.82.Final.jar
Unpacking it/unimi/dsi/fastutil/8.5.9/fastutil-8.5.9.jar (libraries:it.unimi.dsi:fastutil:8.5.9) to libraries\it\unimi\dsi\fastutil\8.5.9\fastutil-8.5.9.jar
Unpacking net/java/dev/jna/jna/5.12.1/jna-5.12.1.jar (libraries:net.java.dev.jna:jna:5.12.1) to libraries\net\java\dev\jna\jna\5.12.1\jna-5.12.1.jar
Unpacking net/java/dev/jna/jna-platform/5.12.1/jna-platform-5.12.1.jar (libraries:net.java.dev.jna:jna-platform:5.12.1) to libraries\net\java\dev\jna\jna-platform\5.12.1\jna-platform-5.12.1.jar
Unpacking net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar (libraries:net.sf.jopt-simple:jopt-simple:5.0.4) to libraries\net\sf\jopt-simple\jopt-simple\5.0.4\jopt-simple-5.0.4.jar
Unpacking org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar (libraries:org.apache.commons:commons-lang3:3.12.0) to libraries\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar
Unpacking org/apache/logging/log4j/log4j-api/2.19.0/log4j-api-2.19.0.jar (libraries:org.apache.logging.log4j:log4j-api:2.19.0) to libraries\org\apache\logging\log4j\log4j-api\2.19.0\log4j-api-2.19.0.jar
Unpacking org/apache/logging/log4j/log4j-core/2.19.0/log4j-core-2.19.0.jar (libraries:org.apache.logging.log4j:log4j-core:2.19.0) to libraries\org\apache\logging\log4j\log4j-core\2.19.0\log4j-core-2.19.0.jar
Unpacking org/apache/logging/log4j/log4j-slf4j2-impl/2.19.0/log4j-slf4j2-impl-2.19.0.jar (libraries:org.apache.logging.log4j:log4j-slf4j2-impl:2.19.0) to libraries\org\apache\logging\log4j\log4j-slf4j2-impl\2.19.0\log4j-slf4j2-impl-2.19.0.jar
Unpacking org/joml/joml/1.10.5/joml-1.10.5.jar (libraries:org.joml:joml:1.10.5) to libraries\org\joml\joml\1.10.5\joml-1.10.5.jar
Unpacking org/slf4j/slf4j-api/2.0.1/slf4j-api-2.0.1.jar (libraries:org.slf4j:slf4j-api:2.0.1) to libraries\org\slf4j\slf4j-api\2.0.1\slf4j-api-2.0.1.jar
Starting net.minecraft.server.Main
[01:15:06] [ServerMain/INFO]: Building unoptimized datafixer
[01:15:07] [ServerMain/ERROR]: Failed to load properties from file: server.properties
[01:15:07] [ServerMain/WARN]: Failed to load eula.txt
[01:15:07] [ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

You will need to agree to the EULA.

EULA Agreement

Open eula.txt

Open the file in your text editor of choice.

  • I use Visual Studio code, so code is the executable
  • Notepad ships with Windows, so notepad is usable
PS C:\mcjava> code .\eula.txt

Edit the file

Change the 3rd line, eula=false, to eula=true.

Before

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA).
#Fri Jan 20 01:15:07 EST 2023
eula=false

After

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA).
#Fri Jan 20 01:15:07 EST 2023
eula=true

Save the file

Save the file and close your text editor. Return to Terminal/PowerShell.

Second Run

Command

PS C:\mcjava> java -Xmx1024M -Xms1024M -jar minecraft_server.1.19.3.jar nogui

Output

Starting net.minecraft.server.Main
[01:28:14] [ServerMain/INFO]: Building unoptimized datafixer
[01:28:15] [ServerMain/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[01:28:16] [ServerMain/INFO]: Loaded 7 recipes
[01:28:17] [ServerMain/INFO]: Loaded 1179 advancements
[01:28:17] [Server thread/INFO]: Starting minecraft server version 1.19.3
[01:28:17] [Server thread/INFO]: Loading properties
[01:28:17] [Server thread/INFO]: Default game type: SURVIVAL
[01:28:17] [Server thread/INFO]: Generating keypair
[01:28:17] [Server thread/INFO]: Starting Minecraft server on *:25565
[01:28:17] [Server thread/INFO]: Using default channel type
[01:28:17] [Server thread/INFO]: Preparing level "world"
[01:28:21] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
[01:28:22] [Worker-Main-15/INFO]: Preparing spawn area: 0%
[01:28:22] [Worker-Main-15/INFO]: Preparing spawn area: 0%
[01:28:22] [Worker-Main-1/INFO]: Preparing spawn area: 0%
[01:28:22] [Worker-Main-10/INFO]: Preparing spawn area: 0%
[01:28:23] [Worker-Main-10/INFO]: Preparing spawn area: 0%
[01:28:23] [Worker-Main-15/INFO]: Preparing spawn area: 0%
[01:28:24] [Worker-Main-7/INFO]: Preparing spawn area: 0%
[01:28:24] [Worker-Main-13/INFO]: Preparing spawn area: 2%
[01:28:25] [Worker-Main-7/INFO]: Preparing spawn area: 2%
[01:28:25] [Worker-Main-5/INFO]: Preparing spawn area: 3%
[01:28:26] [Worker-Main-15/INFO]: Preparing spawn area: 5%
[01:28:26] [Worker-Main-15/INFO]: Preparing spawn area: 5%
[01:28:27] [Worker-Main-9/INFO]: Preparing spawn area: 6%
[01:28:27] [Worker-Main-10/INFO]: Preparing spawn area: 9%
[01:28:28] [Worker-Main-2/INFO]: Preparing spawn area: 9%
[01:28:28] [Worker-Main-11/INFO]: Preparing spawn area: 10%
[01:28:29] [Worker-Main-12/INFO]: Preparing spawn area: 12%
[01:28:29] [Worker-Main-1/INFO]: Preparing spawn area: 13%
[01:28:30] [Worker-Main-5/INFO]: Preparing spawn area: 15%
[01:28:30] [Worker-Main-6/INFO]: Preparing spawn area: 16%
[01:28:31] [Worker-Main-10/INFO]: Preparing spawn area: 17%
[01:28:31] [Worker-Main-5/INFO]: Preparing spawn area: 19%
[01:28:32] [Worker-Main-15/INFO]: Preparing spawn area: 21%
[01:28:32] [Worker-Main-7/INFO]: Preparing spawn area: 23%
[01:28:33] [Worker-Main-11/INFO]: Preparing spawn area: 23%
[01:28:33] [Worker-Main-6/INFO]: Preparing spawn area: 24%
[01:28:34] [Worker-Main-7/INFO]: Preparing spawn area: 26%
[01:28:34] [Worker-Main-7/INFO]: Preparing spawn area: 27%
[01:28:35] [Worker-Main-12/INFO]: Preparing spawn area: 29%
[01:28:35] [Worker-Main-15/INFO]: Preparing spawn area: 31%
[01:28:36] [Worker-Main-6/INFO]: Preparing spawn area: 32%
[01:28:36] [Worker-Main-13/INFO]: Preparing spawn area: 33%
[01:28:37] [Worker-Main-13/INFO]: Preparing spawn area: 35%
[01:28:37] [Worker-Main-12/INFO]: Preparing spawn area: 37%
[01:28:38] [Worker-Main-14/INFO]: Preparing spawn area: 39%
[01:28:38] [Worker-Main-11/INFO]: Preparing spawn area: 40%
[01:28:39] [Worker-Main-14/INFO]: Preparing spawn area: 42%
[01:28:39] [Worker-Main-2/INFO]: Preparing spawn area: 42%
[01:28:40] [Worker-Main-8/INFO]: Preparing spawn area: 45%
[01:28:40] [Worker-Main-7/INFO]: Preparing spawn area: 46%
[01:28:41] [Worker-Main-7/INFO]: Preparing spawn area: 49%
[01:28:41] [Worker-Main-10/INFO]: Preparing spawn area: 50%
[01:28:42] [Worker-Main-7/INFO]: Preparing spawn area: 51%
[01:28:42] [Worker-Main-11/INFO]: Preparing spawn area: 54%
[01:28:43] [Worker-Main-13/INFO]: Preparing spawn area: 55%
[01:28:43] [Worker-Main-8/INFO]: Preparing spawn area: 55%
[01:28:44] [Worker-Main-2/INFO]: Preparing spawn area: 57%
[01:28:44] [Worker-Main-13/INFO]: Preparing spawn area: 59%
[01:28:45] [Worker-Main-5/INFO]: Preparing spawn area: 60%
[01:28:45] [Worker-Main-14/INFO]: Preparing spawn area: 61%
[01:28:46] [Worker-Main-11/INFO]: Preparing spawn area: 62%
[01:28:46] [Worker-Main-14/INFO]: Preparing spawn area: 65%
[01:28:47] [Worker-Main-12/INFO]: Preparing spawn area: 66%
[01:28:47] [Worker-Main-10/INFO]: Preparing spawn area: 68%
[01:28:48] [Worker-Main-14/INFO]: Preparing spawn area: 69%
[01:28:48] [Worker-Main-15/INFO]: Preparing spawn area: 70%
[01:28:49] [Worker-Main-11/INFO]: Preparing spawn area: 72%
[01:28:49] [Worker-Main-6/INFO]: Preparing spawn area: 73%
[01:28:50] [Worker-Main-2/INFO]: Preparing spawn area: 74%
[01:28:50] [Worker-Main-12/INFO]: Preparing spawn area: 75%
[01:28:51] [Worker-Main-14/INFO]: Preparing spawn area: 79%
[01:28:51] [Worker-Main-3/INFO]: Preparing spawn area: 81%
[01:28:52] [Worker-Main-5/INFO]: Preparing spawn area: 82%
[01:28:52] [Worker-Main-12/INFO]: Preparing spawn area: 83%
[01:28:53] [Worker-Main-8/INFO]: Preparing spawn area: 84%
[01:28:53] [Worker-Main-10/INFO]: Preparing spawn area: 85%
[01:28:54] [Worker-Main-4/INFO]: Preparing spawn area: 87%
[01:28:54] [Worker-Main-1/INFO]: Preparing spawn area: 88%
[01:28:55] [Worker-Main-8/INFO]: Preparing spawn area: 89%
[01:28:55] [Worker-Main-3/INFO]: Preparing spawn area: 90%
[01:28:56] [Worker-Main-11/INFO]: Preparing spawn area: 94%
[01:28:56] [Worker-Main-2/INFO]: Preparing spawn area: 96%
[01:28:57] [Worker-Main-12/INFO]: Preparing spawn area: 97%
[01:28:57] [Server thread/INFO]: Time elapsed: 36462 ms
[01:28:57] [Server thread/INFO]: Done (39.717s)! For help, type "help"

As part of the startup script, I see [01:28:17] [Server thread/INFO]: Starting Minecraft server on *:25565, so I know the server listening on port 25565.

Allow Azul Java to use a private network

Windows Defender Firewall prompted for network access for Java. I granted "Private" network access.

Test with client

Launched Minecraft on a Mac on the same network.

Connected to 10.1.1.10:25565.

Successfully logged into server.

[01:33:47] [User Authenticator #1/INFO]: UUID of player ktnjared is 36871861-c01c-4555-b774-3ae2b06c1090
[01:33:47] [Server thread/INFO]: ktnjared[/10.1.1.210:52198] logged in with entity id 282 at (-38.5, 78.0, -26.5)
[01:33:47] [Server thread/INFO]: ktnjared joined the game
[01:33:55] [Server thread/INFO]: ktnjared lost connection: Disconnected
[01:33:55] [Server thread/INFO]: ktnjared left the game

10.1.1.210 is the IP of my MBA on Wi-Fi.

Router

Created a temp port forward of *:65432 to 10.1.1.10:25565 on the router. Note that the external port here is not a typo. Since I already have another MC server on the network, the external port is different so that that the Minecraft connection traffic can specifically be routed to this computer instead of my Linux server.

Connected to jareds.home.ddns:65432.

Successfully logged into server.

[01:41:53] [User Authenticator #2/INFO]: UUID of player ktnjared is 36871861-c01c-4555-b774-3ae2b06c1090
[01:41:53] [Server thread/INFO]: ktnjared[/10.1.1.1:52481] logged in with entity id 504 at (-38.5, 78.0, -26.5)
[01:41:53] [Server thread/INFO]: ktnjared joined the game
[01:42:21] [Server thread/INFO]: ktnjared lost connection: Disconnected
[01:42:21] [Server thread/INFO]: ktnjared left the game

10.1.1.1 is the router, so it makes sense why the router IP is shown due to the port forward.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment