-
Notifications
You must be signed in to change notification settings - Fork 0
/
entrypoint.sh
executable file
·106 lines (95 loc) · 2.74 KB
/
entrypoint.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
#!/bin/bash
set -e
# if worlds folder does not exist, create it
if [ ! -d "${DATA_DIR}/worlds" ]
then
mkdir -p "${DATA_DIR}/worlds"
fi
if [ ! "$(ls -A ${SERVER_DIR}/worlds 2>/dev/null)" ]
then
ln -s ${DATA_DIR}/worlds ${SERVER_DIR}/worlds
fi
# If server.properties file doesnt exist generate it
if [ ! -f "${SERVER_DIR}/server.properties" ]
then
echo "Generating server configuration:"
touch ${SERVER_DIR}/server.properties
# Parse all environment variables beginning with MCPROP to generate server.properties
# For each matching line
# - Get property name from beggining to first = sign
# - Remove MCPROP_ from beginning
# - Switch to lowercase
# - Convert _ to -
# - Get property value from everything after first = sign
# Examples
# - MCPROP_ALLOW_CHEATS=true
# allow-cheats=true
for P in ${!MCPROP_@}
do
PROP_VALUE="${!P}"
PROP_NAME="${P#*_}"
PROP_NAME="`echo ${PROP_NAME} | tr '[:upper:]' '[:lower:]'`"
PROP_NAME="`echo ${PROP_NAME} | tr "_" "-"`"
echo "${PROP_NAME}=${PROP_VALUE}" | tee -a ${SERVER_DIR}/server.properties
done
fi
while read -r line
do
PROP_NAME="${line%%=*}"
PROP_VALUE="${line##${PROP_NAME}=}"
PROP_NAME="`echo ${PROP_NAME} | tr '[:lower:]' '[:upper:]'`"
PROP_NAME="`echo ${PROP_NAME} | tr "-" "_"`"
eval "${PROP_NAME}=\"${PROP_VALUE}\""
done < "${SERVER_DIR}/server.properties"
LEVEL_NAME="${LEVEL_NAME:-"Bedrock level"}"
if [ ! -d "${DATA_DIR}/worlds/${LEVEL_NAME}" ]
then
mkdir -p "${DATA_DIR}/worlds/${LEVEL_NAME}"
fi
# Link permission and whilelist
for f in permissions.json allowlist.json
do
if [ ! -f "${SERVER_DIR}/${f}" ]
then
if [ ! -f "${DATA_DIR}/worlds/${LEVEL_NAME}/${f}" ];
then
cp "${SERVER_DIR}/default/${f}" "${DATA_DIR}/worlds/${LEVEL_NAME}/${f}"
fi
ln -s "${DATA_DIR}/worlds/${LEVEL_NAME}/${f}" "${SERVER_DIR}/"
fi
done
# Create Debug_Log
if [ ! -f "${SERVER_DIR}/Debug_Log.txt" ]
then
touch "${SERVER_DIR}/Debug_Log.txt"
fi
# Create valid_known_packs
if [ ! -f "${SERVER_DIR}/valid_known_packs.json" ]
then
if [ ! -f "${DATA_DIR}/worlds/${LEVEL_NAME}/valid_known_packs.json" ];
then
touch "${DATA_DIR}/worlds/${LEVEL_NAME}/valid_known_packs.json"
fi
ln -s "${DATA_DIR}/worlds/${LEVEL_NAME}/valid_known_packs.json" "${SERVER_DIR}/"
fi
# Link directories with defaults
for f in behavior_packs resource_packs
do
# if directory doesn't exist create from minecraft default
if [ ! -d "${SERVER_DIR}/${f}" ]
then
if [ ! -d "${DATA_DIR}/${f}" ]
then
mkdir -p "${DATA_DIR}/${f}"
fi
ln -s "${DATA_DIR}/${f}" "${SERVER_DIR}/${f}"
fi
for d in $(ls "${SERVER_DIR}/default/${f}")
do
if [ ! -d "${DATA_DIR}/${f}/${d}" ]
then
ln -s "${SERVER_DIR}/default/${f}/${d}" "${DATA_DIR}/${f}/${d}"
fi
done
done
exec "$@"