Difference between revisions of "Minecraft"

From Got Opinion Wiki
Jump to navigation Jump to search
Line 476: Line 476:
Stopping minecraft_server.jar
Stopping minecraft_server.jar
minecraft_server.jar is stopped.
minecraft_server.jar is stopped.
[mineuser@localhost minecraft]$ vi server.properties  
[mineuser@localhost minecraft]$ vi server.properties</pre>


'''Final start'''
'''Final start'''
Line 501: Line 501:
[16:34:07] [Server thread/INFO]: Preparing spawn area: 58%
[16:34:07] [Server thread/INFO]: Preparing spawn area: 58%
[16:34:08] [Server thread/INFO]: Done (2.624s)! For help, type "help" or "?"</pre>
[16:34:08] [Server thread/INFO]: Done (2.624s)! For help, type "help" or "?"</pre>


== Other Linux Links ==
== Other Linux Links ==

Revision as of 13:28, 9 October 2014

Windows Operating System

My tips for running Minecraft on Windows machines.

  • Update video driver
  • Update Java software at Java website
  • Allocate more memory only if you get "out of memory errors"

Allocate More Memory to Minecraft

Thought I'd share my success at memory allocation changes with those who are interested.

Note: I only changed my memory allocations on my machine due to in-game memory crashes every 90 to 120 seconds when exploring outside. Once I allocated 768m I haven't had a memory crash. This memory allocation started happening to my machine since 1.7 beta.

I was trying various configurations to allocate memory but my command window would open up then immediately close or Java Virtual Machine (JVM) would not launch, etc.

I have Win7 Ultimate 64-bit, 12 GB RAM, with current version of Java installed.

I created a batch file & updated my PATH variable with directory of current Java version.

Batch file contains (use your own c:\path2minecraft.exe here):

javaw -Xms768m -jar "c:\minecraft\Minecraft.exe"

Added this to PATH (don't forget the semi-colon to separate this path from previous one):

;C:\Program Files (x86)\Java\jre7\bin

Add to PATH steps: For Win7 Ultimate I right click Computer > Properties > Advanced System Settings > Advanced Tab > Environmental Variables > System Variables > highlight PATH then click EDIT. Add semi-colon then PATH to current version of Java then press Okay.

Side Note: The same machine runs minecraft flawless in Fedora Core 15 & 16 without memory modifications. Only the lack of Ventrilo support on Linux causes me to use Windows to run minecraft.

I've read about other people starting minecraft.exe with -Xmx parameter but I could not get various options to work, even though I have 12 GB RAM.

Fedora Core Linux Operating System

My tips for running Minecraft on Fedora Core 14, 15 & 16 systems.

  • Update video driver
    • I use NVidia video cards. See my Linux NVidia driver installation page
  • Update Java software at Java website
    • Launch Java from command line by pointing to current version of Java (or update your PATH variable)
    • Example [client start]: /usr/java/latest/bin/java -jar minecraft.jar
    • Example [server start]: /usr/java/latest/bin/java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui

Note: Above commands assume you are in same directory as minecraft .jar files, otherwise, specify path to .jar files

Ubuntu Operating System

If you launch minecraft client and see an error message with ".minecraft/bin/natives/liblwjgl.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)" then follow these steps:

Install Lightweight Java Game Library

  1. Go to http://lwjgl.org/download.php
  2. Click the link to download the newest stable release
  3. Download lwjgl-x.x.x.zip (lwjgl-2.8.4.zip was latested on 8-21-2012)
  4. In your home directory Ctrl + H to show hidden files
  5. Go to .minecraft/bin directory and copy matching .jar files from the jar folder in the lwjgl directory. I copied jinput.jar, lwjgl.jar, and lwjgl_util.jar.
  6. Go to .minecraft/bin/native directory and copy matching .so files from the native/linux folder in the lwjgl directory. I copied all six files libjinput-linux64.so, liblwjgl64.so, libopenal64.so, libjinput-linux.so, liblwjgl.so, and libopenal.so.

Minecraft should now work correctly!

Linux Mint

Mint 16 with KDE Desktop

Setup current Oracle Java 64-bit (Java version 7 update 51 as of this writing):

  1. Download latest version of Linux x64
  2. Create directory you want to install Java. As root mkdir /usr/java/
  3. Change to directory cd /usr/java
  4. Move the jre-7u51-linux-x64.tar.gz file to the /usr/java directory.
  5. Uncompress and unpack the tarball to install Java. tar zxvf jre-7u51-linux-x64.tar.gz
    • The Java files are installed in a directory called /usr/java/jre1.7.0_51/
  6. Delete .tar.gz file rm /usr/java/jre-7u9-linux-64.tar.gz

Setup minecraft server:

  1. Create minecraft directory. As root mkdir /minecraft
  2. Change ownership to user. As root chown username:username /minecraft
  3. Swith to username then download minecraft_server.jar to /minecraft directory
  4. Launch minecraft server using Oracle's 64-bit Java: /usr/java/jre1.7.0_51/bin/java -Xmx1024m -Xms1024M -jar minecraft_server.jar nogui
  5. Type /help at Minecraft prompt to get a list of server commands.
  6. I stop server here and customize the server.properties folder to what you want. Then restart server.

After you setup your directories change the ownership of the directories and all files in /usr/java & /minecraft to non-privileged user.

Example with user and group named "bigfoot".

chown -R bigfoot:bigfoot /minecraft
chown -R bigfoot:bigfoot /usr/java

Using the minecraft_server.jar in nogui mode does not require any changes to your video card drivers

Example start up of first Minecraft server

This example I used an existing server.properties file and simply changed the name of test world to "wildlands".

bigfoot@sweetcandy:/minecraft > /usr/java/jre1.7.0_51/bin/java -Xmx1024m -Xms1024M -jar minecraft_server.jar nogui
[11:59:12] [Server thread/INFO]: Starting minecraft server version 1.7.4
[11:59:12] [Server thread/INFO]: Loading properties
[11:59:12] [Server thread/INFO]: Default game type: SURVIVAL
[11:59:12] [Server thread/INFO]: Generating keypair
[11:59:12] [Server thread/INFO]: Starting Minecraft server on *:25565
[11:59:12] [Server thread/INFO]: Preparing level "wildlands"
[11:59:13] [Server thread/INFO]: Preparing start region for level 0
[11:59:14] [Server thread/INFO]: Preparing spawn area: 5%
[11:59:15] [Server thread/INFO]: Preparing spawn area: 12%
[11:59:16] [Server thread/INFO]: Preparing spawn area: 20%
[11:59:17] [Server thread/INFO]: Preparing spawn area: 29%
[11:59:18] [Server thread/INFO]: Preparing spawn area: 38%
[11:59:19] [Server thread/INFO]: Preparing spawn area: 47%
[11:59:20] [Server thread/INFO]: Preparing spawn area: 57%
[11:59:21] [Server thread/INFO]: Preparing spawn area: 67%
[11:59:22] [Server thread/INFO]: Preparing spawn area: 77%
[11:59:23] [Server thread/INFO]: Preparing spawn area: 86%
[11:59:24] [Server thread/INFO]: Preparing spawn area: 96%
[11:59:24] [Server thread/INFO]: Done (12.118s)! For help, type "help" or "?"

Type "help or ?" at prompt to show commands

?
[11:59:30] [Server thread/INFO]: --- Showing help page 1 of 7 (/help <page>) ---
[11:59:30] [Server thread/INFO]: /achievement give <stat_name> [player]
[11:59:30] [Server thread/INFO]: /ban <name> [reason ...]
[11:59:30] [Server thread/INFO]: /ban-ip <address|name> [reason ...]
[11:59:30] [Server thread/INFO]: /banlist [ips|players]
[11:59:30] [Server thread/INFO]: /clear <player> [item] [data]
[11:59:30] [Server thread/INFO]: /debug <start|stop>
[11:59:30] [Server thread/INFO]: /defaultgamemode <mode>

I always issue "save-all" then "stop" command when taking server offline.

save-all
[11:59:36] [Server thread/INFO]: Saving...
[11:59:36] [Server thread/INFO]: Saved the world
stop
[11:59:38] [Server thread/INFO]: Stopping the server
[11:59:38] [Server thread/INFO]: Stopping server
[11:59:38] [Server thread/INFO]: Saving players
[11:59:38] [Server thread/INFO]: Saving worlds
[11:59:38] [Server thread/INFO]: Saving chunks for level 'wildlands'/Overworld
[11:59:38] [Server thread/INFO]: Saving chunks for level 'wildlands'/Nether
[11:59:38] [Server thread/INFO]: Saving chunks for level 'wildlands'/The End

MATE Desktop

Cinnamon Desktop (with Mint 14 & 15)

Setup current Oracle Java 64-bit (Java version 7 update 9 as of this writing):

  1. Download latest version of Linux x64
  2. Create directory you want to install Java. As root mkdir /usr/java/
  3. Change to directory cd /usr/java
  4. Move the jre-7u9-linux-64.tar.gz file to the /usr/java directory.
  5. Uncompress and unpack the tarball to install Java. tar zxvf jre-7u9-linux-x64.tar.gz
    • The Java files are installed in a directory called /usr/java/jre1.7.0_09/
  6. Delete .tar.gz file rm /usr/java/jre-7u51-linux-x64.tar.gz

Setup minecraft server:

  1. Create minecraft directory. As root mkdir /minecraft
  2. Change ownership to user. As root chown username:username /minecraft
  3. Swith to username then download minecraft_server.jar to /minecraft directory
  4. Launch minecraft server using Oracle's 64-bit Java: /usr/java/jre1.7.0_09/bin/java -Xmx1024m -Xms1024M -jar minecraft_server.jar nogui
  5. Type /help at Minecraft prompt to get a list of server commands.
  6. I stop server here and customize the server.properties folder to what you want. Then restart server.

Using the minecraft_server.jar in nogui mode does not require any changes to your video card drivers

Example of successful start:

/minecraft $ /usr/java/jre1.7.0_09/bin/java -Xmx1024m -Xms1024M -jar minecraft_server.jar nogui
208 recipes
27 achievements
2012-12-01 13:16:34 [INFO] Starting minecraft server version 1.4.5
2012-12-01 13:16:34 [INFO] Loading properties
2012-12-01 13:16:34 [INFO] Default game type: SURVIVAL
2012-12-01 13:16:34 [INFO] Generating keypair
2012-12-01 13:16:35 [INFO] Starting Minecraft server on *:25565
2012-12-01 13:16:35 [INFO] Preparing level "hillville"
2012-12-01 13:16:35 [INFO] Preparing start region for level 0
2012-12-01 13:16:36 [INFO] Preparing spawn area: 54%
2012-12-01 13:16:36 [INFO] Done (1.499s)! For help, type "help" or "?"

CentOS setup on CloudAtCost

Install screen (if not already)

# yum install screen

Add a user

useradd -c "Minecraft user" -m mineuser

Create script

Create file in /etc/init.d/ directory called minecraft and copy and paste the below script.

 
#!/bin/bash
 # /etc/init.d/minecraft
 # version 0.3.9 2012-08-13 (YYYY-MM-DD)
 
 ### BEGIN INIT INFO
 # Provides:   minecraft
 # Required-Start: $local_fs $remote_fs screen-cleanup
 # Required-Stop:  $local_fs $remote_fs
 # Should-Start:   $network
 # Should-Stop:    $network
 # Default-Start:  2 3 4 5
 # Default-Stop:   0 1 6
 # Short-Description:    Minecraft server
 # Description:    Starts the minecraft server
 ### END INIT INFO
 
 #Settings
 SERVICE='minecraft_server.jar'
 OPTIONS='nogui'
 USERNAME='mineuser'
 WORLD='world'
 MCPATH='/home/mineuser/minecraft'
 BACKUPPATH='/home/minecraft/backup/minecraft.backup'
 MAXHEAP=2048
 MINHEAP=2048
 HISTORY=1024
 CPU_COUNT=1
 INVOCATION="java -Xmx${MAXHEAP}M -Xms${MINHEAP}M -XX:+UseConcMarkSweepGC \
 -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts \
 -jar $SERVICE $OPTIONS" 
 
 ME=`whoami`
 as_user() {
   if [ $ME == $USERNAME ] ; then
     bash -c "$1"
   else
     su - $USERNAME -c "$1"
   fi
 }
 
 mc_start() {
   if  pgrep -u $USERNAME -f $SERVICE > /dev/null
   then
     echo "$SERVICE is already running!"
   else
     echo "Starting $SERVICE..."
     cd $MCPATH
     as_user "cd $MCPATH && screen -h $HISTORY -dmS minecraft $INVOCATION"
     sleep 7
     if pgrep -u $USERNAME -f $SERVICE > /dev/null
     then
       echo "$SERVICE is now running."
     else
       echo "Error! Could not start $SERVICE!"
     fi
   fi
 }
 
 mc_saveoff() {
   if pgrep -u $USERNAME -f $SERVICE > /dev/null
   then
     echo "$SERVICE is running... suspending saves"
     as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
     as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'"
     as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
     sync
     sleep 10
   else
     echo "$SERVICE is not running. Not suspending saves."
   fi
 }
 
 mc_saveon() {
   if pgrep -u $USERNAME -f $SERVICE > /dev/null
   then
     echo "$SERVICE is running... re-enabling saves"
     as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'"
     as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
   else
     echo "$SERVICE is not running. Not resuming saves."
   fi
 }
 
 mc_stop() {
   if pgrep -u $USERNAME -f $SERVICE > /dev/null
   then
     echo "Stopping $SERVICE"
     as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
     as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
     sleep 10
     as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'"
     sleep 7
   else
     echo "$SERVICE was not running."
   fi
   if pgrep -u $USERNAME -f $SERVICE > /dev/null
   then
     echo "Error! $SERVICE could not be stopped."
   else
     echo "$SERVICE is stopped."
   fi
 } 
 
 mc_update() {
   if pgrep -u $USERNAME -f $SERVICE > /dev/null
   then
     echo "$SERVICE is running! Will not start update."
   else
     as_user "cd $MCPATH && wget -q -O $MCPATH/versions http://s3.amazonaws.com/Minecraft.Download/versions/versions.json"
        snap=`awk -v linenum=3 'NR == linenum {print; exit}' "$MCPATH/versions"`
        snapVersion=`echo $snap | awk -F'\"' '{print $4}'`
        re=`awk -v linenum=4 'NR == linenum {print; exit}' "$MCPATH/versions"`
        reVersion=`echo $re | awk -F'\"' '{print $4}'`
        as_user "rm $MCPATH/versions"
        if [ "$1" == "snapshot" ]; then
        MC_SERVER_URL=http://s3.amazonaws.com/Minecraft.Download/versions/$snapVersion/minecraft_server.$snapVersion.jar
        else
        MC_SERVER_URL=http://s3.amazonaws.com/Minecraft.Download/versions/$reVersion/minecraft_server.$reVersion.jar
        fi
     as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
     if [ -f $MCPATH/minecraft_server.jar.update ]
     then
       if `diff $MCPATH/$SERVICE $MCPATH/minecraft_server.jar.update >/dev/null`
       then 
         echo "You are already running the latest version of $SERVICE."
       else
         as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/$SERVICE"
         echo "Minecraft successfully updated."
       fi
     else
       echo "Minecraft update could not be downloaded."
     fi
   fi
 }
 
 mc_backup() {
    mc_saveoff
    
    NOW=`date "+%Y-%m-%d_%Hh%M"`
    BACKUP_FILE="$BACKUPPATH/${WORLD}_${NOW}.tar"
    echo "Backing up minecraft world..."
    #as_user "cd $MCPATH && cp -r $WORLD $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`"
    as_user "tar -C \"$MCPATH\" -cf \"$BACKUP_FILE\" $WORLD"
 
    echo "Backing up $SERVICE"
    as_user "tar -C \"$MCPATH\" -rf \"$BACKUP_FILE\" $SERVICE"
    #as_user "cp \"$MCPATH/$SERVICE\" \"$BACKUPPATH/minecraft_server_${NOW}.jar\""
 
    mc_saveon
 
    echo "Compressing backup..."
    as_user "gzip -f \"$BACKUP_FILE\""
    echo "Done."
 }
 
 mc_command() {
   command="$1";
   if pgrep -u $USERNAME -f $SERVICE > /dev/null
   then
     pre_log_len=`wc -l "$MCPATH/logs/latest.log" | awk '{print $1}'`
     echo "$SERVICE is running... executing command"
     as_user "screen -p 0 -S minecraft -X eval 'stuff \"$command\"\015'"
     sleep .1 # assumes that the command will run and print to the log file in less than .1 seconds
     # print output
     tail -n $[`wc -l "$MCPATH/logs/latest.log" | awk '{print $1}'`-$pre_log_len] "$MCPATH/logs/latest.log"
   fi
 }
 
 #Start-Stop here
 case "$1" in
   start)
     mc_start
     ;;
   stop)
     mc_stop
     ;;
   restart)
     mc_stop
     mc_start
     ;;
   update)
     mc_stop
     mc_backup
     mc_update $2
     mc_start
     ;;
   backup)
     mc_backup
     ;;
   status)
     if pgrep -u $USERNAME -f $SERVICE > /dev/null
     then
       echo "$SERVICE is running."
     else
       echo "$SERVICE is not running."
     fi
     ;;
   command)
     if [ $# -gt 1 ]; then
       shift
       mc_command "$*"
     else
       echo "Must specify server command (try 'help'?)"
     fi
     ;;
 
   *)
   echo "Usage: $0 {start|stop|update|backup|status|restart|command \"server command\"}"
   exit 1
   ;;
 esac
 
 exit 0

Change permissions on the script.

# chmod a+x /etc/init.d/minecraft

Add script to chkconfig

# chkconfig --add minecraft

Switch to Minecraft user and setup minecraft directory

# su - mineuser

$ mkdir minecraft

Use service command to start and stop minecraft

service minecraft (start | stop)

To use screen

View screen:

screen -r

Exit screen:

CTRL+a+d

Start minecraft

[mineuser@localhost ~]$ service minecraft start
Starting minecraft_server.jar...
minecraft_server.jar is now running.
[mineuser@localhost ~]$ screen -r

[16:27:24] [Server thread/INFO]: Starting minecraft server version 1.8
[16:27:24] [Server thread/WARN]: To start the server with more ram, launch it as "java -Xmx1024M -Xms1024M -jar minecraft_server.jar"
[16:27:24] [Server thread/INFO]: Loading properties
[16:27:24] [Server thread/WARN]: server.properties does not exist
[16:27:24] [Server thread/INFO]: Generating new properties file
[16:27:24] [Server thread/WARN]: Failed to load eula.txt
[16:27:24] [Server thread/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

Stop minecraft and edit eula.txt

Stop server so you can do the one time eula.txt agreement.

$ service minecraft stop
Stopping minecraft_server.jar
minecraft_server.jar is stopped.

[mineuser@localhost ~]$ cd minecraft/
[mineuser@localhost minecraft]$ ls
eula.txt  logs  minecraft_server.jar  server.properties
[mineuser@localhost minecraft]$ vi eula.txt

Change eula=false to eula=true

Now start then stop minecraft

Start server to generate server.properties file then stop server to edit.

[mineuser@localhost minecraft]$ service minecraft start
Starting minecraft_server.jar...
minecraft_server.jar is now running.
[mineuser@localhost minecraft]$ service minecraft stop
Stopping minecraft_server.jar
minecraft_server.jar is stopped.
[mineuser@localhost minecraft]$ vi server.properties

Final start

[miner@localhost minecraft]$ service minecraft start
Starting minecraft_server.jar...
minecraft_server.jar is now running.


Using screen

[miner@localhost minecraft]$ screen -R


[16:34:04] [Server thread/INFO]: Starting minecraft server version 1.8
[16:34:04] [Server thread/INFO]: Loading properties
[16:34:04] [Server thread/INFO]: Default game type: SURVIVAL
[16:34:04] [Server thread/INFO]: Generating keypair
[16:34:05] [Server thread/INFO]: Starting Minecraft server on *:25565
[16:34:05] [Server thread/INFO]: Preparing level "world"
[16:34:05] [Server thread/INFO]: Preparing start region for level 0
[16:34:06] [Server thread/INFO]: Preparing spawn area: 8%
[16:34:07] [Server thread/INFO]: Preparing spawn area: 58%
[16:34:08] [Server thread/INFO]: Done (2.624s)! For help, type "help" or "?"

Other Linux Links

Server start up script

Running your own Minecraft server

Setting up server on Linux from Minecraft wiki

Mods

Tale of Kingdoms I'm researching


To Gaming