@@ -23,6 +23,20 @@ function replace_version_in_url() {
2323 echo " $modified_url "
2424}
2525
26+ function versionFromExisting() {
27+ # shellcheck disable=SC2012
28+ # since find doesn't support sort by version numbers, -v
29+ if [[ $( ls -rv bedrock_server-* 2> /dev/null| head -1) =~ bedrock_server-(.* ) ]]; then
30+ VERSION=${BASH_REMATCH[1]}
31+ return 0
32+ elif ls bedrock_server 2> /dev/null; then
33+ VERSION=none
34+ return 0
35+ else
36+ return 1
37+ fi
38+ }
39+
2640function lookupVersion() {
2741 platform=${1:? Missing required platform indicator}
2842 customVersion=${2:- }
@@ -74,8 +88,7 @@ function lookupVersion() {
7488 # shellcheck disable=SC2012
7589 if [[ ${DOWNLOAD_URL} =~ http.* /.* -(.* )\. zip ]]; then
7690 VERSION=${BASH_REMATCH[1]}
77- elif [[ $( ls -rv bedrock_server-* 2> /dev/null| head -1) =~ bedrock_server-(.* ) ]]; then
78- VERSION=${BASH_REMATCH[1]}
91+ elif versionFromExisting; then
7992 echo " WARN Minecraft download page failed, so using existing download of $VERSION "
8093 else
8194 echo " Failed to lookup download URL: ${DOWNLOAD_URL} "
@@ -128,6 +141,14 @@ else # Original logic: if DIRECT_DOWNLOAD_URL is NOT set, proceed with lookup
128141 echo " Looking up latest version..."
129142 lookupVersion serverBedrockLinux
130143 ;;
144+ EXISTING)
145+ if versionFromExisting; then
146+ echo " Using existing bedrock server executable"
147+ else
148+ echo " ERROR unable to locate existing bedrock server executable"
149+ exit 1
150+ fi
151+ ;;
131152 * )
132153 # use the given version exactly
133154 if isTrue " $PREVIEW " ; then
@@ -141,7 +162,13 @@ else # Original logic: if DIRECT_DOWNLOAD_URL is NOT set, proceed with lookup
141162 esac
142163fi
143164
144- if [[ ! -f " bedrock_server-${VERSION} " ]]; then
165+ if [[ $VERSION = none ]]; then
166+ SERVER=bedrock_server
167+ else
168+ SERVER=" bedrock_server-${VERSION} "
169+ fi
170+
171+ if [[ ! -f " $SERVER " ]]; then
145172
146173 [[ $DOWNLOAD_DIR != /tmp ]] && mkdir -p " $DOWNLOAD_DIR "
147174 TMP_ZIP=" $DOWNLOAD_DIR /$( basename " ${DOWNLOAD_URL} " ) "
@@ -199,7 +226,7 @@ if [[ ! -f "bedrock_server-${VERSION}" ]]; then
199226 [[ $DOWNLOAD_DIR != /tmp ]] && rm -rf " $DOWNLOAD_DIR "
200227
201228 chmod +x bedrock_server
202- mv bedrock_server " bedrock_server- ${VERSION} "
229+ mv bedrock_server " $SERVER "
203230fi
204231
205232if [[ -n " $OPS " || -n " $MEMBERS " || -n " $VISITORS " ]]; then
283310
284311echo " Starting Bedrock server..."
285312if [[ -f /usr/local/bin/box64 ]] ; then
286- exec mc-server-runner " ${mcServerRunnerArgs[@]} " box64 ./" bedrock_server- ${VERSION} "
313+ exec mc-server-runner " ${mcServerRunnerArgs[@]} " box64 ./" $SERVER "
287314else
288- exec mc-server-runner " ${mcServerRunnerArgs[@]} " ./" bedrock_server- ${VERSION} "
315+ exec mc-server-runner " ${mcServerRunnerArgs[@]} " ./" $SERVER "
289316fi
0 commit comments