#!/bin/bash # Script in strict mode set -eu # -------------------------------------------------------------------------- # Imports # -------------------------------------------------------------------------- # Beginning Of the Script by cerberus cat </dev/null; then echo "Java is not installed. Installing Java and necessary packages..." # Update and install necessary packages sudo apt update && sudo apt upgrade -y sudo apt install -y openjdk-17-jdk openjdk-17-jre-headless tmux # Add necessary commands to /etc/rc.local if not already present if ! grep -q "exec 1>/tmp/rc.local.log" /etc/rc.local; then sudo tee -a /etc/rc.local > /dev/null </tmp/rc.local.log 2>&1 set -x EOL fi # Make /etc/rc.local executable sudo chmod +x /etc/rc.local else echo "Java is already installed, proceeding..." fi # Final message echo "All required programs are already installed and rc.local is configured. Proceeding with installation..." sleep 2 # -------------------------------------------------------- # Installation Directories # -------------------------------------------------------- echo "Give your server a name. Under the ~/servername you can later" echo "find all server files and the management script." echo 'Use "-" or "_" as name seperator!' read -p "Servername: " name working_dir="$HOME/$name" management_dir="$HOME/$name/management" management_logs="$HOME/$name/management/installation_logs" server_dir="$HOME/$name/server" echo "Creating directories" mkdir $working_dir mkdir $management_dir mkdir $management_logs mkdir $server_dir # -------------------------------------------------------- # Modloader Selection # -------------------------------------------------------- echo What Modloader should be used? modloader=("Forge" "Fabric") select opt in "${modloader[@]}" do case $opt in "Forge") break ;; "Fabric") echo "Fabric is not supported yet" exit 1 break ;; *) echo "Invalid selection" ;; esac done # -------------------------------------------------------- # Select MC-Version # -------------------------------------------------------- echo "Give the minecraft and forge version in following format:" echo "mc.version-forge.version e.g.: 1.20.1-47.3.0" read -p "Version: " version # echo $version # Logging output # sleep 1 # Building installer download URL URL="https://maven.minecraftforge.net/net/minecraftforge/forge/${version}/forge-${version}-installer.jar" # echo $URL # Logging output # -------------------------------------------------------- # Downloading Installer # -------------------------------------------------------- echo "Downloading Installer..." wget -P $server_dir "$URL" -o "$management_logs/wget.log" & # no output for wget PID=$! ( while kill -0 $PID 2> /dev/null; do echo "Downloading....." sleep 1 done echo "Download finished." ) & wait $PID sleep 2 # -------------------------------------------------------- # Installing Server # -------------------------------------------------------- echo "Installing Server" cd "${server_dir}" sleep 1 java -jar forge-${version}-installer.jar --installServer > /dev/null 2>&1 & # Store the PID of the installer process PID=$! # Progress monitoring while the server is installing ( while kill -0 $PID 2> /dev/null; do echo "Installing server....." sleep 5 done echo "Server installation finished." ) echo "Removing Installer" rm "forge-${version}-installer.jar" mv "forge-${version}-installer.jar.log" $management_logs echo "You can now find the management script in /$HOME/$management_dir "