Notes on Minecraft hosting

Just notes to self that I keep having to find in various documents and random Minecraft forums of varying quality of which there are a lot…

Screen stuff

I have an unused laptop which I installed Ubuntu Server on, and this is what I use to run the Minecraft server so it’s easy to manage and won’t die when I disconnect.

# Run detached in screen using dir name as screen name
screen -dmS ${PWD##*/} java -Xmx3G -XX:MaxPermSize=256M -jar server.jar nogui

# List screens
screen -ls

# Reattach to specific
screen -r name

# Reattatch to whatever (handy if just one running)
screen -raAd

# Detach (important, since Ctrl+c would shut down the server)
Ctrl+a, Ctrl+d

Minecraft server stuff

A bit cheaty, especially the last one, but sometimes you just want to play without worrying about losing what you spent way too many hours working on. I prefer a gravestone mod over the last one though, cause then dying is still an annoyance, but at least you have a chance of getting back that crazy expensive armor and the fifteen stacks of diamonds you just spent forever digging up.

# Prevent creepers and such from destroying stuff
gamerule mobGriefing false

# Don't lose stuff when dying
gamerule keepInventory true

YouTube: Play all uploads of a user

Note to self: To play all uploads of a user, start playing one of them, then add &list=UL to the URL. For example:

The playlist might look a bit weird at first, but that’s because

  • It plays from oldest to newest
  • The current playing video “tries” to be in the middle of the list
  • The list only displays x videos before and y videos after the current one, so if the user has a thousand videos, you’ll only see a handful of them in the playlist, but it does play through them all.

Of course YouTube should just have a “play all videos of this user” button, but can’t find one at the moment…

PowerShell: Read hashtable from a file

Had a file with the following kind of data.

10.0.0.1=alice.example.com
10.0.0.2=bob.example.com

Wanted to read this in as a hashtable so that I could use it for lookup in a script. Tried doing the following, but ended up with an array of hashtables instead of one hashtable. This is because Get-Content by default actually gives you an array of lines, which are then piped into ConvertFrom-StringData one by one.

PS> Get-Content .\hostnames.txt | ConvertFrom-StringData
PS> $names.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

PS> $names[0].GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Hashtable                                System.Object

Turns out it was easy to fix by adding the -raw parameter.

PS> $names = Get-Content -raw .\hostnames.txt | ConvertFrom-StringData
PS> $names.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Hashtable                                System.Object

PS> $names['10.0.0.1']
alice.example.com

With a hint of Social Ineptitude