forked from itzg/docker-minecraft-bedrock-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
bedrock-entry.sh
executable file
·131 lines (111 loc) · 3.54 KB
/
bedrock-entry.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/bash
set -eo pipefail
if [[ ${DEBUG^^} = TRUE ]]; then
set -x
curlArgs=(-v)
fi
downloadPage=https://www.minecraft.net/en-us/download/server/bedrock/
if [[ ${EULA^^} != TRUE ]]; then
echo
echo "EULA must be set to TRUE to indicate agreement with the Minecraft End User License"
echo "See https://minecraft.net/terms"
echo
echo "Current value is '${EULA}'"
echo
exit 1
fi
case ${VERSION^^} in
1.11)
VERSION=1.11.4.2
;;
1.12)
VERSION=1.12.0.28
;;
1.13)
VERSION=1.13.0.34
;;
1.14|PREVIOUS)
VERSION=1.14.60.5
;;
1.16.1)
VERSION=1.16.1.02
;;
1.16)
VERSION=1.16.20.03
;;
LATEST)
for a in data-bi-prtid data-platform; do
for i in {1..3}; do
DOWNLOAD_URL=$(restify --attribute=${a}=serverBedrockLinux ${downloadPage} 2> restify.err | jq -r '.[0].href' || echo '')
if [[ ${DOWNLOAD_URL} ]]; then
break 2
fi
done
done
if [[ ${DOWNLOAD_URL} =~ http.*/.*-(.*)\.zip ]]; then
VERSION=${BASH_REMATCH[1]}
elif [[ $(ls -rv bedrock_server-* 2> /dev/null|head -1) =~ bedrock_server-(.*) ]]; then
VERSION=${BASH_REMATCH[1]}
echo "WARN Minecraft download page failed, so using existing download of $VERSION"
cat restify.err
else
echo "Failed to extract download URL '${DOWNLOAD_URL}' from ${downloadPage}"
cat restify.err
rm restify.err
exit 2
fi
rm restify.err
;;
*)
# use the given version exactly
;;
esac
if [ ! -f "bedrock_server-${VERSION}" ]; then
if [[ ! ${DOWNLOAD_URL} ]]; then
DOWNLOAD_URL=https://minecraft.azureedge.net/bin-linux/bedrock-server-${VERSION}.zip
fi
TMP_ZIP=/tmp/$(basename "${DOWNLOAD_URL}")
echo "Downloading Bedrock server version ${VERSION} ..."
if ! curl "${curlArgs[@]}" -o ${TMP_ZIP} -fsSL ${DOWNLOAD_URL}; then
echo "ERROR failed to download from ${DOWNLOAD_URL}"
echo " Double check that the given VERSION is valid"
exit 2
fi
# remove only binaries and some docs, to allow for an upgrade of those
rm -rf bedrock_server *.so release-notes.txt bedrock_server_how_to.html valid_known_packs.json premium_cache 2> /dev/null
bkupDir=backup-pre-${VERSION}
for d in behavior_packs definitions minecraftpe resource_packs structures treatments world_templates
do
if [ -d $d ]; then
mkdir -p $bkupDir
echo "Backing up $d into $bkupDir"
mv $d $bkupDir
fi
done
# ... overwrite all game files, except config files
unzip -q ${TMP_ZIP} -x $(ls server.properties whitelist.json permissions.json 2> /dev/null)
rm ${TMP_ZIP}
chmod +x bedrock_server
mv bedrock_server bedrock_server-${VERSION}
fi
if [ -n "$OPS" ] || [ -n "$MEMBERS" ] || [ -n "$VISITORS" ]; then
echo "Updating permissions"
jq -n --arg ops "$OPS" --arg members "$MEMBERS" --arg visitors "$VISITORS" '[
[$ops | split(",") | map({permission: "operator", xuid:.})],
[$members | split(",") | map({permission: "member", xuid:.})],
[$visitors | split(",") | map({permission: "visitor", xuid:.})]
]| flatten' > permissions.json
fi
if [ -n "$WHITE_LIST_USERS" ]; then
echo "Setting whitelist"
rm -rf whitelist.json
jq -n --arg users "$WHITE_LIST_USERS" '$users | split(",") | map({"name": .})' > whitelist.json
# flag whitelist to true so the server properties process correctly
export WHITE_LIST=true
fi
set-property --file server.properties --bulk /etc/bds-property-definitions.json
export LD_LIBRARY_PATH=.
bash /opt/echoStorage.sh
echo "Starting Bedrock server..."
exec ./bedrock_server-${VERSION}
bash /opt/echoStorage.sh