Advertising Linux Minecraft Servers to the LAN

My 5 year old son is really in to playing Minecraft at the moment and always wants me to play with him.  I set up a couple of Minecraft servers on a Linux machine on my local network so that any of us could hop in and out from any computer.  Annoyingly I found that the server for Linux does not broadcast its whereabouts to the LAN, so I had to manually enter the address and ports of the servers on every client.

Well that seemed unnecessary so I opened up Wireshark to see how the Windows and Mac clients announce their LAN games and came up with the following script.  I decided to use Python simply because it was pre-installed on my Linux box and I didn’t want to install another language such as PHP just to handle this simple job.  That said, I don’t know Python very well.

I run this script in a screen session on the Linux server.  It announces the Minecraft servers to the LAN every 1.5 seconds using a UDP broadcast to the subnet.  The clients always assume that the source IP of the broadcast is also the IP address of the Minecraft server, so this script must be run on the same box that is hosting the Minecraft servers.  In other words, you can’t use this script to announce the whereabouts of a Minecraft server on a different machine.  I believe that’s a protocol change to previous versions where this was indeed possible.  At the time of writing, the current Minecraft version is 1.8.

You can add as many servers are you like to the servers array.  The array contains arrays consisting of the server description and the port number.

 

7 Responses to “Advertising Linux Minecraft Servers to the LAN”

  1. kwacky1

    Thanks for sharing, I’m in the same boat. Next minecraft LAN party I won’t have to add the servers to each of the kids computers!

    Reply
  2. Peter

    Cheers for this. I had wondered but never went beyond that.

    Reply
  3. Roman Pavlovsky

    Hello.
    The client can not connect to the server, because the server does not have the IP, shows only port. How to fix it, so that you can specify the IP address of the server?
    Screenshot 1: http://prnt.sc/au2jo4
    Screenshot 2: http://prnt.sc/au2ju2

    Reply
  4. Nathan

    This worked great for version 1.12, but it no longer seems to work after updating to 1.12.1 🙁

    Reply
  5. Nathan

    I used wireshark to inspect a packet when I hosted a game on my Mac, and the broadcast had the destination IP address of 224.0.2.60 — so I updated the script to use that. At first nothing changed, but after I restarted Minecraft stuff started showing up. Not sure if it’s a red herring or not.

    Reply
  6. Limestone Dad

    Thank you for posting this (back when). I’ve written it as a MinecraftForge plugin (v0.1) and will be hopefully publishing this weekend. As a plugin you dont even need to edit a file for each server, just dump the jar in your mod folder for your server config. (url to follow when posted)

    My next steps will be to extend the communication to support the richer message telling the server’s mods, players etc…

    Reply
  7. Limestone Dad

    A minecraft forge plugin java file is available now. It’s way bigger than the tight python script above, but fits the Forge plugin architecture.

    https://bitbucket.org/limestonecraft/minecraft/src/master/forge/forge-dk/src/main/java/ca/laj/minecraft/forge/announce/LANServerAnnounceMod.java

    Reply

Leave a Reply