shinji

Minecraft script

Sep 14th, 2011
4,850
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.28 KB | None | 0 0
  1. #!/bin/bash
  2. # chkconfig: 2345 20 80
  3. # description: A basic minecraft startup script created by Piffey \
  4. #              and modified by Robert Pendell to support users.
  5.  
  6. # Simple bukkit startup script by Piffey
  7. # This is by no means a clean script, but it will get the job done.
  8. # Suggestions? Improvements? Let me know at Piffey.com
  9.  
  10. # All of the screen stuff was adapted from ragon's <frederik.engels24 AT gmail DOT com> script for his Arch Linux package.
  11. # Reason: I don't use screen, but it's likely the best option for anyone looking for a simple script they can run and ignore.
  12. # His script worked perfect for my first server too. Thanks ragon.
  13.  
  14. # Some modifications by Robert Pendell
  15. # * Added sudo string and set user to run server as (security)
  16. # * Added save state option (for crons)
  17. # * Added friendly restart option (for crons)
  18. # * Modified backups to be more verbose in console and game
  19. # * Modified backup function to create backup dir if it doesn't exist
  20. # * Added more string variables
  21.  
  22. # Set these values to match your server's settings.
  23.  
  24. backupdir=/minecraft/backups/
  25. bukkitdir=/minecraft/
  26. bukkitfilename=craftbukkit.jar
  27. bukkitupdate=craftbukkit-updater.jar
  28. username=minecraft
  29.  
  30. backupmsg="Starting multiworld backup..."
  31. backupdone="Multiworld backup completed!"
  32. backupworldmsg="Backing up world"
  33. readonlymsg="Server is now in Read-Only Mode."
  34. readwritemsg="Server now in Read-Write Mode."
  35. savestatemsg="Saving state..."
  36.  
  37. dateformat=$(date '+%Y%m%dh%Hm%M')
  38.  
  39. # Make sure you change this to the name of your world folder! Add additional worlds by separating them with a white space. If you only have one world, change
  40. # this to have only one value like "world" or "creative".
  41. declare -a worlds=(world world_nether skyrealm creative)
  42. numworlds=${#worlds[@]}
  43.  
  44. # Set these for the amount of RAM you want to allocate. Good practice is to have the numbers match.
  45. # This is the Java heap max and initial size.
  46. # The second line is an attempt at agressive garbage collection
  47.  
  48. javaparams="-client -Xmx1024M"
  49. #javaparams="-server -Xmx1024M -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=2 -XX:+AggressiveOpts"
  50.  
  51. # You can find this location with "whereis java". Make sure this points to the binary.
  52.  
  53. javaloc=/usr/bin/java
  54.  
  55. # This currently points to the "preferred" release for bukkit which is kind of like a stable version.
  56. # Change this value if you want to use the snapshot release.
  57. bukkiturl=http://ci.bukkit.org/job/dev-CraftBukkit/promotion/latest/Recommended/artifact/target/craftbukkit-0.0.1-SNAPSHOT.jar
  58.  
  59. startbukkit()
  60. {
  61.     if [ "$(screen -ls | grep bukkit)" == "" ] ; then
  62.         cd $bukkitdir
  63.         screen -S bukkit -dmS sudo -u $username $javaloc $javaparams -jar $bukkitdir$bukkitfilename nogui
  64.     echo $!
  65.         echo "Starting bukkit server."
  66.     else
  67.         echo "Bukkit is already running."
  68.         exit 0
  69.     fi
  70. }
  71.  
  72. stopbukkit()
  73. {
  74.     if [ "$(screen -ls | grep bukkit)" == "" ] ; then
  75.         echo "Bukkit is not running."
  76.         exit 0
  77.     else
  78.         screen -S bukkit -p 0 -X stuff "stop$(echo -ne '\r')"
  79.         sleep 5
  80.     fi
  81. }
  82.  
  83. updatebukkit()
  84. {
  85.     if [ "$(screen -ls | grep bukkit)" == "" ] ; then
  86.         sleep 0
  87.     else
  88.         screen -S bukkit -p 0 -X stuff "say Going down for an update in 60 seconds.$(echo -ne '\r')"
  89.         sleep 55
  90.         screen -S bukkit -p 0 -X stuff "say Going down for an update in 5 seconds.$(echo -ne '\r')"
  91.         sleep 5
  92.         stopbukkit        
  93.     fi
  94.  
  95.     wget -O $bukkitdir$bukkitupdate $bukkiturl
  96.     sleep 5
  97.     mv $bukkitdir$bukkitupdate $bukkitdir$bukkitfilename
  98.     sleep 5
  99. }
  100.  
  101. backupbukkit()
  102. {
  103.     echo "Starting multiworld backup..."
  104.     if [ "$(screen -ls | grep bukkit)" == "" ] ; then
  105.         sleep 0
  106.     else
  107.         screen -S bukkit -p 0 -X stuff "say $backupmsg $(echo -ne '\r')"
  108.         screen -S bukkit -p 0 -X stuff "save-all$(echo -ne '\r')"
  109.         sleep 5
  110.         screen -S bukkit -p 0 -X stuff "save-off$(echo -ne '\r')"
  111.         screen -S bukkit -p 0 -X stuff "say $readonlymsg $(echo -ne '\r')"
  112.     fi
  113.     if [ -d $backupdir ] ; then
  114.         sleep 0
  115.     else
  116.         mkdir -p $backupdir
  117.     fi
  118.     mkdir $backupdir$dateformat
  119.     for ((i=0;i<$numworlds;i++)); do
  120.         screen -S bukkit -p 0 -X stuff "say $backupworldmsg ${worlds[$i]}. $(echo -ne '\r')"
  121.         cp -R $bukkitdir${worlds[$i]} $backupdir$dateformat
  122.         echo "Saving '${worlds[$i]}' to '$backupdir$dateformat'"
  123.     done
  124.  
  125.     if [ "$(screen -ls | grep bukkit)" == "" ] ; then
  126.         sleep 0
  127.     else
  128.         sleep 5
  129.         screen -S bukkit -p 0 -X stuff "save-on$(echo -ne '\r')"
  130.         screen -S bukkit -p 0 -X stuff "say $readwritemsg $(echo -ne '\r')"
  131.         screen -S bukkit -p 0 -X stuff "say $backupdone $(echo -ne '\r')"
  132.     fi
  133.     echo "Backup complete."
  134. }
  135.  
  136. savestatebukkit()
  137. {
  138.     if [ "$(screen -ls | grep bukkit)" == "" ] ; then
  139.         sleep 0
  140.     else
  141.         screen -S bukkit -p 0 -X stuff "say $savestatemsg $(echo -ne '\r')"
  142.         screen -S bukkit -p 0 -X stuff "save-all$(echo -ne '\r')"
  143.     fi
  144. }
  145.  
  146. case $1 in
  147.     start)
  148.         startbukkit
  149.         ;;
  150.     stop)
  151.         stopbukkit
  152.         ;;
  153.     restart)
  154.         stopbukkit
  155.         sleep 5
  156.         startbukkit
  157.         ;;
  158.     update)
  159.         updatebukkit
  160.         ;;
  161.     backup)
  162.         backupbukkit
  163.         ;;
  164.     savestate)
  165.         savestatebukkit
  166.         ;;
  167.     friendlyrestart)
  168.         if [ "$(screen -ls | grep bukkit)" == "" ] ; then
  169.             sleep 0
  170.         else
  171.             screen -S bukkit -p 0 -X stuff "say Restarting in 60 seconds.$(echo -ne '\r')"
  172.         sleep 55
  173.         screen -S bukkit -p 0 -X stuff "say Restarting in 5 seconds.$(echo -ne '\r')"
  174.         sleep 5
  175.             stopbukkit
  176.             sleep 5
  177.             startbukkit
  178.         fi
  179.         ;;      
  180.     friendlystop)
  181.         screen -S bukkit -p 0 -X stuff "say Going down in 5 minutes.$(echo -ne '\r')"
  182.         sleep 240
  183.         screen -S bukkit -p 0 -X stuff "say Going down in 60 seconds.$(echo -ne '\r')"
  184.         sleep 55
  185.         screen -S bukkit -p 0 -X stuff "say Going down in 5 seconds.$(echo -ne '\r')"
  186.         sleep 5
  187.         stopbukkit
  188.         ;;
  189.     *)
  190.         echo "Usage: $0 {start|stop|restart|update|backup|savestate|friendlyrestart|friendlystop}"
  191. esac
  192.  
  193. exit 0
Advertisement
Add Comment
Please, Sign In to add comment