#!/bin/bash


#THIS SOFTWARE IS PROVIDED UNDER MIT LICENSE. A COPY IS AVALIABLE AT https://raw.githubusercontent.com/MinecraftDesktopOnPi/MConPi2019/master/LICENSE
# A script to install minecraft on pi (for the lazy lads)
# Thanks to rpiMike on the raspberry pi forums for making this possible


# SNIPPED FROM raspi-config  https://github.com/RPi-Distro/raspi-config UNDER MIT LICENSE
WT_HEIGHT=17
WT_WIDTH=$(tput cols)



# get pi version 
# SNIPPED BUT CHANGED FROM raspi-config  https://github.com/RPi-Distro/raspi-config UNDER MIT LICENSE

pione() {
   if grep -q "^Revision\s*:\s*00[0-9a-fA-F][0-9a-fA-F]$" /proc/cpuinfo; then
      return 0
   elif grep -q "^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]0[0-36][0-9a-fA-F]$" /proc/cpuinfo ; then
      return 0
   else
      return 1
   fi
}
pitwo() {
   grep -q "^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]04[0-9a-fA-F]$" /proc/cpuinfo
   return $?
}
pizero() {
   grep -q "^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]0[9cC][0-9a-fA-F]$" /proc/cpuinfo
   return $?
}
pifour() {
   grep -q "^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]11[0-9a-fA-F]$" /proc/cpuinfo
   return $?
}
piver() {
   if pione; then
      Pi=1
   elif pitwo; then
      Pi=2
   elif pizero; then
      Pi=0
   elif pifour; then
      Pi=4
   else
      Pi=3
   fi
}

# SNIPPED FROM raspi-config  https://github.com/RPi-Distro/raspi-config UNDER MIT LICENSE
if [ -z "$WT_WIDTH" ] || [ "$WT_WIDTH" -lt 60 ]; then
  WT_WIDTH=80
fi
if [ "$WT_WIDTH" -gt 178 ]; then
  WT_WIDTH=120
fi

WT_MENU_HEIGHT=$(($WT_HEIGHT-7))




update() {
	# Updates system packages
	sudo apt -q update && sudo apt -y upgrade
}

gldrivers() {
	if [ $Pi -eq 3 ]; then 
		# Turns GL drivers on
		sudo sed /boot/config.txt -i -e "s/^dtoverlay=vc4-kms-v3d/#dtoverlay=vc4-kms-v3d/g"
		sudo sed /boot/config.txt -i -e "s/^#dtoverlay=vc4-kms-v3d/dtoverlay=vc4-fkms-v3d/g"
	fi
}

stopifcannothandle() {
	# Stops if your Pi cannot handle it
	if [ $Pi -lt 3 ];  then
		exit
	fi
} 




setupmc1() {
	# Install rpiMike's setupMC1 script
	# I DO NOT CLAIM CREDIT FOR THE SCRIPT THAT WILL BE DOWNLOADED. IT IS NOT MY WORK AND I CLAIM NO PART IN IT.
	mkdir ~/Minecraft
	cd ~/Minecraft
	wget https://www.dropbox.com/s/4irv50ow07yxn65/setupMC1.sh
	chmod +x setupMC1.sh
	./setupMC1.sh
}






mcinstallbaseassets() {
	whiptail --msgbox "When the Minecraft launcher loads in a minute, please:\n
	Login with email and password\n
	Click 'edit profile' and select use profile - 'release 1.12.2', then 'save profile\n
	Click Play\n
	You will get an error\n
	Close launcher\n" $WT_HEIGHT $WT_WIDTH 
	cd ~/Minecraft
	java -jar Minecraft.jar && sleep 5 && echo ^C
}




installoptifine() {
	whiptail --msgbox "Please click Install when the OptiFine installer loads" --title "Minecraft Installer Tool" $WT_HEIGHT $WT_WIDTH 
	cd ~/Minecraft
	java -jar OptiFine_1.12.2_HD_U_E3.jar
}










mcinstalloptifineassets() {
	whiptail --msgbox "When the Minecraft launcher loads in a minute, please:\n
	Click 'edit profile' and select use profile - 'Optifine', then 'save profile.\n
	Click Play.\n
	You will get an error.\n
	Close launcher.\n" $WT_HEIGHT $WT_WIDTH --title "Minecraft Installer Tool"
	cd ~/Minecraft
	java -jar Minecraft.jar
}



getcredentials() {
	  EMAIL=$(whiptail --inputbox "Please enter your minecraft email (NOT USERNAME)." $WT_HEIGHT $WT_WIDTH --title "Minecraft Installer Tool" 3>&1 1>&2 2>&3)

	  USERNAME=$(whiptail --inputbox "Please enter your minecraft username (NOT EMAIL)." $WT_HEIGHT $WT_WIDTH  --title "Minecraft Installer Tool" 3>&1 1>&2 2>&3)

	  PASSWORD=$(whiptail --passwordbox "Please enter your minecraft password." $WT_HEIGHT $WT_WIDTH  --title "Minecraft Installer Tool" 3>&1 1>&2 2>&3)

}


changecredentials() {
	cd ~/Minecraft
	sed -n "s/LOGIN=abc@bbb.ccc/LOGIN=$EMAIL/" runMC1_12_2_OptifineE3.sh
	sed -n "s/USERNAME=abcdefghi/USERNAME=$USERNAME/" runMC1_12_2_OptifineE3.sh
	sed -n "s/PASSWORD=xxxxxxxx/PASSWORD=$PASSWORD/" runMC1_12_2_OptifineE3.sh
}




pione
pitwo
pizero
pifour

piver

echo "Your Pi will now update. Please wait"
update

gldrivers

stopifcannothandle

setupmc1

mcinstallbaseassets

installoptifine

mcinstalloptifineassets

getcredentials

changecredentials