Solution 1:

The issue is that Minecraft contacts their servers when you start up, and overwrites the displayName with whatever is linked to the actual account on their servers. Then, when you connect to the LAN game, it complains that a user with that name already exists.

I found that the solution is to somehow stop Minecraft from accessing the internet. Do the displayName trick, game on.

The crude version of this is to just disconnect your house's internet cable from the modem/router. Keep the wifi/lan router on, just don't connect it to the internet.

A less crude version is to just block access to the Minecraft servers. For me (Windows 10), these were the steps:

  1. The "original" displayName trick: open C:\Users\<username>\AppData\Roaming\.minecraft\launcher_profiles.json in a text editor, search for "displayName" and replace the value next to it by someting else (eg "Dad").
  2. Open Notepad with administrator rights
  3. From within Notepad, browse to C:\Windows\System32\drivers\etc\, set the file filter to "All files", and open the file called hosts (it has no file extension)
  4. Add a line with the following text:

    0.0.0.0 minecraft.net
    
  5. Launch Minecraft, connect to your son's LAN game as usual

The steps are very similar on Mac and Linux.

Step 1 is described in more detail here: Is it still possible to set your username in offline mode in Minecraft 1.6 and later?

Steps 2-4 are described in more detail here: https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/

This way, you don't need to kick the rest of the family off Netflix :-)

There's still a downside: minecraft.net will be blocked for all your applications. You won't be able to download minecraft updates or even visit the site. Acceptable to me, although I still think Minecraft should have some sort of "father and son" mode - IMO it's ridiculous that I need to pay for two licenses just to be able to help a six year old build a roof every two months. That can't have been the idea behind Minecraft's licensing setup.

Solution 2:

Try to change online-mode=true - replace true with false in the server startup config. You also need to change DisplayName on one of the client instance. This helps me with the same issues.

Solution 3:

Open the following file with notepad:

C:\Users\<username>\AppData\Roaming\.minecraft\launcher_profiles.json

change the line with the display name so that all clients on LAN have different display names.

finally, save the file, right click, select properties, enable Read only, click ok.

Start game as normal.