Your Name
commited on
Commit
•
c08e495
1
Parent(s):
855847e
- Dockerfile +63 -0
- LICENSE +21 -0
- bedrock-entry.sh +214 -0
- bin/send-command +17 -0
- build/install-packages +15 -0
- build/setup-arm64 +17 -0
- docs/example-client.jpg +0 -0
- examples/AzureBedrockServer.ps1 +29 -0
- examples/docker-compose.host-mount.yml +18 -0
- examples/docker-compose.yml +18 -0
- examples/kubernetes-backup-to-s3.yaml +77 -0
- examples/kubernetes-restore-to-s3.yaml +90 -0
- examples/kubernetes.yml +114 -0
- property-definitions.json +124 -0
Dockerfile
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FROM debian
|
2 |
+
|
3 |
+
# hook into docker BuildKit --platform support
|
4 |
+
# see https://docs.docker.com/engine/reference/builder/#automatic-platform-args-in-the-global-scope
|
5 |
+
ARG TARGETOS
|
6 |
+
ARG TARGETARCH
|
7 |
+
ARG TARGETVARIANT
|
8 |
+
|
9 |
+
RUN --mount=target=/build,source=build /build/install-packages
|
10 |
+
|
11 |
+
ARG BOX64_PACKAGE=box64
|
12 |
+
RUN --mount=target=/build,source=build BOX64_PACKAGE=$BOX64_PACKAGE /build/setup-arm64
|
13 |
+
|
14 |
+
EXPOSE 19132/udp
|
15 |
+
|
16 |
+
VOLUME ["/data"]
|
17 |
+
|
18 |
+
WORKDIR /data
|
19 |
+
|
20 |
+
ENTRYPOINT ["/usr/local/bin/entrypoint-demoter", "--match", "/data", "--debug", "--stdin-on-term", "stop", "/opt/bedrock-entry.sh"]
|
21 |
+
|
22 |
+
ARG APPS_REV=1
|
23 |
+
ARG GITHUB_BASEURL=https://github.com
|
24 |
+
|
25 |
+
ARG EASY_ADD_VERSION=0.8.2
|
26 |
+
ADD ${GITHUB_BASEURL}/itzg/easy-add/releases/download/${EASY_ADD_VERSION}/easy-add_${TARGETOS}_${TARGETARCH}${TARGETVARIANT} /usr/bin/easy-add
|
27 |
+
RUN chmod +x /usr/bin/easy-add
|
28 |
+
|
29 |
+
ARG ENTRYPOINT_DEMOTER_VERSION=0.4.2
|
30 |
+
RUN easy-add --var version=${ENTRYPOINT_DEMOTER_VERSION} --var app=entrypoint-demoter --file {{.app}} --from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/v{{.version}}/{{.app}}_{{.version}}_linux_${TARGETARCH}.tar.gz
|
31 |
+
|
32 |
+
ARG SET_PROPERTY_VERSION=0.1.1
|
33 |
+
RUN easy-add --var version=${SET_PROPERTY_VERSION} --var app=set-property --file {{.app}} --from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_linux_${TARGETARCH}.tar.gz
|
34 |
+
|
35 |
+
ARG RESTIFY_VERSION=1.7.2
|
36 |
+
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
37 |
+
--var version=${RESTIFY_VERSION} --var app=restify --file {{.app}} \
|
38 |
+
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
39 |
+
|
40 |
+
ARG MC_MONITOR_VERSION=0.12.6
|
41 |
+
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
42 |
+
--var version=${MC_MONITOR_VERSION} --var app=mc-monitor --file {{.app}} \
|
43 |
+
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
44 |
+
|
45 |
+
ARG MC_SERVER_RUNNER_VERSION=1.12.1
|
46 |
+
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
47 |
+
--var version=${MC_SERVER_RUNNER_VERSION} --var app=mc-server-runner --file {{.app}} \
|
48 |
+
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
49 |
+
|
50 |
+
COPY *.sh /opt/
|
51 |
+
|
52 |
+
COPY property-definitions.json /etc/bds-property-definitions.json
|
53 |
+
COPY bin/* /usr/local/bin/
|
54 |
+
|
55 |
+
# Available versions listed at
|
56 |
+
# https://minecraft.wiki/w/Bedrock_Edition_1.11.0
|
57 |
+
# https://minecraft.wiki/w/Bedrock_Edition_1.12.0
|
58 |
+
# https://minecraft.wiki/w/Bedrock_Edition_1.13.0
|
59 |
+
# https://minecraft.wiki/w/Bedrock_Edition_1.14.0
|
60 |
+
ENV VERSION=LATEST \
|
61 |
+
SERVER_PORT=19132
|
62 |
+
|
63 |
+
HEALTHCHECK --start-period=1m CMD /usr/local/bin/mc-monitor status-bedrock --host 127.0.0.1 --port $SERVER_PORT
|
LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
MIT License
|
2 |
+
|
3 |
+
Copyright (c) 2019 Geoff Bourne
|
4 |
+
|
5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 |
+
of this software and associated documentation files (the "Software"), to deal
|
7 |
+
in the Software without restriction, including without limitation the rights
|
8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9 |
+
copies of the Software, and to permit persons to whom the Software is
|
10 |
+
furnished to do so, subject to the following conditions:
|
11 |
+
|
12 |
+
The above copyright notice and this permission notice shall be included in all
|
13 |
+
copies or substantial portions of the Software.
|
14 |
+
|
15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21 |
+
SOFTWARE.
|
bedrock-entry.sh
ADDED
@@ -0,0 +1,214 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/bash
|
2 |
+
|
3 |
+
set -eo pipefail
|
4 |
+
|
5 |
+
: "${TMP_DIR:=/tmp}"
|
6 |
+
: "${PREVIEW:=false}"
|
7 |
+
|
8 |
+
function isTrue() {
|
9 |
+
[[ "${1,,}" =~ ^(true|on|1)$ ]] && return 0
|
10 |
+
return 1
|
11 |
+
}
|
12 |
+
|
13 |
+
function lookupVersion() {
|
14 |
+
platform=${1:?Missing required platform indicator}
|
15 |
+
|
16 |
+
# shellcheck disable=SC2034
|
17 |
+
for i in {1..3}; do
|
18 |
+
DOWNLOAD_URL=$(restify --user-agent=itzg/minecraft-bedrock-server --headers "accept-language:*" --attribute=data-platform="${platform}" "${downloadPage}" 2> restify.err | jq -r '.[0].href' || echo '')
|
19 |
+
[[ -n "${DOWNLOAD_URL}" ]] && break
|
20 |
+
sleep 1
|
21 |
+
done
|
22 |
+
if [[ -z ${DOWNLOAD_URL} ]]; then
|
23 |
+
DOWNLOAD_URL=$(curl -s https://mc-bds-helper.vercel.app/api/latest)
|
24 |
+
fi
|
25 |
+
|
26 |
+
# shellcheck disable=SC2012
|
27 |
+
if [[ ${DOWNLOAD_URL} =~ http.*/.*-(.*)\.zip ]]; then
|
28 |
+
VERSION=${BASH_REMATCH[1]}
|
29 |
+
elif [[ $(ls -rv bedrock_server-* 2> /dev/null|head -1) =~ bedrock_server-(.*) ]]; then
|
30 |
+
VERSION=${BASH_REMATCH[1]}
|
31 |
+
echo "WARN Minecraft download page failed, so using existing download of $VERSION"
|
32 |
+
cat restify.err
|
33 |
+
else
|
34 |
+
if [[ -f restify.err ]]; then
|
35 |
+
echo "Failed to extract download URL '${DOWNLOAD_URL}' from ${downloadPage}"
|
36 |
+
cat restify.err
|
37 |
+
rm restify.err
|
38 |
+
else
|
39 |
+
echo "Failed to lookup download URL: ${DOWNLOAD_URL}"
|
40 |
+
fi
|
41 |
+
exit 2
|
42 |
+
fi
|
43 |
+
rm -f restify.err
|
44 |
+
}
|
45 |
+
|
46 |
+
if [[ ${DEBUG^^} == TRUE ]]; then
|
47 |
+
set -x
|
48 |
+
curlArgs=(-v)
|
49 |
+
echo "DEBUG: running as $(id -a) with $(ls -ld /data)"
|
50 |
+
echo " current directory is $(pwd)"
|
51 |
+
fi
|
52 |
+
|
53 |
+
export HOME=/data
|
54 |
+
|
55 |
+
downloadPage=https://www.minecraft.net/en-us/download/server/bedrock
|
56 |
+
|
57 |
+
if [[ ${EULA^^} != TRUE ]]; then
|
58 |
+
echo
|
59 |
+
echo "EULA must be set to TRUE to indicate agreement with the Minecraft End User License"
|
60 |
+
echo "See https://minecraft.net/terms"
|
61 |
+
echo
|
62 |
+
echo "Current value is '${EULA}'"
|
63 |
+
echo
|
64 |
+
exit 1
|
65 |
+
fi
|
66 |
+
|
67 |
+
case ${VERSION^^} in
|
68 |
+
1.12)
|
69 |
+
VERSION=1.12.0.28
|
70 |
+
;;
|
71 |
+
1.13)
|
72 |
+
VERSION=1.13.0.34
|
73 |
+
;;
|
74 |
+
1.14)
|
75 |
+
VERSION=1.14.60.5
|
76 |
+
;;
|
77 |
+
1.16)
|
78 |
+
VERSION=1.16.20.03
|
79 |
+
;;
|
80 |
+
1.17)
|
81 |
+
VERSION=1.17.41.01
|
82 |
+
;;
|
83 |
+
1.17.41)
|
84 |
+
VERSION=1.17.41.01
|
85 |
+
;;
|
86 |
+
1.18|PREVIOUS)
|
87 |
+
VERSION=1.18.33.02
|
88 |
+
;;
|
89 |
+
PREVIEW)
|
90 |
+
echo "Looking up latest preview version..."
|
91 |
+
lookupVersion serverBedrockPreviewLinux
|
92 |
+
;;
|
93 |
+
LATEST)
|
94 |
+
echo "Looking up latest version..."
|
95 |
+
lookupVersion serverBedrockLinux
|
96 |
+
;;
|
97 |
+
*)
|
98 |
+
# use the given version exactly
|
99 |
+
;;
|
100 |
+
esac
|
101 |
+
|
102 |
+
if [[ ! -f "bedrock_server-${VERSION}" ]]; then
|
103 |
+
|
104 |
+
if [[ -z "${DOWNLOAD_URL}" ]]; then
|
105 |
+
binPath=bin-linux
|
106 |
+
isTrue "${PREVIEW}" && binPath+="-preview"
|
107 |
+
DOWNLOAD_URL="https://minecraft.azureedge.net/${binPath}/bedrock-server-${VERSION}.zip"
|
108 |
+
fi
|
109 |
+
|
110 |
+
[[ $TMP_DIR != /tmp ]] && mkdir -p "$TMP_DIR"
|
111 |
+
TMP_ZIP="$TMP_DIR/$(basename "${DOWNLOAD_URL}")"
|
112 |
+
|
113 |
+
echo "Downloading Bedrock server version ${VERSION} ..."
|
114 |
+
if ! curl "${curlArgs[@]}" -o "${TMP_ZIP}" -fsSL "${DOWNLOAD_URL}"; then
|
115 |
+
echo "ERROR failed to download from ${DOWNLOAD_URL}"
|
116 |
+
echo " Double check that the given VERSION is valid"
|
117 |
+
exit 2
|
118 |
+
fi
|
119 |
+
|
120 |
+
# remove only binaries and some docs, to allow for an upgrade of those
|
121 |
+
rm -rf -- bedrock_server bedrock_server-* *.so release-notes.txt bedrock_server_how_to.html valid_known_packs.json premium_cache 2> /dev/null
|
122 |
+
|
123 |
+
bkupDir=backup-pre-${VERSION}
|
124 |
+
# fixup any previous interrupted upgrades
|
125 |
+
rm -rf "${bkupDir}"
|
126 |
+
for d in behavior_packs definitions minecraftpe resource_packs structures treatments world_templates; do
|
127 |
+
if [[ -d $d && -n "$(ls $d)" ]]; then
|
128 |
+
mkdir -p "${bkupDir}/$d"
|
129 |
+
echo "Backing up $d into $bkupDir"
|
130 |
+
if [[ "$d" == "resource_packs" ]]; then
|
131 |
+
mv $d/{chemistry,vanilla} "${bkupDir}/"
|
132 |
+
[[ -n "$(ls $d)" ]] && cp -a $d/* "${bkupDir}/"
|
133 |
+
else
|
134 |
+
mv $d/* "${bkupDir}/"
|
135 |
+
fi
|
136 |
+
fi
|
137 |
+
done
|
138 |
+
|
139 |
+
# remove old package backups, but keep PACKAGE_BACKUP_KEEP
|
140 |
+
if (( ${PACKAGE_BACKUP_KEEP:=2} >= 0 )); then
|
141 |
+
shopt -s nullglob
|
142 |
+
# shellcheck disable=SC2012
|
143 |
+
for d in $( ls -td1 backup-pre-* | tail +$(( PACKAGE_BACKUP_KEEP + 1 )) ); do
|
144 |
+
echo "Pruning backup directory: $d"
|
145 |
+
rm -rf "$d"
|
146 |
+
done
|
147 |
+
fi
|
148 |
+
|
149 |
+
# Do not overwrite existing files, which means the cleanup above needs to account for things
|
150 |
+
# that MUST be replaced on upgrade
|
151 |
+
unzip -q -n "${TMP_ZIP}"
|
152 |
+
[[ $TMP_DIR != /tmp ]] && rm -rf "$TMP_DIR"
|
153 |
+
|
154 |
+
chmod +x bedrock_server
|
155 |
+
mv bedrock_server "bedrock_server-${VERSION}"
|
156 |
+
fi
|
157 |
+
|
158 |
+
if [[ -n "$OPS" || -n "$MEMBERS" || -n "$VISITORS" ]]; then
|
159 |
+
echo "Updating permissions"
|
160 |
+
jq -n --arg ops "$OPS" --arg members "$MEMBERS" --arg visitors "$VISITORS" '[
|
161 |
+
[$ops | split(",") | map({permission: "operator", xuid:.})],
|
162 |
+
[$members | split(",") | map({permission: "member", xuid:.})],
|
163 |
+
[$visitors | split(",") | map({permission: "visitor", xuid:.})]
|
164 |
+
]| flatten' > permissions.json
|
165 |
+
fi
|
166 |
+
|
167 |
+
if [[ -n "$ALLOW_LIST_USERS" || -n "$WHITE_LIST_USERS" ]]; then
|
168 |
+
allowListUsers=${ALLOW_LIST_USERS:-$WHITE_LIST_USERS}
|
169 |
+
|
170 |
+
if [[ "$allowListUsers" ]]; then
|
171 |
+
echo "Setting allow list"
|
172 |
+
if [[ "$allowListUsers" != *":"* ]]; then
|
173 |
+
jq -c -n --arg users "$allowListUsers" '$users | split(",") | map({"ignoresPlayerLimit":false,"name": .})' > "allowlist.json"
|
174 |
+
else
|
175 |
+
jq -c -n --arg users "$allowListUsers" '$users | split(",") | map(split(":") | {"ignoresPlayerLimit":false,"name": .[0], "xuid": .[1]})' > "allowlist.json"
|
176 |
+
fi
|
177 |
+
# activate server property to enable list usage
|
178 |
+
ALLOW_LIST=true
|
179 |
+
else
|
180 |
+
ALLOW_LIST=false
|
181 |
+
rm -f allowlist.json
|
182 |
+
fi
|
183 |
+
fi
|
184 |
+
|
185 |
+
# prevent issue with bind mounted server.properties which can not be moved (sed tries to move the file when '-i' is used)
|
186 |
+
_SERVER_PROPERTIES=$(sed '/^white-list=.*/d' server.properties) #Removes white-list= line from server.properties
|
187 |
+
echo "${_SERVER_PROPERTIES}" > server.properties
|
188 |
+
export ALLOW_LIST
|
189 |
+
|
190 |
+
# update server.properties with environment settings
|
191 |
+
set-property --file server.properties --bulk /etc/bds-property-definitions.json
|
192 |
+
|
193 |
+
export LD_LIBRARY_PATH=.
|
194 |
+
|
195 |
+
mcServerRunnerArgs=()
|
196 |
+
if isTrue "${ENABLE_SSH}"; then
|
197 |
+
mcServerRunnerArgs+=(--remote-console)
|
198 |
+
if ! [[ -v RCON_PASSWORD ]]; then
|
199 |
+
RCON_PASSWORD=$(openssl rand -hex 12)
|
200 |
+
export RCON_PASSWORD
|
201 |
+
fi
|
202 |
+
|
203 |
+
# For ssh access by tools, export the current password.
|
204 |
+
# Use rcon's format to align with Java, as Java uses the rcon password for SSH as well.
|
205 |
+
echo "password=${RCON_PASSWORD}" > "$HOME/.remote-console.env"
|
206 |
+
echo "password: \"${RCON_PASSWORD}\"" > "$HOME/.remote-console.yaml"
|
207 |
+
fi
|
208 |
+
|
209 |
+
echo "Starting Bedrock server..."
|
210 |
+
if [[ -f /usr/local/bin/box64 ]] ; then
|
211 |
+
exec mc-server-runner "${mcServerRunnerArgs[@]}" box64 ./"bedrock_server-${VERSION}"
|
212 |
+
else
|
213 |
+
exec mc-server-runner "${mcServerRunnerArgs[@]}" ./"bedrock_server-${VERSION}"
|
214 |
+
fi
|
bin/send-command
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/bash
|
2 |
+
|
3 |
+
if [[ $* ]]; then
|
4 |
+
# On arm64, the process exe is actually box64 since it in turn wraps the bedrock_server executable
|
5 |
+
if proc=$(find /proc -mindepth 2 -maxdepth 2 -name exe \( -lname '/data/bedrock_server-*' -o -lname /usr/local/bin/box64 \) -printf '%h' -quit); then
|
6 |
+
if [[ $proc ]]; then
|
7 |
+
echo "$@" > "$proc/fd/0"
|
8 |
+
else
|
9 |
+
echo "ERROR: unable to find bedrock server process"
|
10 |
+
exit 2
|
11 |
+
fi
|
12 |
+
else
|
13 |
+
echo "ERROR: failed to search for bedrock server process"
|
14 |
+
exit 2
|
15 |
+
fi
|
16 |
+
fi
|
17 |
+
|
build/install-packages
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/sh
|
2 |
+
|
3 |
+
set -eu
|
4 |
+
|
5 |
+
apt-get update
|
6 |
+
|
7 |
+
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
8 |
+
curl \
|
9 |
+
openssl \
|
10 |
+
unzip \
|
11 |
+
jq
|
12 |
+
|
13 |
+
apt-get clean
|
14 |
+
|
15 |
+
rm -rf /var/lib/apt/lists/*
|
build/setup-arm64
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/sh
|
2 |
+
|
3 |
+
set -eu
|
4 |
+
|
5 |
+
if [ "$TARGETARCH" = "arm64" ] ; then
|
6 |
+
apt-get update
|
7 |
+
DEBIAN_FRONTEND=noninteractive apt-get install -y debian-keyring
|
8 |
+
|
9 |
+
curl -L https://ryanfortner.github.io/box64-debs/box64.list -o /etc/apt/sources.list.d/box64.list
|
10 |
+
curl -L https://ryanfortner.github.io/box64-debs/KEY.gpg | gpg --dearmor | tee /etc/apt/trusted.gpg.d/box64-debs-archive-keyring.gpg
|
11 |
+
|
12 |
+
apt-get update
|
13 |
+
DEBIAN_FRONTEND=noninteractive apt-get install -y "$BOX64_PACKAGE"
|
14 |
+
|
15 |
+
apt-get clean
|
16 |
+
rm -rf /var/lib/apt/lists/*
|
17 |
+
fi
|
docs/example-client.jpg
ADDED
![]() |
examples/AzureBedrockServer.ps1
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#you need the Azure cli https://docs.microsoft.com/es-es/cli/azure/
|
2 |
+
|
3 |
+
#Login to Azure portal
|
4 |
+
az login
|
5 |
+
|
6 |
+
#defaults to southcentralus but you can change it to one of the following list locations
|
7 |
+
#az account list-locations --query "[].{Region:name}" --out table
|
8 |
+
|
9 |
+
#create a new resource group "mineResGroup"
|
10 |
+
az group create --name mineResGroup --location southcentralus
|
11 |
+
|
12 |
+
#put the storage account "acismineacc" into that group
|
13 |
+
az storage account create --resource-group mineResGroup --name acismineacc --location southcentralus --sku Standard_LRS --kind StorageV2
|
14 |
+
|
15 |
+
#create the volume share "acismineshare" into the storage account
|
16 |
+
az storage share create --name acismineshare --account-name acismineacc
|
17 |
+
|
18 |
+
#obtain the key from the account "acismineacc" in the resource group "mineResGroup"
|
19 |
+
$STORAGE_KEY=$(az storage account keys list --resource-group mineResGroup --account-name acismineacc --query "[0].value" --output tsv)
|
20 |
+
echo $STORAGE_KEY
|
21 |
+
|
22 |
+
#to actually create the minecraft server int the dns name "minesvrbedrock"
|
23 |
+
#the server will be running into server "minesvrbedrock.southcentralus.azurecontainer.io" port "19132", this take some time be patient.
|
24 |
+
az container create --resource-group mineResGroup --name minecotainer --image itzg/minecraft-bedrock-server --dns-name-label minesvrbedrock --ports 19132 19133 --protocol udp --restart-policy OnFailure --environment-variables EULA=TRUE --azure-file-volume-account-name acismineacc --azure-file-volume-account-key $STORAGE_KEY --azure-file-volume-share-name acismineshare --azure-file-volume-mount-path /data
|
25 |
+
|
26 |
+
#connect to fileshare drive "M" to edit server.properties and everything else
|
27 |
+
#you need to restart the container after each change.
|
28 |
+
cmd.exe /C "cmdkey /add:`"acismineacc.file.core.windows.net`" /user:`"Azure\acismineacc`" /pass:`"$STORAGE_KEY`""
|
29 |
+
New-PSDrive -Name M -PSProvider FileSystem -Root "\\acismineacc.file.core.windows.net\acismineshare" -Persist
|
examples/docker-compose.host-mount.yml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# This example uses a host mounted directory that is created/used relative to this
|
2 |
+
# location of this compose file.
|
3 |
+
|
4 |
+
version: '3.4'
|
5 |
+
|
6 |
+
services:
|
7 |
+
bds:
|
8 |
+
image: itzg/minecraft-bedrock-server
|
9 |
+
environment:
|
10 |
+
EULA: "TRUE"
|
11 |
+
GAMEMODE: survival
|
12 |
+
DIFFICULTY: normal
|
13 |
+
ports:
|
14 |
+
- 19132:19132/udp
|
15 |
+
volumes:
|
16 |
+
- ./data:/data
|
17 |
+
stdin_open: true
|
18 |
+
tty: true
|
examples/docker-compose.yml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
version: '3.4'
|
2 |
+
|
3 |
+
services:
|
4 |
+
bds:
|
5 |
+
image: itzg/minecraft-bedrock-server
|
6 |
+
environment:
|
7 |
+
EULA: "TRUE"
|
8 |
+
GAMEMODE: survival
|
9 |
+
DIFFICULTY: normal
|
10 |
+
ports:
|
11 |
+
- "19132:19132/udp"
|
12 |
+
volumes:
|
13 |
+
- bds:/data
|
14 |
+
stdin_open: true
|
15 |
+
tty: true
|
16 |
+
|
17 |
+
volumes:
|
18 |
+
bds: {}
|
examples/kubernetes-backup-to-s3.yaml
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# WARNING: This does not currently account for the potential of the world being saved in
|
2 |
+
# the middle of a change to the files on disk. The only protection is choosing a time
|
3 |
+
# for backups that is unlikely to be in use.
|
4 |
+
#
|
5 |
+
# NOTE: The save command may be a way around this and is under investigation:
|
6 |
+
# https://minecraft.wiki/w/Commands/save
|
7 |
+
|
8 |
+
---
|
9 |
+
apiVersion: v1
|
10 |
+
kind: ConfigMap
|
11 |
+
metadata:
|
12 |
+
name: backup-to-s3-bedrock
|
13 |
+
labels:
|
14 |
+
role: backup
|
15 |
+
data:
|
16 |
+
# https://github.com/flickerfly/docker-backup-to-s3/blob/master/README.md
|
17 |
+
CRON_SCHEDULE: '0 12 * * *'
|
18 |
+
S3_PATH: s3://mybucket/bedrock/
|
19 |
+
AWS_DEFAULT_REGION: us-east-1
|
20 |
+
# Pass this to the S3 command
|
21 |
+
PARAMS: ""
|
22 |
+
PREFIX: bedrock
|
23 |
+
DATA_PATH: /data/
|
24 |
+
|
25 |
+
---
|
26 |
+
apiVersion: v1
|
27 |
+
kind: Secret
|
28 |
+
metadata:
|
29 |
+
name: backup-to-s3-bedrock
|
30 |
+
labels:
|
31 |
+
role: backup
|
32 |
+
data:
|
33 |
+
# https://github.com/flickerfly/docker-backup-to-s3/blob/master/README.md
|
34 |
+
AES_PASSPHRASE: BASE64-ENCODED STRING
|
35 |
+
AWS_ACCESS_KEY_ID: BASE64-ENCODED STRING
|
36 |
+
AWS_SECRET_ACCESS_KEY: BASE64-ENCODED STRING
|
37 |
+
|
38 |
+
---
|
39 |
+
# Setup the Deployment of a pod that will do the work.
|
40 |
+
apiVersion: apps/v1
|
41 |
+
kind: Deployment
|
42 |
+
metadata:
|
43 |
+
name: bds-backup
|
44 |
+
labels:
|
45 |
+
role: backup
|
46 |
+
app: bedrock
|
47 |
+
spec:
|
48 |
+
replicas: 1
|
49 |
+
revisionHistoryLimit: 2
|
50 |
+
selector:
|
51 |
+
matchLabels:
|
52 |
+
role: backup
|
53 |
+
app: bedrock
|
54 |
+
template:
|
55 |
+
metadata:
|
56 |
+
labels:
|
57 |
+
app: bedrock
|
58 |
+
role: backup
|
59 |
+
spec:
|
60 |
+
containers:
|
61 |
+
- name: backup-to-s3
|
62 |
+
image: jritchie/backup-to-s3
|
63 |
+
args:
|
64 |
+
- schedule
|
65 |
+
volumeMounts:
|
66 |
+
- name: bds
|
67 |
+
mountPath: /data
|
68 |
+
envFrom:
|
69 |
+
- configMapRef:
|
70 |
+
name: backup-to-s3-bedrock
|
71 |
+
- secretRef:
|
72 |
+
name: backup-to-s3-bedrock
|
73 |
+
volumes:
|
74 |
+
- name: bds
|
75 |
+
persistentVolumeClaim:
|
76 |
+
claimName: bds
|
77 |
+
readOnly: true
|
examples/kubernetes-restore-to-s3.yaml
ADDED
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# IMPORTANT: Be sure to set the VERSION variable in the Job definition
|
2 |
+
# with the name of the backup file to be restored in S3
|
3 |
+
#
|
4 |
+
# WARNING: It is best practice to scale down your minecraft deployment
|
5 |
+
# to assure you have no server pods running before a restore. This is
|
6 |
+
# currenly a manual task.
|
7 |
+
|
8 |
+
---
|
9 |
+
apiVersion: v1
|
10 |
+
kind: Namespace
|
11 |
+
metadata:
|
12 |
+
name: minecraft
|
13 |
+
---
|
14 |
+
kind: PersistentVolumeClaim
|
15 |
+
apiVersion: v1
|
16 |
+
metadata:
|
17 |
+
name: bds
|
18 |
+
namespace: minecraft
|
19 |
+
spec:
|
20 |
+
accessModes:
|
21 |
+
- ReadWriteOnce
|
22 |
+
resources:
|
23 |
+
requests:
|
24 |
+
storage: 1Gi
|
25 |
+
---
|
26 |
+
apiVersion: v1
|
27 |
+
kind: ConfigMap
|
28 |
+
metadata:
|
29 |
+
name: backup-to-s3-bedrock
|
30 |
+
namespace: minecraft
|
31 |
+
labels:
|
32 |
+
role: backup
|
33 |
+
data:
|
34 |
+
# https://github.com/flickerfly/docker-backup-to-s3/blob/master/README.md
|
35 |
+
CRON_SCHEDULE: '0 12 * * *'
|
36 |
+
S3_PATH: s3://mybucket/bedrock
|
37 |
+
AWS_DEFAULT_REGION: us-east-1
|
38 |
+
# Pass this to the S3 command
|
39 |
+
PARAMS: ""
|
40 |
+
PREFIX: bedrock
|
41 |
+
DATA_PATH: /data/
|
42 |
+
|
43 |
+
---
|
44 |
+
apiVersion: v1
|
45 |
+
kind: Secret
|
46 |
+
metadata:
|
47 |
+
name: backup-to-s3-bedrock
|
48 |
+
namespace: minecraft
|
49 |
+
labels:
|
50 |
+
role: backup
|
51 |
+
data:
|
52 |
+
# https://github.com/flickerfly/docker-backup-to-s3/blob/master/README.md
|
53 |
+
AES_PASSPHRASE: BASE64-ENCODED STRING
|
54 |
+
AWS_ACCESS_KEY_ID: BASE64-ENCODED STRING
|
55 |
+
AWS_SECRET_ACCESS_KEY: BASE64-ENCODED STRING
|
56 |
+
|
57 |
+
---
|
58 |
+
# Setup the jod to create a pod that will do the work.
|
59 |
+
apiVersion: batch/v1
|
60 |
+
kind: Job
|
61 |
+
metadata:
|
62 |
+
name: bds-restore
|
63 |
+
namespace: minecraft
|
64 |
+
labels:
|
65 |
+
role: restore
|
66 |
+
app: bedrock
|
67 |
+
spec:
|
68 |
+
template:
|
69 |
+
spec:
|
70 |
+
containers:
|
71 |
+
- name: restore-from-s3
|
72 |
+
image: jritchie/backup-to-s3
|
73 |
+
args:
|
74 |
+
- restore
|
75 |
+
volumeMounts:
|
76 |
+
- name: bds
|
77 |
+
mountPath: /data
|
78 |
+
envFrom:
|
79 |
+
- configMapRef:
|
80 |
+
name: backup-to-s3-bedrock
|
81 |
+
- secretRef:
|
82 |
+
name: backup-to-s3-bedrock
|
83 |
+
env:
|
84 |
+
- name: VERSION
|
85 |
+
value: bedrck-3020-05-28T15:33:49Z-example
|
86 |
+
restartPolicy: Never
|
87 |
+
volumes:
|
88 |
+
- name: bds
|
89 |
+
persistentVolumeClaim:
|
90 |
+
claimName: bds
|
examples/kubernetes.yml
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
apiVersion: v1
|
3 |
+
kind: ConfigMap
|
4 |
+
metadata:
|
5 |
+
name: minecraft-bedrock
|
6 |
+
labels:
|
7 |
+
role: service-config
|
8 |
+
app: bds
|
9 |
+
data:
|
10 |
+
# Find more options at https://github.com/itzg/docker-minecraft-bedrock-server#server-properties
|
11 |
+
# Remove # from in front of line if changing from default values.
|
12 |
+
EULA: "TRUE" # Must accept EULA to use this minecraft server
|
13 |
+
#GAMEMODE: "survival" # Options: survival, creative, adventure
|
14 |
+
#DIFFICULTY: "easy" # Options: peaceful, easy, normal, hard
|
15 |
+
#DEFAULT_PLAYER_PERMISSION_LEVEL: "member" # Options: visitor, member, operator
|
16 |
+
#LEVEL_NAME: "my_minecraft_world"
|
17 |
+
#LEVEL_SEED: "33480944"
|
18 |
+
#SERVER_NAME: "my_minecraft_server"
|
19 |
+
#SERVER_PORT: "19132"
|
20 |
+
#LEVEL_TYPE: "DEFAULT" # Options: FLAT, LEGACY, DEFAULT
|
21 |
+
#ALLOW_CHEATS: "false" # Options: true, false
|
22 |
+
#MAX_PLAYERS: "10"
|
23 |
+
#PLAYER_IDLE_TIMEOUT: "30"
|
24 |
+
#TEXTUREPACK_REQUIRED: "false" # Options: true, false
|
25 |
+
#
|
26 |
+
## Changing these will have a security impact
|
27 |
+
#ONLINE_MODE: "true" # Options: true, false (removes Xbox Live account requirements)
|
28 |
+
#WHITE_LIST: "false" # If enabled, need to provide a whitelist.json by your own means.
|
29 |
+
#
|
30 |
+
## Changing these will have a performance impact
|
31 |
+
#VIEW_DISTANCE: "10"
|
32 |
+
#TICK_DISTANCE: "4"
|
33 |
+
#MAX_THREADS: "8"
|
34 |
+
---
|
35 |
+
kind: PersistentVolumeClaim
|
36 |
+
apiVersion: v1
|
37 |
+
metadata:
|
38 |
+
name: bds
|
39 |
+
spec:
|
40 |
+
accessModes:
|
41 |
+
- ReadWriteOnce
|
42 |
+
resources:
|
43 |
+
requests:
|
44 |
+
storage: 1Gi
|
45 |
+
---
|
46 |
+
apiVersion: apps/v1
|
47 |
+
kind: StatefulSet
|
48 |
+
metadata:
|
49 |
+
labels:
|
50 |
+
app: bds
|
51 |
+
name: bds
|
52 |
+
spec:
|
53 |
+
# never more than 1 since BDS is not horizontally scalable
|
54 |
+
replicas: 1
|
55 |
+
serviceName: bds
|
56 |
+
selector:
|
57 |
+
matchLabels:
|
58 |
+
app: bds
|
59 |
+
template:
|
60 |
+
metadata:
|
61 |
+
labels:
|
62 |
+
app: bds
|
63 |
+
spec:
|
64 |
+
containers:
|
65 |
+
- name: main
|
66 |
+
image: itzg/minecraft-bedrock-server
|
67 |
+
imagePullPolicy: Always
|
68 |
+
envFrom:
|
69 |
+
- configMapRef:
|
70 |
+
name: minecraft-bedrock
|
71 |
+
volumeMounts:
|
72 |
+
- mountPath: /data
|
73 |
+
name: data
|
74 |
+
ports:
|
75 |
+
- containerPort: 19132
|
76 |
+
protocol: UDP
|
77 |
+
readinessProbe: &probe
|
78 |
+
exec:
|
79 |
+
command:
|
80 |
+
- mc-monitor
|
81 |
+
- status-bedrock
|
82 |
+
- --host
|
83 |
+
# force health check against IPv4 port
|
84 |
+
- 127.0.0.1
|
85 |
+
initialDelaySeconds: 30
|
86 |
+
livenessProbe: *probe
|
87 |
+
tty: true
|
88 |
+
stdin: true
|
89 |
+
volumeClaimTemplates:
|
90 |
+
- metadata:
|
91 |
+
name: data
|
92 |
+
spec:
|
93 |
+
accessModes:
|
94 |
+
- ReadWriteOnce
|
95 |
+
resources:
|
96 |
+
requests:
|
97 |
+
storage: 1Gi
|
98 |
+
---
|
99 |
+
apiVersion: v1
|
100 |
+
kind: Service
|
101 |
+
metadata:
|
102 |
+
name: bds
|
103 |
+
spec:
|
104 |
+
selector:
|
105 |
+
app: bds
|
106 |
+
ports:
|
107 |
+
- port: 19132
|
108 |
+
protocol: UDP
|
109 |
+
ipFamily: IPv4
|
110 |
+
# Use LoadBalancer if running on a provider that supports that
|
111 |
+
# type: LoadBalancer
|
112 |
+
# or use NodePort on a non-managed system;
|
113 |
+
# however, you'll need to lookup port assigned to the service
|
114 |
+
type: NodePort
|
property-definitions.json
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"server-name": {
|
3 |
+
"env": "SERVER_NAME"
|
4 |
+
},
|
5 |
+
"server-port": {
|
6 |
+
"env": "SERVER_PORT"
|
7 |
+
},
|
8 |
+
"server-portv6": {
|
9 |
+
"env": "SERVER_PORT_V6"
|
10 |
+
},
|
11 |
+
"gamemode": {
|
12 |
+
"env": "GAMEMODE",
|
13 |
+
"allowed": ["survival","creative","adventure"],
|
14 |
+
"mappings": {
|
15 |
+
"0": "survival",
|
16 |
+
"1": "creative",
|
17 |
+
"2": "adventure"
|
18 |
+
}
|
19 |
+
},
|
20 |
+
"force-gamemode": {
|
21 |
+
"env": "FORCE_GAMEMODE",
|
22 |
+
"allowed": ["true","false"]
|
23 |
+
},
|
24 |
+
"difficulty": {
|
25 |
+
"env": "DIFFICULTY",
|
26 |
+
"allowed": ["easy","peaceful","normal","hard"],
|
27 |
+
"mappings": {
|
28 |
+
"0": "peaceful",
|
29 |
+
"1": "easy",
|
30 |
+
"2": "normal",
|
31 |
+
"3": "hard"
|
32 |
+
}
|
33 |
+
},
|
34 |
+
"level-type": {
|
35 |
+
"env": "LEVEL_TYPE",
|
36 |
+
"allowed": ["DEFAULT","FLAT","LEGACY"],
|
37 |
+
"mappings": {
|
38 |
+
"flat": "FLAT",
|
39 |
+
"legacy": "LEGACY",
|
40 |
+
"default": "DEFAULT"
|
41 |
+
}
|
42 |
+
},
|
43 |
+
"allow-cheats": {
|
44 |
+
"env": "ALLOW_CHEATS",
|
45 |
+
"allowed": ["true","false"]
|
46 |
+
},
|
47 |
+
"max-players": {
|
48 |
+
"env": "MAX_PLAYERS"
|
49 |
+
},
|
50 |
+
"online-mode": {
|
51 |
+
"env": "ONLINE_MODE",
|
52 |
+
"allowed": ["true","false"]
|
53 |
+
},
|
54 |
+
"white-list": {
|
55 |
+
"env": "WHITE_LIST",
|
56 |
+
"allowed": ["true","false"]
|
57 |
+
},
|
58 |
+
"allow-list": {
|
59 |
+
"env": "ALLOW_LIST",
|
60 |
+
"allowed": ["true","false"]
|
61 |
+
},
|
62 |
+
"view-distance": {
|
63 |
+
"env": "VIEW_DISTANCE"
|
64 |
+
},
|
65 |
+
"tick-distance": {
|
66 |
+
"env": "TICK_DISTANCE"
|
67 |
+
},
|
68 |
+
"player-idle-timeout": {
|
69 |
+
"env": "PLAYER_IDLE_TIMEOUT"
|
70 |
+
},
|
71 |
+
"max-threads": {
|
72 |
+
"env": "MAX_THREADS"
|
73 |
+
},
|
74 |
+
"compression-threshold": {
|
75 |
+
"env": "COMPRESSION_THRESHOLD"
|
76 |
+
},
|
77 |
+
"level-name": {
|
78 |
+
"env": "LEVEL_NAME"
|
79 |
+
},
|
80 |
+
"level-seed": {
|
81 |
+
"env": "LEVEL_SEED"
|
82 |
+
},
|
83 |
+
"default-player-permission-level": {
|
84 |
+
"env": "DEFAULT_PLAYER_PERMISSION_LEVEL",
|
85 |
+
"allowed": ["visitor","member","operator"]
|
86 |
+
},
|
87 |
+
"texturepack-required": {
|
88 |
+
"env": "TEXTUREPACK_REQUIRED",
|
89 |
+
"allowed": ["true","false"]
|
90 |
+
},
|
91 |
+
"server-authoritative-movement": {
|
92 |
+
"env": "SERVER_AUTHORITATIVE_MOVEMENT",
|
93 |
+
"allowed": ["server-auth","client-auth","server-auth-with-rewind"],
|
94 |
+
"mappings": {
|
95 |
+
"true": "server-auth",
|
96 |
+
"false": "client-auth"
|
97 |
+
}
|
98 |
+
},
|
99 |
+
"server-authoritative-block-breaking": {
|
100 |
+
"env": "SERVER_AUTHORITATIVE_BLOCK_BREAKING",
|
101 |
+
"allowed": ["true", "false"]
|
102 |
+
},
|
103 |
+
"player-movement-score-threshold": {
|
104 |
+
"env": "PLAYER_MOVEMENT_SCORE_THRESHOLD"
|
105 |
+
},
|
106 |
+
"player-movement-distance-threshold": {
|
107 |
+
"env": "PLAYER_MOVEMENT_DISTANCE_THRESHOLD"
|
108 |
+
},
|
109 |
+
"player-movement-duration-threshold-in-ms": {
|
110 |
+
"env": "PLAYER_MOVEMENT_DURATION_THRESHOLD_IN_MS"
|
111 |
+
},
|
112 |
+
"correct-player-movement": {
|
113 |
+
"env": "CORRECT_PLAYER_MOVEMENT",
|
114 |
+
"allowed": ["true","false"]
|
115 |
+
},
|
116 |
+
"emit-server-telemetry": {
|
117 |
+
"env": "EMIT_SERVER_TELEMETRY",
|
118 |
+
"allowed": ["true","false"]
|
119 |
+
},
|
120 |
+
"enable-lan-visibility": {
|
121 |
+
"env": "ENABLE_LAN_VISIBILITY",
|
122 |
+
"allowed": ["true","false"]
|
123 |
+
}
|
124 |
+
}
|