Difference between revisions of "Minecraft"
Line 411: | Line 411: | ||
<code># chmod a+x /etc/init.d/minecraft</code> | <code># chmod a+x /etc/init.d/minecraft</code> | ||
'''Add script | '''Add script to chkconfig''' | ||
<code># chkconfig --add minecraft</code> | <code># chkconfig --add minecraft</code> | ||
Line 417: | Line 417: | ||
'''Switch to Minecraft user and setup minecraft directory''' | '''Switch to Minecraft user and setup minecraft directory''' | ||
<code># su - mineuser | <code># su - mineuser</code> | ||
$ mkdir minecraft</code> | |||
<code>$ mkdir minecraft</code> | |||
'''Use service command to start and stop minecraft''' | '''Use service command to start and stop minecraft''' | ||
Line 499: | Line 500: | ||
[16:34:06] [Server thread/INFO]: Preparing spawn area: 8% | [16:34:06] [Server thread/INFO]: Preparing spawn area: 8% | ||
[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 "?" | [16:34:08] [Server thread/INFO]: Done (2.624s)! For help, type "help" or "?"</pre> | ||
Revision as of 13:27, 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
- Go to http://lwjgl.org/download.php
- Click the link to download the newest stable release
- Download lwjgl-x.x.x.zip (lwjgl-2.8.4.zip was latested on 8-21-2012)
- In your home directory Ctrl + H to show hidden files
- 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.
- 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):
- Download latest version of Linux x64
- Create directory you want to install Java. As root
mkdir /usr/java/
- Change to directory
cd /usr/java
- Move the jre-7u51-linux-x64.tar.gz file to the /usr/java directory.
- 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/
- Delete .tar.gz file
rm /usr/java/jre-7u9-linux-64.tar.gz
Setup minecraft server:
- Create minecraft directory. As root
mkdir /minecraft
- Change ownership to user. As root
chown username:username /minecraft
- Swith to username then download minecraft_server.jar to /minecraft directory
- Launch minecraft server using Oracle's 64-bit Java:
/usr/java/jre1.7.0_51/bin/java -Xmx1024m -Xms1024M -jar minecraft_server.jar nogui
- Type /help at Minecraft prompt to get a list of server commands.
- 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):
- Download latest version of Linux x64
- Create directory you want to install Java. As root
mkdir /usr/java/
- Change to directory
cd /usr/java
- Move the jre-7u9-linux-64.tar.gz file to the /usr/java directory.
- 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/
- Delete .tar.gz file
rm /usr/java/jre-7u51-linux-x64.tar.gz
Setup minecraft server:
- Create minecraft directory. As root
mkdir /minecraft
- Change ownership to user. As root
chown username:username /minecraft
- Swith to username then download minecraft_server.jar to /minecraft directory
- Launch minecraft server using Oracle's 64-bit Java:
/usr/java/jre1.7.0_09/bin/java -Xmx1024m -Xms1024M -jar minecraft_server.jar nogui
- Type /help at Minecraft prompt to get a list of server commands.
- 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''' <pre>[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
Running your own Minecraft server
Setting up server on Linux from Minecraft wiki
Mods
Tale of Kingdoms I'm researching