Compare commits

..

24 Commits
v1.1.6 ... main

Author SHA1 Message Date
9984440a38
fix(README): grammar 2023-09-08 15:08:50 +02:00
c585238c2d Fix: the selected version printed when migrating server versions 2023-04-10 20:57:54 +02:00
dd93be3a8e Fix: moving java 16 into ~/.adoptium_java 2023-04-10 20:53:29 +02:00
1997882671 Fix: download java 16 2023-04-10 20:49:54 +02:00
13aaecb315 fix(server_launch): set proper java arguments 2023-03-30 19:21:26 +02:00
78d6bcfd5a
Create FUNDING.yml 2023-03-04 06:40:04 +01:00
8fb2cf7488 Fix version and server type failsafe triggering on server install 2023-03-02 21:31:28 +01:00
e31a66529a Fix the server type failsafe 2023-03-02 20:48:50 +01:00
f446eadde4 Fix version number 2023-03-02 20:37:35 +01:00
353b49a76d Add a failsafe for server type change 2023-03-02 20:35:23 +01:00
3563330d6b Fix variable not assigning properly 2023-02-27 05:53:34 +01:00
64d2a60f8e Bugfix version bump 2023-02-27 05:50:46 +01:00
a16e68ca37 Fix a typo 2023-02-27 05:49:13 +01:00
2dd188a630 Add fabric suported servers in readme 2023-02-27 05:46:30 +01:00
cd9c5910b7
Merge pull request #2 from jiriks74/add_fabric_support
Add initial support for Fabric
2023-02-27 05:44:06 +01:00
7cb94c80a2
Remove complicated variable getting
It was there for no reason
2023-02-27 05:43:39 +01:00
0ea15a86f5
Remove useless echo 2023-02-27 05:42:14 +01:00
c84d8c7d44 Add initial support for Fabric 2023-02-27 05:39:44 +01:00
68ca598ba1 Update help message 2023-02-27 04:02:43 +01:00
ad53b9a6cf Fix duplicate helper scripts update 2023-02-27 03:54:19 +01:00
2731e6f2a3 Fix Makefile's version mismatch detection 2023-02-27 03:48:05 +01:00
b12f4589f5 Fix updating helper scripts after script update 2023-02-27 03:32:43 +01:00
5b637cf84d Fix system java detection 2023-02-27 03:22:55 +01:00
2845e4cd4f Fi typo in Makefile and .gitignore 2023-02-27 03:07:54 +01:00
11 changed files with 232 additions and 30 deletions

13
.github/FUNDING.yml vendored Normal file

@ -0,0 +1,13 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: jiriks74 # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

2
.gitignore vendored

@ -1 +1 @@
msman-hepler.tar.gz msman-helper.tar.gz

@ -5,9 +5,10 @@ function get_existing_server {
if ls paper-*.jar 1> /dev/null 2>&1; then if ls paper-*.jar 1> /dev/null 2>&1; then
existing_server_type="paper" existing_server_type="paper"
get_existing_paper get_existing_paper
elif ls fabric-server-mc.*.jar 1> /dev/null 2>&1; then
existing_server_type="fabric"
get_existing_fabric
# TODO: Add support for other server types # TODO: Add support for other server types
# elif ls fabric-*.jar 1> /dev/null 2>&1; then
# existing_server_type="fabric"
# elif ls spigot-*.jar 1> /dev/null 2>&1; then # elif ls spigot-*.jar 1> /dev/null 2>&1; then
# existing_server_type="spigot" # existing_server_type="spigot"
# elif ls craftbukkit-*.jar 1> /dev/null 2>&1; then # elif ls craftbukkit-*.jar 1> /dev/null 2>&1; then
@ -30,6 +31,30 @@ function get_existing_server {
fi fi
} }
# Get existing version and build of fabric
function get_existing_fabric {
# Get the current server file name
server_file=$(basename ./fabric-server-mc.*.jar)
# Assign the file name to a variable
FILE=$server_file
# Remove the .jar extension
FILE=${FILE%.jar}
# Split by - and get the third field (mc.x.x.x)
current_version=$(echo $FILE | cut -d. -f2,3,4 | cut -d- -f1)
# Split by - and get the fourth field (launcher.x.x.x)
current_build=$(echo $FILE | cut -d- -f4 | cut -d. -f2,3,4)
echo "Current server file: $server_file"
echo " - Version $current_version"
echo " - Build $current_build"
echo
echo
}
# Get existing version and build of paper # Get existing version and build of paper
function get_existing_paper { function get_existing_paper {
# Get the current server file name # Get the current server file name

118
.msman/fabric.sh Normal file

@ -0,0 +1,118 @@
#!/bin/bash
set -e
# API URL
api_url="https://meta.fabricmc.net/v2/versions/"
# Example server's jar file name:
# fabric-server-mc.1.19.3-loader.0.14.14-launcher.0.11.1.jar
function check_version_valid {
if [[ $(curl -s "$(echo $api_url)/loader/$(echo $version)") == "[]" ]]; then
>&2 echo "Error: Invalid version selected: $version"
exit 2
else
# Check if selected build exists
if [ ! -z "$build" ]; then
if [[ $(curl -s "$(echo $api_url)/loader/$(echo $version)/$(echo $build)") == "\"no loader version found for $(echo $version)\"" ]]; then
>&2 echo "Error: Invalid build selected: $build"
exit 2
fi
fi
fi
}
function download_server {
# Download the server
echo "Downloading Fabric server..."
echo " - Version $version"
echo " - Build $download_build"
echo " - Installer $latest_installer"
curl "$(echo $api_url)/loader/$(echo $version)/$(echo $download_build)/$(echo $latest_installer)/server/jar" -o "./fabric-server-mc.$(echo $version)-loader.$(echo $download_build)-launcher.$(echo $latest_installer).jar"
echo "Download complete."
}
function check_updates {
if [[ $server_file == false ]]; then
download_build=$latest_build
update_version=true
update_build=true
return
else
echo Checking for updates...
fi
# Check if $build is empty
if [[ -z $build ]]; then
# Check if the current version is the same as the one selected
if [[ $current_version == $version ]]; then
# Check if the current build is the same as the one selected
if [[ $current_build == $latest_build ]]; then
echo "Server is up to date."
else
echo "Server is not up to date."
download_build=$latest_build
update_build=true
fi
else
# Check if $server_file is false
ask_version_differs
echo "Server is not up to date."
download_build=$latest_build
update_version=true
fi
else
# Check if the current version is the same as the one selected
if [[ $current_version == $version ]]; then
# Check if the current build is the same as the one selected
if [[ $current_build == $build ]]; then
echo "Server is up to date."
else
echo "Server is not up to date."
download_build=$build
update_build=true
fi
else
# Check if $server_file is false
ask_version_differs
echo "Server is not up to date."
download_build=$build
update_version=true
fi
fi
}
# Get the latest build number and installer version
function get_latest_build {
# Get the latest build number
latest_build=$(curl -s "$(echo $api_url)/loader/$version" | jq -r '.[0].loader.version')
latest_installer=$(curl -s "$(echo $api_url)/installer/" | jq -r '.[0].version')
}
# Check if the server is up to date and update if it isn't
function check_and_update {
if ! [[ $server_file == false ]]; then
echo Checking for updates...
fi
# Get the latest build number
get_latest_build
# Check if the current version is up to date
check_updates
# Check if $build_update is true or $version_update is true
if [[ $update_build == true ]] || [[ $update_version == true ]]; then
if [[ $server_file != false ]]; then
old_server_file=$server_file
server_file="fabric-server-mc.$version-loader.$download_build-launcher.$latest_installer.jar"
download_server
# Delete the old server file
delete_old_server
else
server_file="fabric-server-mc.$version-loader.$download_build-launcher.$latest_installer.jar"
download_server
fi
fi
echo
echo
}

@ -86,17 +86,17 @@ function check_script_java {
# Get the system Java version # Get the system Java version
function check_java_exec { function check_java_exec {
# Check if java is installed # Check if java is installed
if ! command -v java &> /dev/null if ! command -v java &> /dev/null; then
then
java_version=false java_version=false
fi else
# If java is installed, get the version (the java_version won't be 0)
if [[ $java_version != false ]]; then
# Get the current Java version and extract the build number # Get the current Java version and extract the build number
java_version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}' | awk -F '.' '{print $1}') java_version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}' | awk -F '.' '{print $1}')
fi fi
if [[ $java_version != $required_java ]]; then
java_version=false
fi
} }
# Get the required Java version for the Minecraft version # Get the required Java version for the Minecraft version
@ -172,11 +172,11 @@ function download_jre {
rm java.tar.gz rm java.tar.gz
elif [[ $required_java == "16" ]]; then elif [[ $required_java == "16" ]]; then
echo "Downloading Java 16" echo "Downloading Java 16"
curl -L -o java.tar.gz "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.18%2B10/OpenJDK11U-jre_$(echo $arch)_linux_hotspot_16.0.2_7.tar.gz" curl -L -o java.tar.gz "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_$(echo $arch)_linux_hotspot_16.0.2_7.tar.gz"
echo "Extracting Java 16" echo "Extracting Java 16"
tar -xzf java.tar.gz tar -xzf java.tar.gz
echo "Moving Java 16 to $(echo $HOME)/.adoptium_java/jre16" echo "Moving Java 16 to $(echo $HOME)/.adoptium_java/jre16"
mv jdk-16.0.2+7-jre "$(echo $HOME)/.adoptium_java/jre16" mv jdk-16.0.2+7 "$(echo $HOME)/.adoptium_java/jre16"
echo "Removing temporary files" echo "Removing temporary files"
rm java.tar.gz rm java.tar.gz
elif [[ $required_java == "17" ]]; then elif [[ $required_java == "17" ]]; then

@ -37,6 +37,9 @@ function check_updates {
download_build=$latest_build download_build=$latest_build
update_version=true update_version=true
update_build=true update_build=true
return
else
echo Checking for updates...
fi fi
# Check if $build is empty # Check if $build is empty

@ -1,3 +1,3 @@
#!/bin/bash #!/bin/bash
EXTRA_SCRIPTS_VERSION="v1.1.6" EXTRA_SCRIPTS_VERSION="v2.1.6"

@ -3,7 +3,7 @@
MAKEFLAGS += -s MAKEFLAGS += -s
all: all:
CURRENT_SCRIPT_VERSION=`grep "CURRENT_SCRIPT_VERSION=" msman.sh | sed -e "s/CURRENT_SCRIPT_VERSION=//g"`; \ CURRENT_SCRIPT_VERSION=`grep "CURRENT_SCRIPT_VERSION=" msman.sh | sed -e "s/CURRENT_SCRIPT_VERSION=//g" | head -n -1`; \
EXTRA_VERSION=`grep "EXTRA_SCRIPTS_VERSION=" .msman/version.sh | sed -e "s/EXTRA_SCRIPTS_VERSION=//g"`; \ EXTRA_VERSION=`grep "EXTRA_SCRIPTS_VERSION=" .msman/version.sh | sed -e "s/EXTRA_SCRIPTS_VERSION=//g"`; \
if [ "$$CURRENT_SCRIPT_VERSION" != "$$EXTRA_VERSION" ]; then \ if [ "$$CURRENT_SCRIPT_VERSION" != "$$EXTRA_VERSION" ]; then \
echo "ERROR: The version in msman.sh and .msman/version.sh are not the same!"; \ echo "ERROR: The version in msman.sh and .msman/version.sh are not the same!"; \
@ -13,7 +13,7 @@ all:
rm -rf msman rm -rf msman
mkdir msman mkdir msman
cp -r .msman msman cp -r .msman msman
tar -czf msman-hepler.tar.gz msman tar -czf msman-helper.tar.gz msman
rm -rf msman rm -rf msman
clean: clean:

@ -8,7 +8,7 @@ branch.
The project grew out of the scope I envisioned at first, surprisingly quickly LOL, The project grew out of the scope I envisioned at first, surprisingly quickly LOL,
so I moved all my development here. so I moved all my development here.
This project aims to support more minecraft servers rather than just paper. This project aims to support more Minecraft servers than just paper.
## Features ## Features
@ -16,7 +16,7 @@ This project aims to support more minecraft servers rather than just paper.
- Checks for the correct Java version installed - Checks for the correct Java version installed
- Enables you to download a download a portable Java version from [Adoptium](https://adoptium.net/) - Enables you to download a download a portable Java version from [Adoptium](https://adoptium.net/)
- The script download's it to `~/.adoptium_java` allowing you to use one - The script downloads it to `~/.adoptium_java` allowing you to use one
Java downlaod across multiple server instances Java downlaod across multiple server instances
- It also allows you to use multiple Java versions allowing you to run - It also allows you to use multiple Java versions allowing you to run
multiple Minecraft servers requiring different Java versions multiple Minecraft servers requiring different Java versions
@ -39,11 +39,12 @@ This project aims to support more minecraft servers rather than just paper.
#### Self-update #### Self-update
- This script can self-update itself without the need for user doing it manually - This script can self-update itself without the need for user intervention
## Currently supported servers ## Currently supported servers
- [Paper](https://papermc.io/) - [Paper](https://papermc.io/)
- [Fabric](https://fabricmc.net/use/server/)
## Dependencies ## Dependencies
@ -65,7 +66,7 @@ you're running something like Ubuntu.*
> undefined behavior and may cause the script to crash or perform unexpected actions. > undefined behavior and may cause the script to crash or perform unexpected actions.
> >
> I strongly advise against making any modifications to the server's `.jar` file > I strongly advise against making any modifications to the server's `.jar` file
> manually, as it may interfere with the proper functioning of this script. > manually, as it may interfere with the functionality of this script.
## Basic setup ## Basic setup

@ -14,7 +14,9 @@
# I am not responsible for any loss of data # # I am not responsible for any loss of data #
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #
# Only paper is currently supported # Supported server types:
# - paper
# - fabric
server_type="paper" server_type="paper"
version="1.19.3" version="1.19.3"
# Leave blank to use the latest build (auto updates on every run) # Leave blank to use the latest build (auto updates on every run)
@ -38,7 +40,7 @@ mem="6000M"
# Flags for the server itself # Flags for the server itself
# Usefull fot setting rcon password, server port, etc. # Usefull fot setting rcon password, server port, etc.
mc_launchoptions="-nogui" mc_launchoptions="nogui"
# If you want to get rid of script updates notifications, set the below to false # If you want to get rid of script updates notifications, set the below to false
check_for_script_updates=true check_for_script_updates=true

@ -8,7 +8,7 @@ set -e
# and acknowledge the original script and author. # # and acknowledge the original script and author. #
############################################################################################################# #############################################################################################################
CURRENT_SCRIPT_VERSION="v1.1.6" CURRENT_SCRIPT_VERSION="v2.1.6"
# -------------------------------------------------- # --------------------------------------------------
# You shouldn't need to change anything in this file # You shouldn't need to change anything in this file
@ -107,7 +107,7 @@ function ask_version_differs {
echo echo
echo echo
echo "The current server version differs from the one you selected." echo "The current server version differs from the one you selected."
echo "The server version is $current_version and the selected version is $select_version." echo "The server version is $current_version and the selected version is $version."
echo "Do you want to update the server version?" echo "Do you want to update the server version?"
echo "This can cause many issues if you don't know what you are doing." echo "This can cause many issues if you don't know what you are doing."
echo echo
@ -132,6 +132,36 @@ function ask_version_differs {
fi fi
} }
# Ask if the new server version differs from the old one
function ask_server_type_differs {
echo
echo
echo "The current server type differs from the one you selected."
echo "The server version is $existing_server_type and the selected type is $server_type."
echo "Do you want to change the server type?"
echo "This can cause many issues if you don't know what you are doing."
echo
echo "I am not responsible for any data loss caused by changing the server type."
echo
echo "You have 15 seconds to respond, or the script will exit"
read -t 15 -p "Do you want to change the server type? [y/N] " type_differs
if [ "$type_differs" != "y" ] && [ "$type_differs" != "Y" ]; then
echo "Server type not changed."
echo "To start the server again with the server type, change the server type in the config to $existing_server_type."
exit 4
fi
if [ "$type_differs" == "y" ] || [ "$type_differs" == "Y" ]; then
read -t 15 -p "Are you sure you want to change the server type? [y/N] " type_differs
if [ "$type_differs" != "y" ] && [ "$type_differs" != "Y" ]; then
echo "Server type not changed."
echo "To start the server again with the server type, change the server type in the config to $existing_server_type."
exit 4
fi
fi
}
# Ask if the new server version differs from the old one # Ask if the new server version differs from the old one
function ask_server_differs { function ask_server_differs {
echo echo
@ -199,7 +229,7 @@ function launch_server {
echo "Starting the server..." echo "Starting the server..."
echo echo
echo echo
java $java_launchoptions -jar "$(basename ./paper-*.jar)" $mc_launchoptions java $java_launchoptions -jar $server_file $mc_launchoptions
} }
# Helper scripts update # Helper scripts update
@ -222,6 +252,7 @@ function helper_scripts_update {
rm msman-helper.tar.gz rm msman-helper.tar.gz
rm -rf msman rm -rf msman
echo "Helper scripts updated successfully." echo "Helper scripts updated successfully."
EXTRA_SCRIPTS_VERSION=$(echo $CURRENT_SCRIPT_VERSION)
echo echo
echo echo
else else
@ -319,7 +350,7 @@ function check_self_update {
read -t 15 -p "Do you want to update? [y/N] " update read -t 15 -p "Do you want to update? [y/N] " update
if [ "$update" == "y" ] || [ "$update" == "Y" ]; then if [ "$update" == "y" ] || [ "$update" == "Y" ]; then
self_update self_update
CURRENT_VERSION=$LATEST_SCRIPT_VERSION CURRENT_SCRIPT_VERSION=$LATEST_SCRIPT_VERSION
check_helper_scripts check_helper_scripts
bash -c "$(pwd)/msman.sh" bash -c "$(pwd)/msman.sh"
else else
@ -377,7 +408,7 @@ function load_config {
# Delete old server file with name $old_server_file # Delete old server file with name $old_server_file
function delete_old_server { function delete_old_server {
# Delete the old server file # Delete the old server file
echo "Deleting old server file $server_file..." echo "Deleting old server file '$server_file...'"
rm "$old_server_file" rm "$old_server_file"
echo "Old server file deleted." echo "Old server file deleted."
} }
@ -392,12 +423,12 @@ function load_script {
# Load the correct script # Load the correct script
if [[ $server_type == "paper" ]]; then if [[ $server_type == "paper" ]]; then
source "./.msman/paper.sh" source "./.msman/paper.sh"
elif [[ $server_type == "fabric" ]]; then
source "./.msman/fabric.sh"
# elif [[ $server_type == "vanilla" ]]; then # elif [[ $server_type == "vanilla" ]]; then
# source "$cwd/msman/vanilla.sh" # source "$cwd/msman/vanilla.sh"
# elif [[ $server_type == "forge" ]]; then # elif [[ $server_type == "forge" ]]; then
# source "$cwd/msman/forge.sh" # source "$cwd/msman/forge.sh"
# elif [[ $server_type == "fabric" ]]; then
# source "$cwd/msman/fabric.sh"
else else
>&2 echo "Unknown server type." >&2 echo "Unknown server type."
echo "Exiting..." echo "Exiting..."
@ -445,6 +476,13 @@ function main {
# Gets the installed server info # Gets the installed server info
get_existing_server get_existing_server
# Check if the server type differs from the one in the config
if [[ $server_file != false ]]; then
if [[ $existing_server_type != $server_type ]]; then
ask_server_differs
fi
fi
# Check if the version and build are valid # Check if the version and build are valid
check_version_valid check_version_valid
@ -460,6 +498,8 @@ function main {
# Check if this is the first run # Check if this is the first run
first_run first_run
# Set the java arguments
set_java_args
# Launch the server # Launch the server
launch_server launch_server
} }
@ -474,7 +514,7 @@ if [[ "$1" == "--edit-config" ]] || [[ "$1" == "-e" ]]; then
exit 0 exit 0
fi fi
elif [[ "$1" == "--help" ]] || [[ "$1" == "-h" ]]; then elif [[ "$1" == "--help" ]] || [[ "$1" == "-h" ]]; then
echo "Usage: ./script.sh [OPTION]" echo "Usage: ./msman.sh [OPTION]"
echo "Starts the Minecraft server." echo "Starts the Minecraft server."
echo echo
echo "Options:" echo "Options:"