# The Ubuntu Forum Community > Ubuntu Specialised Support > Gaming & Leisure >  Minecraft Installer

## allocateB

Complete Ubuntu Installer Script
by Alloc
alloc@dr.com

*UPDATES!*
-added desktop shortcut feature
-the script checks for Sun-Java, and downloads it if you dont have it
-minecraft will be added to your applications menu under games
-improved java detection script
-checks for the existence of files before creating new ones
-fixed the multiple launch bug 
-redesigned code based on shorter functions  
-user is now asked what they'd like to do  
-complete uninstall function implemented 
-now uses the official minecraft icon 
-troubleshooting menu added
-server install feature added
<< server icon

Setting up a solid installation of minecraft on Ubuntu can be a hassle.
But this installer script will do all the hard work for you!

How To Run It
 1. Download the file from the link below
 2. Right click and open the file's Properties 
 3. Browse to the Permissions tab and check the executable box
 4. Double click on the file and choose RUN IN TERMINAL!

Basically the script does this:
 - Looks for java
 - Downloads and installs OpenJDK if needed
 - Downloads Minecraft for you!
 - Installs it to a new .minecraft folder!
 - Writes a shell script to your bin folder
 - Creates a shortcut on your desktop that you can use to run Minecraft!
 - Creates a launcher in your Applications menu for Minecraft!
 - Lets you run Minecraft from terminal with a simple "minecraft" command!
 - also, it makes you happy!

*TUTORIAL*
http://www.youtube.com/watch?v=odo6QbdCfeU


Alternatively: you can give it executable permissions via the terminal and run it from there


```
:~$ cd /path/to/downloaded/file/
:~$ chmod -x Minecraft_Installer_20.sh
:~$ bash Minecraft_Installer_20.sh
```

After the script has run, you'll have a nice launcher on your desktop and you'll be able to just open up terminal and type "minecraft" to play!


 Download Link:HERE


I'd love to here your feed back and suggestions!
oh, and I wouldn't mind your problems and errors either [Notch] 
alloc@dr.com


The Script:


```
#!/bin/bash


# Alloc's Minecraft Installer:

# feel free to change, update, improve, and release this script

# suggestions of feedback? reach me at alloc@dr.com

# This script, in no way, is directly distributing any protected minecraft files
# all files are downloaded directly from minecraft.net. Don't worry, you won't be
# breaking the "one big rule" :)

# happy mining!

# latest update 5/07/2011


echo ""
echo "@-------------------------------------------@"
echo "@     Alloc's Bash Minecraft Installer      @"
echo "@     Version 2.0                           @" 
echo "@                                           @"
echo "@     Please feel free to improve           @"
echo "@     this script however you desire.       @"
echo "@                                           @"
echo "@     Alloc@dr.com                          @"
echo "@-------------------------------------------@"

counter=1

#----------------------------------#
#           DOTS FUNCTION          #
#----------------------------------#
# this function simply prints three dots. It waits .1 seconds between each dot
function dots {
while [ $counter -le 3 ]
do
echo -ne "."
sleep .1
((counter++))
done
let counter=1
echo
}
## END DOTS

#----------------------------------#
#         INSTALL FUNCTION         #
#----------------------------------#
# This is the main install function, here all the files are downloaded/created and installed
function Install {
# the first thing it does is check to see if the .minecraft folder already exists
# if so, then we don't need to create a new one, if not, we do.
if [ -e /home/$(whoami)/.minecraft ]
then
    echo  ".minecraft folder exists"
    if [ -e /home/$(whoami)/.minecraft/minecraft.jar ]
    then
        echo  -ne "have you run this before?"
        dots
    
    fi
    echo ""
else 
echo -ne "creating /home/$(whoami)/.minecraft"
dots
cd /home/$(whoami)
mkdir .minecraft
fi    




#--------------------------------------------
cd /home/$(whoami)/.minecraft
#--------------------------------------------
# after the .minecraft folder is created, the script checks for Sun-Java
# by checking to see if the installation folder is present, if so, then
# it will not download it, however it will still make sure that sun-java
# is default, just in case openjdk is already installed
echo -ne "looking for Sun-Java"
dots
if [ -e /usr/lib/jvm/java-6-sun ] 
then
    if [ -e /usr/lib/jvm/java-6-sun/bin ]
    then 
        if [ -e /usr/lib/jvm/java-6-sun/bin/java ]
        then
        echo "Sun-Java is already Installed!"
        echo -ne "We need to make sure that it is the default Java installation"
        dots
        echo "Don't worry if you see lots of errors"
        echo "this requires root access"
        # setting the default java creates alot of unneeded text, therefore it is done 
        # in a new terminal window, because people dont' really need to see it
        sudo gnome-terminal -x sudo update-java-alternatives -s java-6-sun
        echo "Sun Java set as Default."
        fi
    fi
echo ""
else
echo -ne "you'll need to install Sun-Java-JRE"
dots
echo "this will require root access!"
echo "prepare for lots of text!"
sudo apt-get install sun-java6-jre sun-java6-plugin
sudo update-java-alternatives -s java-6-sun
echo ""
echo ""
echo ""
echo " JAVA INSTALL SUCCESSFUL!"
echo "------------------------------------"
echo ""
echo ""
echo ""

fi 

#--------------------------------------------
# the .jar file is simply downloaded to the .minecraft folder from minecraft.net
# it first checks to see if the user already has it, if so, it won't be downloaded
echo -ne downloading minecraft.jar
dots
if [ -e /home/$(whoami)/.minecraft/minecraft.jar ] 
then
echo looks like you already downloaded it!
else
wget -q www.minecraft.net/download/minecraft.jar
echo "downloaded."
fi
echo""
echo -ne downloading icon
# the icon is also downloaded from minecraft.net, only if needed
dots
if [ -e /home/$(whoami)/.minecraft/icon.png ] 
then
echo "you already have the icon!"
else
wget -q http://www.minecraft.net/favicon.png
mv favicon.png icon.png
echo saved to /home/$(whoami)/.minecraft
fi
echo ""
#---------------------------------------------
echo -ne "writing bin shell"
# this writes a seperate shell script in the /usr/local/bin folder, this is what allows the user
# to run minecraft from terminal, just by typing minecraft.
dots
if [ ! -e /usr/local/bin/minecraft ] 
then
touch minecraft
echo java -jar /home/$(whoami)/.minecraft/minecraft.jar >> minecraft
echo -ne saving to usr/local/bin
dots
echo this requires root access:
sudo cp minecraft /usr/local/bin/
cd /
cd /usr/local/bin
sudo chmod +x minecraft
echo "done"
else 
echo excecutable already written
fi
echo ""
#--------------------------------------------
echo -ne writing desktop shortcut
dots
cd /home/$(whoami)/.minecraft/
if [ -e /home/$(whoami)/.minecraft/install_files ] 
then
echo -ne previous version detected, updating
dots
rm -rf install_files
fi
mkdir install_files
cd install_files

touch alloc-installer.desktop
echo "[Desktop Entry]" >> alloc-installer.desktop
echo "Type=Application" >> alloc-installer.desktop
echo "Encoding=UTF-8" >> alloc-installer.desktop
echo "Name=Minecraft" >> alloc-installer.desktop
echo "Comment=awesome game" >> alloc-installer.desktop
echo Exec= java -jar /home/$(whoami)/.minecraft/minecraft.jar >> alloc-installer.desktop
echo Icon= /home/$(whoami)/.minecraft/icon.png  >> alloc-installer.desktop
echo Categories=Game >> alloc-installer.desktop
echo "Terminal=false" >> alloc-installer.desktop
#----------------------------------------------------
echo -ne granting the shortcut excecution permissions
dots
echo this requires root access
cp alloc-installer.desktop /home/$(whoami)/Desktop
sudo chmod +x /home/$(whoami)/Desktop/alloc-installer.desktop
echo "done"
echo ""
#---------------------------------------------
echo -ne writing menu item
dots
touch alloc-menu.directory
echo [Desktop Entry] >> alloc-menu.directory
echo Value=1.0 >> alloc-menu.directory
echo Type=Directory >> alloc-menu.directory
echo Encoding=UTF-8 >> alloc-menu.directory
echo "done"
echo ""
echo -ne installing to Applications menu
dots
xdg-desktop-menu install alloc-menu.directory alloc-installer.desktop
xdg-desktop-menu forceupdate
echo installed
#--------------------------------------------
echo ""
echo "SUCCESS!"
echo ""
echo -e "Minecraft has been successfully Downloaded and Installed \nCheck your desktop and Applications menu for launchers! \nYou can also run it from terminal with a 'minecraft' command! \ncontact: alloc@dr.com" 
echo "Happy Mining!"

echo""

}
## END INSTALL

#----------------------------------#
#     SERVER INSTALL FUNCTION      #
#----------------------------------#
function ServerInstall {
echo -ne "Looking for Server File"
dots
if [ -e /home/$(whoami)/Minecraft_Server/bin/minecraft_server.jar ]
then
    echo -ne "Server Files already installed!"
    dots
    Main
else
echo "not found!"
fi
echo ""
echo -ne "Creating Server Directory"
dots
mkdir /home/$(whoami)/Minecraft_Server
cd /home/$(whoami)/Minecraft_Server
mkdir bin
cd bin
echo ""
echo -ne "Downloading"
dots
echo -ne "     -minecraft_server.jar"
echo     "   done!"
wget -q http://www.minecraft.net/download/minecraft_server.jar

echo -ne "     -server_icon.png     "
echo     "   done!"
dots
wget -q http://i.imgur.com/ugDRM.png
mv ugDRM.png server_icon.png

echo ""
echo -ne "Writing Shell Launcher"
dots
if [ -e minecraft_server ] 
then
    rm minecraft_server
fi
touch minecraft_server
echo "cd /home/$(whoami)/Minecraft_Server" >> minecraft_server
echo "pwd" >> minecraft_server

echo "java -Xmx1024M -Xms1024M -jar bin/minecraft_server.jar" >> minecraft_server
echo -ne  "Copying to bin folder"
dots
echo "This may require root access:"
sudo cp minecraft_server /usr/local/bin
sudo chmod +x /usr/local/bin/minecraft_server
echo "done"
echo ""

echo -ne "Creating launchers"
dots

mkdir install_files
cd install_files

if [ -e alloc-server_installer.desktop ] || [ -e alloc-menu.directory ] 
then
    rm alloc-server_installer.desktop
    rm alloc-menu.directory
fi
touch alloc-server_installer.desktop
  echo "[Desktop Entry]" >> alloc-server_installer.desktop
  echo "Type=Application" >> alloc-server_installer.desktop
  echo "Encoding=UTF-8" >> alloc-server_installer.desktop
  echo "Name=Server Minecraft" >> alloc-server_installer.desktop
  echo "Comment=Server GUI" >> alloc-server_installer.desktop
  echo Exec=  minecraft_server >> alloc-server_installer.desktop
  echo Icon= /home/$(whoami)/Minecraft_Server/bin/server_icon.png  >> alloc-server_installer.desktop
  echo Categories=Game >> alloc-server_installer.desktop
  echo "Terminal=false" >> alloc-server_installer.desktop
#----------------------------------------------------
echo -ne "Granting the shortcut excecution permissions"
dots
echo this requires root access
cp alloc-server_installer.desktop /home/$(whoami)/Desktop
sudo chmod +x /home/$(whoami)/Desktop/alloc-server_installer.desktop
echo "done"
echo ""

echo -ne "Writing menu item"
dots
touch alloc-menu.directory
  echo [Desktop Entry] >> alloc-menu.directory
  echo Value=1.0 >> alloc-menu.directory
  echo Type=Directory >> alloc-menu.directory
  echo Encoding=UTF-8 >> alloc-menu.directory

echo -ne "Installing server launchers"
dots
xdg-desktop-menu install alloc-menu.directory alloc-server_installer.desktop
xdg-desktop-menu forceupdate
echo "done"
echo ""
echo  -e "The Minecraft server client has been installed! \nrun it from the launchers, or by typing 'minecraft_server' into terminal"


## END SERVER INSTALL 
}

#----------------------------------#
#    SERVER UNINSTALL FUNCTION     #
#----------------------------------#
function ServerUninstall {
if [ ! -d /home/$(whoami)/Minecraft_Server ]
then
    echo Server is not installed!
    return
fi
cd /home/$(whoami)/Minecraft_Server/bin/install_files
echo -ne "Removing Launchers"
dots
xdg-desktop-menu uninstall alloc-menu.directory alloc-server_installer.desktop
echo "done"
echo ""
echo -ne "Removing Desktop Icon"
dots
cd /home/$(whoami)/Desktop
if [ -e alloc-server_installer.desktop ]
then
    rm alloc-server_installer.desktop
    echo "done"
else
    echo "Does not exits"
fi
echo ""
echo -ne "Removing Server"
dots
if [ -d /home/$(whoami)/Minecraft_Server/bin ]
then
    cd /home/$(whoami)/Minecraft_Server
    rm -rf bin
    echo "done"
fi
echo ""
echo -ne "Removing launch script"
dots
echo "this requires root access"
sudo rm /usr/local/bin/minecraft_server
echo "done"

echo "Uninstall Successful"
}
#----------------------------------#
#       UNINSTALL FUNCTION         #
#----------------------------------#
function Uninstall {
echo -ne "Looking for Minecraft"
dots
if [ ! -e /home/$(whoami)/.minecraft/minecraft.jar ]
then
    echo -ne "  -folder not detected"
    dots
    if [ ! -e /usr/local/bin/minecraft ]
    then
    echo -ne "  -bin launcher not detected"
    dots
    echo""
    echo "Minecraft doesn't seem to be installed!"
    Main
    return
    fi
fi
echo "Minecraft found!"
echo -ne "Uninstalling Minecraft"
dots
echo "NOTE: You're save files will be kept"
cd /home/$(whoami)/.minecraft
echo ""
echo -ne "Deleting files and folders"
dots
rm -rf bin
rm -rf texturepacks
rm minecraft.jar
if [ -e options.txt ]
then
    rm options.txt
fi
if [ -e lastlogin ]
then
    rm lastlogin
fi
rm minecraft
rm -rf resources
rm icon.png
cd install_files
echo "Removing Application Launcher"

xdg-desktop-menu uninstall alloc-menu.directory alloc-installer.desktop
echo "Removing Desktop Shortcut"
rm /home/$(whoami)/Desktop/alloc-installer.desktop
rm -rf /home/$(whoami)/.minecraft/install_files
echo ""
echo -ne "Removing Binary Launcher"
dots
echo "this requires root access:"
sudo rm /usr/local/bin/minecraft
echo ""
echo "Minecraft has been uninstalled :(" 

}
## END UNINSTALL

#----------------------------------#
#     TROUBLESHOOT FUNCTION        #
#----------------------------------#
function TroubleShoot {
echo ""
echo ""
echo "#----------------------------------#"
echo "#       Troubleshooting Menu       #"
echo "#----------------------------------#"

echo "What would you like to do? (enter number of choice)"; echo "";
echo "1. install/update Sun-Java"
echo "2. install/update OpenJDK"
echo "3. use Sun-Java to run minecraft from now on"
echo "4. use OpenJDK to run minecraft from now on (not generally encouraged)"
echo "5. these options didn't fix it!"
echo "6. return to the main menu"
TINPUT=0
read TINPUT
if [ $TINPUT -eq 1 ]
then
    echo -ne "Installing/Updating Sun-Java"
    dots
    echo "this requires root access:"
    sudo apt-get install sun-java6-jre
    echo ""; echo ""; echo; echo "Finished!"; echo "";
    TroubleShoot
else
if [ $TINPUT -eq 2 ]
then
    echo -ne "Installing/Updating OpenJDK"
    dots
    echo "this requires root access:"
    sudo apt-get install openjdk-6-jre
    echo ""; echo ""; echo; echo "Finished!"; echo "";
    TroubleShoot
else
if [ $TINPUT -eq 3 ]
then
    echo -ne "Making Sun-Java the default"
    dots
    echo "Don't worry if you see lots of errors"

    sudo gnome-terminal -x sudo update-java-alternatives -s java-6-sun
    echo ""; echo ""; echo; echo "Finished!"; echo "";
else 
if [ $TINPUT -eq 4 ]
then
    echo -ne "Making OpenJDK the default"
    dots
    echo "Don't worry if you see lots of errors"

    sudo gnome-terminal -x sudo update-java-alternatives -s java-6-openjdk
    echo ""; echo ""; echo; echo "Finished!"; echo "";
else
if [ $TINPUT -eq 5 ]
then
echo "-------------------------------------------------"
echo "if these troubleshooting options didn't fix your,"
echo "problem, I'd be glad to help you out! "
echo "Alloc@dr.com"
echo "-------------------------------------------------"
read NOTHING
Main
else
if [ $TINPUT -eq 6 ]
then
return
else
echo invalid choice
TroubleShoot
fi
fi
fi
fi
fi
fi
}

## END TROUBLESHOOT

#----------------------------------#
#          MAIN FUNCTION           #
#----------------------------------#
function Main {
echo ""
echo "------------------------------------------------------"
echo "What would you like to do? (enter number of choice) "; echo "";
INPUT=0
while [ $INPUT != 1 ] && [ $INPUT != 2 ] && [ $INPUT != 3 ]
do
echo "1. Install Minecraft"
echo "2. Uninstall Minecraft"
echo "3. Install Minecraft Server"
echo "4. Uninstall Minecraft Server"
echo "5. TroubleShooting"
echo "6. Exit"
if [ -e /usr/local/bin/minecraft ] && [ -e /home/$(whoami)/.minecraft/minecraft.jar ]
then
echo "7. Play Minecraft!"
fi
read INPUT
if [ $INPUT -eq 1 ] 
then
    Install
    Main
    return
else 
if [ $INPUT -eq 2 ] 
then
    Uninstall
    Main
    return
else
if [ $INPUT -eq 3 ]
then
    ServerInstall
    Main
    return
else
if [ $INPUT -eq 4 ]
then
    ServerUninstall
    Main
    return
else
if [ $INPUT -eq 5 ]
then
    TroubleShoot
    Main
    return
else
if [ $INPUT -eq 6 ]
then
    return
else
if [ $INPUT -eq 7 ] && [ -e /usr/local/bin/minecraft ] && [ -e /home/$(whoami)/.minecraft/minecraft.jar ]
then
minecraft
else

    echo "invalid choice"
    Main
fi
fi
fi
fi
fi
fi
fi

done
}


#----------------------------------#
#      CALL THE MAIN FUNCTION      #
#----------------------------------#

Main

# THE END
```

Notice:
This script does not hold or contain any protected material or files. You are free to change and distribute this script however you so desire.

----------


## bryogenic

Looks interesting. I'm looking forward to trying it out.

One thing that might need changed though is to install and select Sun Java 1.6 instead of OpenJDK.  While OpenJDK may work fine I've seen anecdotal evidence that many have found that it runs better with Sun Java.  Maybe you could add a selection option at the start of the script to choose which version of Java to check for and use.

Thanks for the script!

----------


## allocateB

> Looks interesting. I'm looking forward to trying it out.
> 
> One thing that might need changed though is to install and select Sun Java 1.6 instead of OpenJDK.  While OpenJDK may work fine I've seen anecdotal evidence that many have found that it runs better with Sun Java.


Thanks for the input! I'm working on just that feature right now! But I'm at a bit of a snag. I've found that when people use sun java, the desktop and menu launchers don't work! I'm sure its possible to get them to work however, I just need to keep looking!
Thanks!

----------


## thefinn93

Very neat! however, two suggestions:

1. It might be better to use sun-java6 instead of openJDK (as is suggested on the official download page)

2. I'd much prefer the favicon for minecraft.net over the "creeper" image you have. It seems to fit the game better (IMO). I'd suggest getting http://minecraft.net/favicon.png over the photobucket link you have. If you want to keep that one at least stick it on a host that doesn't cap your bandwidth. Otherwise some people might end up getting the photobucket "Bandwitdh Expired" message instead of the Minecraft icon. I'd suggest imgur.com

----------


## allocateB

*Updates* (all the updates since original post, the first four had already been released)
-added desktop shortcut feature
-you no longer need gcc!
-the script checks for openjdk, and downloads it if you dont have it
-minecraft will be added to your applications menu under games
NEW:
-improved java detection script
-checks for the existence of files before creating new ones
-fixed the multiple launch bug 
-redesigned code based on shorter functions  
-user is now asked what they'd like to do  
-complete uninstall function implemented 
-now uses the official minecraft icon 






> Very neat! however, two suggestions:
> 
> 1. It might be better to use sun-java6 instead of openJDK (as is suggested on the official download page)
> 
> 2. I'd much prefer the favicon for minecraft.net over the "creeper" image you have.


Thanks for the suggestions finn!
The script has been almost completely reworked, and has now about doubled in size.
Part of those updates is that it does now use the official minecraft favicon!

I'm working on an trouble shooting option in the script that lets user choose their java distribution. keep an eye out for it!

Thanks for the support!

----------


## termin

Not that I would, but how would you uninstall this?

----------


## allocateB

> Not that I would, but how would you uninstall this?


The script now has an uninstall feature. I forgot to update the download link so you may have an outdated version! The link has been updated now with the latest version!

----------


## mbudden

Interesting. This didn't work in Linux Mint 10 LXDE which is basically like Lbuntu, which is based off of Ubuntu.

----------


## penalt

This just isn't working for me.  I'm pretty new with Linux and I just don't seem to be getting function.  The script doesn't seem to do anything

----------


## El3mentGamer

Worked perfect for me! But now that i updated to Ubuntu 11.04, fullscreen crashes Ubuntu. Is there a fix?

----------


## GameGuru

I did this and it worked.  I installed Minecraft and it says it worked.  I launch it and it asked for my username and password, went to Mojang's site and created one and it keeps saying Login failed and Play Offline is grayed out and it said Not Downloaded.  How do I play offline and how do I get it downloaded?

----------


## DarkAmbient

You need to buy Minecraft "for your" account as well, it's €19.95.

----------


## merlinlcb

your installer doesnt install the new launcher

----------


## Laurence02

Worked on my previous installation! Thanks sir, you made my day!

----------


## rungms

i did do it for my minecraft servers and worked

----------


## Will_McDade

What does this actually... do..?

----------

