Minecraft on the Jetson TK1

I pieced together the steps necessary to run Minecraft on my Jetson TK1 and wrote them up here:

http://rogerallen.github.io/jetson/2014/07/31/minecraft-on-jetson-tk1/

It is running at a very playable 25-30Hz at 1920x1080.

Hopefully the instructions below can get it working for you, too.

Cheers,

Roger

Thanks! I’ll try it out!

EDIT: “There is a bug in the LWJGL linux build in that it assumes an -L${java.home}/lib/i386 library path instead of conditionally using -L${java.home}/lib/arm libs. I fixed this locally with a small edit below while LWJGL works on Issue 74.”

Can you please explain this part a bit to me, I dont quite understand it? Thanks.

In the LWJGL file platform_build/linux_ant/build.xml you need to change this line (near the top):

   <property name="libs32" value="-L/usr/X11R6/lib -L/usr/X11/lib -lm -lX11 -lXext -lXcursor -lXrandr -lXxf86vm -lpthread -L${java.home}/lib/i386 -ljawt" />

to be this instead:

(just changing the i386 to arm)

These are some compilation flags that ant passes to gcc when compiling. Since Jetson is an ARM Java there isn’t anything in the $JAVA_HOME/lib/i386 directory. Instead the compiler needs to look in $JAVA_HOME/lib/arm.

Make sense?

Thanks. I was concerned where is that file located.
So I came to the end to launch Minecraft and using commands you provided here is what I get

ubuntu@tegra-ubuntu:~$ ~/Minecraft/run.sh
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)
where options include:
    -d32	  use a 32-bit data model if available
    -d64	  use a 64-bit data model if available
    -client	  to select the "client" VM
    -server	  to select the "server" VM
                  The default VM is client.

    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
                  A : separated list of directories, JAR archives,
                  and ZIP archives to search for class files.
    -D<name>=<value>
                  set a system property
    -verbose:[class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -version:<value>
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-search | -no-jre-restrict-search
                  include/exclude user private JREs in the version search
    -? -help      print this help message
    -X            print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions with specified granularity
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions with specified granularity
    -esa | -enablesystemassertions
                  enable system assertions
    -dsa | -disablesystemassertions
                  disable system assertions
    -agentlib:<libname>[=<options>]
                  load native agent library <libname>, e.g. -agentlib:hprof
                  see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument
    -splash:<imagepath>
                  show splash screen with specified image
See http://www.oracle.com/technetwork/java/javase/documentation/index.html for more details.
/home/ubuntu/Minecraft/run.sh: line 6: net.minecraft.client.main.Main: command not found
ubuntu@tegra-ubuntu:~$ chmod +x run.sh
chmod: cannot access ‘run.sh’: No such file or directory

Please help me!

It looks like when I created the commandline gist, one "" that should’ve been at the end of line 3 was on its own line. So the net.minecraft.client.main.Main was treated as a shell command on a separate line. It needs to be connected with the Java command. Sorry about that.

I’ve fixed the gist now. NVIDIA Jetson/ChrUbuntu TK1 Minecraft Commandline · GitHub

But, if there are still issues, just gather all the separate arguments into one long java commandline.

These are my locations of stuff: (I tried to do it like in example)

/home/ubuntu/Minecraft/Natives/Dev/openal-soft-1.15.1/build/

/home/ubuntu/Minecraft/Natives/Dev/lwjgl/

/home/ubuntu/Minecraft/run.sh

/home/ubuntu/Minecraft/Natives/libopenal.so

Then I typed commands you provided :

mkdir -p ~/Minecraft/Natives
cp ~/Dev/openal-soft-1.15.1/build/libopenal.so.1.15.1 ~/Minecraft/Natives/libopenal.so
cp ~/Dev/lwjgl/lib/liblwjgl.so ~/Minecraft/Natives

and I get error No such file or directory.

Please correct me if I did something wrong. I really like Minecraft… and Jetson
Thanks

With your directories, it looks like you want to do this:

cp /home/ubuntu/Minecraft/Natives/Dev/openal-soft-1.15.1/build/libopenal.so.1.15.1 /home/ubuntu/Minecraft/Natives/libopenal.so

and

cp /home/ubuntu/Minecraft/Natives/Dev/lwjgl/lib/liblwjgl.so /home/ubuntu/Minecraft/Natives/liblwjgl.so

Here is how my directories look like now

/home/ubuntu/Minecraft/Natives/Dev/openal-soft-1.15.1/build/home/ubuntu/Minecraft/Natives/libopenal.so

/home/ubuntu/Minecraft/Natives/Dev/lwjgl/lib/home/ubuntu/Minecraft/Natives/liblwjgl.so

When I run cp /home/ubuntu/Minecraft/Natives/Dev/openal-soft-1.15.1/build/libopenal.so.1.15.1 /home/ubuntu/Minecraft/Natives/libopenal.so

I get following error

cp: not writing through dangling symlink ‘/home/ubuntu/Minecraft/Natives/libopenal.so’

And when I run Minecraft with this

~/Minecraft/run.sh
chmod +x run.sh

I get:

ubuntu@tegra-ubuntu:~$ ~/Minecraft/run.sh
2014-08-01 19:53:03,237 ERROR Cannot access RandomAccessFile {}) java.io.FileNotFoundException: logs/latest.log (Permission denied)
2014-08-01 19:53:03,238 ERROR Unable to invoke method createAppender in class org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender for element RollingRandomAccessFile java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject(BaseConfiguration.java:841)
	at org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(BaseConfiguration.java:595)
	at org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(BaseConfiguration.java:587)
	at org.apache.logging.log4j.core.config.BaseConfiguration.doConfigure(BaseConfiguration.java:244)
	at org.apache.logging.log4j.core.config.BaseConfiguration.start(BaseConfiguration.java:142)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:339)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:378)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:149)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:85)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:34)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:387)
	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:322)
	at bao.<clinit>(SourceFile:84)
	at net.minecraft.client.main.Main.main(SourceFile:72)
Caused by: java.lang.IllegalStateException: Unable to create a manager
	at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:73)
	at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:65)
	at org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager.getRollingRandomAccessFileManager(RollingRandomAccessFileManager.java:62)
	at org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender.createAppender(RollingRandomAccessFileAppender.java:196)
	... 18 more

2014-08-01 19:53:03,245 ERROR Null object returned for RollingRandomAccessFile in Appenders
2014-08-01 19:53:03,289 ERROR Unable to locate appender File for logger 
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/ubuntu/Minecraft/Natives/liblwjgl.so: /home/ubuntu/Minecraft/Natives/liblwjgl.so: cannot open shared object file: No such file or directory (Possible cause: can't load IA 32-bit .so on a ARM-bit platform)
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1880)
	at java.lang.Runtime.loadLibrary0(Runtime.java:849)
	at java.lang.System.loadLibrary(System.java:1088)
	at org.lwjgl.Sys$1.run(Sys.java:73)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
	at org.lwjgl.Sys.loadLibrary(Sys.java:95)
	at org.lwjgl.Sys.<clinit>(Sys.java:112)
	at bao.K(SourceFile:2173)
	at net.minecraft.client.main.Main.main(SourceFile:72)
ubuntu@tegra-ubuntu:~$ chmod +x run.sh
chmod: cannot access ‘run.sh’: No such file or directory

I’m really sorry for being such a but*hurt but I lost some time searching how to get Minecraft working on armhf but failed and you did it so…

I don’t understand this…are you really creating paths like this? I’m not trying to tell you to do this. Not on purpose, at least.

/home/ubuntu/Minecraft/Natives/Dev/openal-soft-1.15.1/build/home/ubuntu/Minecraft/Natives/libopenal.so

You’ve got /home/ubuntu twice in that path–why? You’re also asking about missing files that you can’t chmod +x? I’m a bit worried that your unix skills are not quite up to this task. You should understand the commands that you are running. I can try to help, but you may need some more local help on what to do here.

That said, I’ve had a few errors in my instructions and I’d like to see if this can be made to work.

For the first error:

cp: not writing through dangling symlink ‘/home/ubuntu/Minecraft/Natives/libopenal.so’

This means that the file already exists as a symlink in /home/ubuntu/Minecraft/Natives. I don’t know how this happened. Just remove it and then try the copy again.

With regard to this:

ubuntu@tegra-ubuntu:~$ chmod +x run.sh
chmod: cannot access ‘run.sh’: No such file or directory

You already are running the script Minecraft/run.sh so you can ignore this chmod +x command. You must’ve already made run.sh executable.

Before you try to run Minecraft/run.sh again, please run this:

ls -l /home/ubuntu/Minecraft/Natives
file /home/ubuntu/Minecraft/Natives/*.so

I want to be sure you have just the built arm libraries there. It should look similar to this (paths differ and that’s fine). The important thing is you should have two ARM shared libraries there.

ubuntu@muggy:~$ ls -l /home/ubuntu/RogerAllen/minecraft_natives/
total 1372
-rw-r--r-- 1 ubuntu ubuntu  284020 Jul 28 23:33 liblwjgl.so -rwxrwxr-x 1 ubuntu ubuntu 1115150 Jul 28 23:33 libopenal.so ubuntu@muggy:~$ file /home/ubuntu/RogerAllen/minecraft_natives/*so
/home/ubuntu/RogerAllen/minecraft_natives/liblwjgl.so:  ELF 32-bit LSB  shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=7445b95a7377eb5267e75bca6242972f5d4988c8, stripped
/home/ubuntu/RogerAllen/minecraft_natives/libopenal.so: ELF 32-bit LSB  shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=7cebe274867a8d1ef493a3aba71da920bfc41046, not stripped

A mistake that I just found is that I said to copy from lwjgl/lib/liblwjgl.so. That path was wrong and should be lwjgl/libs/linux/liblwjgl.so. Please copy that file to /home/ubuntu/Minecraft/Natives. This is now fixed on the webpage.

Now, if you have ARM .so libraries in /home/ubuntu/Minecraft/Natives, you should be able to run /home/ubuntu/Minecraft/run.sh and hopefully see minecraft run.

Thanks! I’m quite a newbie to linux and I’m learning it because I got bored of Windows, its slowness, viruses…

Got it working! Finally…

Great to hear! Congrats!

Thanks a lot for your work to get it working on Jetson and thanks for helping me out :)

This is great Roger, but i can only login on cracked servers. Dont want that ofcourse. I used the clienttoken from the launcher_profiles.json. Legit servers say session ID is wrong and want me to restart the game.
i found out that if you use --uuid “” from the launcher_profiles.json, the first connection to some of the servers is better. (less crashing). In the file .minecraft/versions/1.7.10/1.7.10.json there are more arguments to play with:
minecraftArguments: --username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userProperties ${user_properties} --userType ${user_type}".
i made 2 versions (for 1.7.4. and 1.7.10). but both of them wont connect to the legit servers.
Startuplog error: [18:57:48] [MCO Availability Checker #1/ERROR]: Couldn’t connect to Realms
Why does it not connect? thx!

this is the last part of the run-script:

net.minecraft.client.main.Main \
--username xxx \
--accessToken yyy \
--uuid zzz \
--version 1.7.10 \
--userProperties {} \
--gameDir /home/ubuntu/.minecraft \
--assetsDir /home/ubuntu/.minecraft/assets \
--assetIndex 1.7.10
# NOTE xxx=your username, yyy="clientToken" and zzz=uuid from .minecraft/launcher_profiles.json

Ok, got it working now. this is what i did; Dont use “#!/bin/bash” in the beginning of a script. (my fault) ;) I used the accestoken of Launcher_profiles.json, not the clienttoken. Also i added --uuid. So this works for me for 1.7.10:

--username xxx \
--accessToken "yyy" \
--uuid "zzz" \
--version 1.7.10 \
--userProperties {} \
--gameDir /home/ubuntu/.minecraft \
--assetsDir /home/ubuntu/.minecraft/assets \
--assetIndex 1.7.10
# NOTE xxx=your username, yyy=accessToken and zzz=uuid from .minecraft/launcher_profiles.json

Servers for version 1.7.4. still show a invalid session-id. still working on that.

Thanks for the research, XRoyx. I don’t visit external servers, so I didn’t test this.

I’d very much like it if the gist was kept up-to-date. Commandline args will change depending on versions, features, etc. I will never be able to keep up, but the community can. Please take a moment to fork & add your notes.

Thanks!

Roger

The progress so far; Seems that Mojang keeps changing the “accestoken” so that the next day Minecraft gives an invalid ID. :( The accestoken has to be refreshed with the launcher. So i implemented “curl”.
This script logs into mojang, then gets a new accestoken and uses it to start Minecraft 1.7.10.:

atoken="$(curl -i -H "Accept:application/json" -H "content-Type:application/json" 'https://authserver.mojang.com/authenticate' -X POST --data '{"agent": {"name": "Minecraft","version": 1},"username": "vvv","password": "www","clientToken": "xxx"}' | sed '/accessToken":"/!d;s//&\n/;s/.*\n//;:a;/",/bb;$!{n;ba};:b;s//\n&/;P;D')"
echo starting game with new accesstoken $atoken
/usr/lib/jvm/java-7-oracle/jre/bin/java -Xmx512M -Djava.library.path=/home/ubuntu/Minecraft/Natives -cp /home/ubuntu/.minecraft/libraries/com/mojang/realms/1.3.5/realms-1.3.5.jar:/home/ubuntu/.minecraft/libraries/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar:/home/ubuntu/.minecraft/libraries/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar:/home/ubuntu/.minecraft/libraries/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:/home/ubuntu/.minecraft/libraries/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar:/home/ubuntu/.minecraft/libraries/java3d/vecmath/1.3.1/vecmath-1.3.1.jar:/home/ubuntu/.minecraft/libraries/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar:/home/ubuntu/.minecraft/libraries/com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar:/home/ubuntu/.minecraft/libraries/net/sf/jopt-simple/jopt-simple/4.5/jopt-simple-4.5.jar:/home/ubuntu/.minecraft/libraries/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar:/home/ubuntu/.minecraft/libraries/com/paulscode/codecwav/20101023/codecwav-20101023.jar:/home/ubuntu/.minecraft/libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar:/home/ubuntu/.minecraft/libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar:/home/ubuntu/.minecraft/libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar:/home/ubuntu/.minecraft/libraries/io/netty/netty-all/4.0.10.Final/netty-all-4.0.10.Final.jar:/home/ubuntu/.minecraft/libraries/com/google/guava/guava/15.0/guava-15.0.jar:/home/ubuntu/.minecraft/libraries/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar:/home/ubuntu/.minecraft/libraries/commons-io/commons-io/2.4/commons-io-2.4.jar:/home/ubuntu/.minecraft/libraries/commons-codec/commons-codec/1.9/commons-codec-1.9.jar:/home/ubuntu/.minecraft/libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar:/home/ubuntu/.minecraft/libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar:/home/ubuntu/.minecraft/libraries/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar:/home/ubuntu/.minecraft/libraries/com/mojang/authlib/1.5.16/authlib-1.5.16.jar:/home/ubuntu/.minecraft/libraries/org/apache/logging/log4j/log4j-api/2.0-beta9/log4j-api-2.0-beta9.jar:/home/ubuntu/.minecraft/libraries/org/apache/logging/log4j/log4j-core/2.0-beta9/log4j-core-2.0-beta9.jar:/home/ubuntu/.minecraft/libraries/org/lwjgl/lwjgl/lwjgl/2.9.1/lwjgl-2.9.1.jar:/home/ubuntu/.minecraft/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.1/lwjgl_util-2.9.1.jar:/home/ubuntu/.minecraft/libraries/tv/twitch/twitch/5.16/twitch-5.16.jar:/home/ubuntu/.minecraft/versions/1.7.10/1.7.10.jar \
net.minecraft.client.main.Main \
--username yyy \
--accessToken "$atoken" \
--uuid "zzz" \
--version 1.7.10 \
--userProperties {} \
--gameDir /home/ubuntu/.minecraft \
--assetsDir /home/ubuntu/.minecraft/assets \
--assetIndex 1.7.10
# NOTE vvv=loginname and www=password from your minecraft-account, xxx=clientToken and yyy=your username and zzz=uuid from .minecraft/launcher_profiles.json

I hope this helps other online-players.
Roy

Minecraft 1.8 is out. what do I have to modify in run.sh to get it working?

1.8:

atoken="$(curl -i -H "Accept:application/json" -H "content-Type:application/json" 'https://authserver.mojang.com/authenticate' -X POST --data '{"agent": {"name": "Minecraft","version": 1},"username": "vvv","password": "www","clientToken": "xxx"}' | sed '/accessToken":"/!d;s//&\n/;s/.*\n//;:a;/",/bb;$!{n;ba};:b;s//\n&/;P;D')"
echo starting game with new accesstoken $atoken
/usr/lib/jvm/java-7-oracle/jre/bin/java -Xmx512M -Djava.library.path=/home/ubuntu/Minecraft/Natives -cp /home/ubuntu/.minecraft/libraries/java3d/vecmath/1.5.2/vecmath-1.5.2.jar:/home/ubuntu/.minecraft/libraries/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar:/home/ubuntu/.minecraft/libraries/com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar:/home/ubuntu/.minecraft/libraries/net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6.jar:/home/ubuntu/.minecraft/libraries/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar:/home/ubuntu/.minecraft/libraries/com/paulscode/codecwav/20101023/codecwav-20101023.jar:/home/ubuntu/.minecraft/libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar:/home/ubuntu/.minecraft/libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar:/home/ubuntu/.minecraft/libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar:/home/ubuntu/.minecraft/libraries/io/netty/netty-all/4.0.15.Final/netty-all-4.0.15.Final.jar:/home/ubuntu/.minecraft/libraries/com/google/guava/guava/17.0/guava-17.0.jar:/home/ubuntu/.minecraft/libraries/org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.jar:/home/ubuntu/.minecraft/libraries/commons-io/commons-io/2.4/commons-io-2.4.jar:/home/ubuntu/.minecraft/libraries/commons-codec/commons-codec/1.9/commons-codec-1.9.jar:/home/ubuntu/.minecraft/libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar:/home/ubuntu/.minecraft/libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar:/home/ubuntu/.minecraft/libraries/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar:/home/ubuntu/.minecraft/libraries/com/mojang/authlib/1.5.17/authlib-1.5.17.jar:/home/ubuntu/.minecraft/libraries/com/mojang/realms/1.5.4/realms-1.5.4.jar:/home/ubuntu/.minecraft/libraries/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar:/home/ubuntu/.minecraft/libraries/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar:/home/ubuntu/.minecraft/libraries/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:/home/ubuntu/.minecraft/libraries/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar:/home/ubuntu/.minecraft/libraries/org/apache/logging/log4j/log4j-api/2.0-beta9/log4j-api-2.0-beta9.jar:/home/ubuntu/.minecraft/libraries/org/apache/logging/log4j/log4j-core/2.0-beta9/log4j-core-2.0-beta9.jar:/home/ubuntu/.minecraft/libraries/org/lwjgl/lwjgl/lwjgl/2.9.1/lwjgl-2.9.1.jar:/home/ubuntu/.minecraft/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.1/lwjgl_util-2.9.1.jar:/home/ubuntu/.minecraft/libraries/tv/twitch/twitch/6.5/twitch-6.5.jar:/home/ubuntu/.minecraft/versions/1.8/1.8.jar \
net.minecraft.client.main.Main \
--username yyy \
--accessToken "$atoken" \
--uuid "zzz" \
--version 1.8 \
--userProperties {} \
--gameDir /home/ubuntu/.minecraft \
--assetsDir /home/ubuntu/.minecraft/assets \
--assetIndex 1.8
# NOTE vvv=loginname and www=password from your minecraft-account, xxx=clientToken and yyy=your username and zzz=uuid from .minecraft/launcher_profiles.json