mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2024-06-07 19:40:43 +00:00
Adding Vanilla Tweaks Options (#1246)
This commit is contained in:
parent
e93cc569c6
commit
83d3555eab
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,4 +1,6 @@
|
|||||||
|
.vscode
|
||||||
/data/
|
/data/
|
||||||
/.idea/
|
/.idea/
|
||||||
*.iml
|
*.iml
|
||||||
/gh-md-toc
|
*.zip
|
||||||
|
/gh-md-toc
|
||||||
|
54
Dockerfile
54
Dockerfile
@ -5,23 +5,23 @@ LABEL org.opencontainers.image.authors="Geoff Bourne <itzgeoff@gmail.com>"
|
|||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& DEBIAN_FRONTEND=noninteractive \
|
&& DEBIAN_FRONTEND=noninteractive \
|
||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
imagemagick \
|
imagemagick \
|
||||||
gosu \
|
gosu \
|
||||||
sudo \
|
sudo \
|
||||||
net-tools \
|
net-tools \
|
||||||
iputils-ping \
|
iputils-ping \
|
||||||
curl wget \
|
curl \
|
||||||
git \
|
git \
|
||||||
jq \
|
jq \
|
||||||
dos2unix \
|
dos2unix \
|
||||||
mysql-client \
|
mysql-client \
|
||||||
tzdata \
|
tzdata \
|
||||||
rsync \
|
rsync \
|
||||||
nano \
|
nano \
|
||||||
unzip \
|
unzip \
|
||||||
knockd \
|
knockd \
|
||||||
ttf-dejavu \
|
ttf-dejavu \
|
||||||
&& apt-get clean
|
&& apt-get clean
|
||||||
|
|
||||||
RUN addgroup --gid 1000 minecraft \
|
RUN addgroup --gid 1000 minecraft \
|
||||||
&& adduser --system --shell /bin/false --uid 1000 --ingroup minecraft --home /data minecraft
|
&& adduser --system --shell /bin/false --uid 1000 --ingroup minecraft --home /data minecraft
|
||||||
@ -45,26 +45,26 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
|||||||
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
--var version=1.5.1 --var app=rcon-cli --file {{.app}} \
|
--var version=1.5.1 --var app=rcon-cli --file {{.app}} \
|
||||||
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
--var version=0.10.3 --var app=mc-monitor --file {{.app}} \
|
--var version=0.10.3 --var app=mc-monitor --file {{.app}} \
|
||||||
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
--var version=1.8.0 --var app=mc-server-runner --file {{.app}} \
|
--var version=1.8.0 --var app=mc-server-runner --file {{.app}} \
|
||||||
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
--var version=0.1.1 --var app=maven-metadata-release --file {{.app}} \
|
--var version=0.1.1 --var app=maven-metadata-release --file {{.app}} \
|
||||||
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
ARG MC_HELPER_VERSION=1.11.0
|
ARG MC_HELPER_VERSION=1.11.0
|
||||||
ARG MC_HELPER_BASE_URL=https://github.com/itzg/mc-image-helper/releases/download/v${MC_HELPER_VERSION}
|
ARG MC_HELPER_BASE_URL=https://github.com/itzg/mc-image-helper/releases/download/v${MC_HELPER_VERSION}
|
||||||
RUN curl -fsSL ${MC_HELPER_BASE_URL}/mc-image-helper-${MC_HELPER_VERSION}.tgz \
|
RUN curl -fsSL ${MC_HELPER_BASE_URL}/mc-image-helper-${MC_HELPER_VERSION}.tgz \
|
||||||
| tar -C /usr/share -zxf - \
|
| tar -C /usr/share -zxf - \
|
||||||
&& ln -s /usr/share/mc-image-helper-${MC_HELPER_VERSION}/bin/mc-image-helper /usr/bin
|
&& ln -s /usr/share/mc-image-helper-${MC_HELPER_VERSION}/bin/mc-image-helper /usr/bin
|
||||||
|
|
||||||
VOLUME ["/data"]
|
VOLUME ["/data"]
|
||||||
WORKDIR /data
|
WORKDIR /data
|
||||||
|
41
README.md
41
README.md
@ -810,6 +810,47 @@ Datapacks can be installed in a similar manner to mods/plugins. There are many e
|
|||||||
* `REMOVE_OLD_DATAPACKS_EXCLUDE`
|
* `REMOVE_OLD_DATAPACKS_EXCLUDE`
|
||||||
Datapacks will be placed in `/data/$LEVEL/datapacks`
|
Datapacks will be placed in `/data/$LEVEL/datapacks`
|
||||||
|
|
||||||
|
### VanillaTweaks
|
||||||
|
|
||||||
|
VanillaTweaks datapacks can be installed with a share code from the website UI **OR** a json file to specify packs to download and install.
|
||||||
|
|
||||||
|
Accepted Parameters:
|
||||||
|
|
||||||
|
- `VANILLATWEAKS_FILE`
|
||||||
|
- `VANILLATWEAKS_SHARECODE`
|
||||||
|
- `REMOVE_OLD_VANILLATWEAKS`
|
||||||
|
- `REMOVE_OLD_VANILLATWEAKS_DEPTH`
|
||||||
|
- `REMOVE_OLD_VANILLATWEAKS_INCLUDE`
|
||||||
|
- `REMOVE_OLD_VANILLATWEAKS_EXCLUDE`
|
||||||
|
|
||||||
|
Example of expected Vanillatweaks sharecode:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
VANILLATWEAKS_SHARECODE: MGr52E
|
||||||
|
```
|
||||||
|
|
||||||
|
Example of expected Vanillatweaks file format:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"version": "1.18",
|
||||||
|
"packs": {
|
||||||
|
"survival": [
|
||||||
|
"graves",
|
||||||
|
"multiplayer sleep",
|
||||||
|
"afk display",
|
||||||
|
"armor statues",
|
||||||
|
"unlock all recipes",
|
||||||
|
"fast leaf decay",
|
||||||
|
"coordinates hud"
|
||||||
|
],
|
||||||
|
"items": ["armored elytra"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Datapacks will be placed in `/data/$LEVEL/datapacks`
|
||||||
|
|
||||||
## Server configuration
|
## Server configuration
|
||||||
|
|
||||||
By default, the server configuration will be created and set based on the following environment variables, but only the first time the server is started. If the `server.properties` file already exists, the values in them will not be changed.
|
By default, the server configuration will be created and set based on the following environment variables, but only the first time the server is started. If the `server.properties` file already exists, the values in them will not be changed.
|
||||||
|
27
examples/vanilla-tweaks/docker-compose.yml
Normal file
27
examples/vanilla-tweaks/docker-compose.yml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
version: "3.3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
vanillatweaks_file:
|
||||||
|
restart: "no"
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
ports:
|
||||||
|
- "25565:25565/tcp"
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
VERSION: ${MINECRAFT_VERSION:-LATEST}
|
||||||
|
VANILLATWEAKS_FILE: /config/vanillatweaks-datapacks.json
|
||||||
|
REMOVE_OLD_VANILLATWEAKS: "TRUE"
|
||||||
|
volumes:
|
||||||
|
- data:/data
|
||||||
|
- ./vanillatweaks-datapacks.json:/config/vanillatweaks-datapacks.json:ro
|
||||||
|
vanillatweaks_sharecode:
|
||||||
|
# port is set to 25566 to not conflict with vanillatweaks_file example
|
||||||
|
ports:
|
||||||
|
- "25566:25565/tcp"
|
||||||
|
restart: "no"
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
VERSION: ${MINECRAFT_VERSION:-LATEST}
|
||||||
|
VANILLATWEAKS_SHARECODE: MGr52E
|
||||||
|
REMOVE_OLD_VANILLATWEAKS: "TRUE"
|
15
examples/vanilla-tweaks/vanillatweaks-datapacks.json
Normal file
15
examples/vanilla-tweaks/vanillatweaks-datapacks.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"version": "1.18",
|
||||||
|
"packs": {
|
||||||
|
"survival": [
|
||||||
|
"graves",
|
||||||
|
"multiplayer sleep",
|
||||||
|
"afk display",
|
||||||
|
"armor statues",
|
||||||
|
"unlock all recipes",
|
||||||
|
"fast leaf decay",
|
||||||
|
"coordinates hud"
|
||||||
|
],
|
||||||
|
"items": ["armored elytra"]
|
||||||
|
}
|
||||||
|
}
|
84
scripts/start-setupVanillaTweaks
Normal file
84
scripts/start-setupVanillaTweaks
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e -o pipefail
|
||||||
|
|
||||||
|
: "${REMOVE_OLD_VANILLATWEAKS:=false}"
|
||||||
|
: "${VANILLATWEAKS_FILE:=}"
|
||||||
|
: "${VANILLATWEAKS_SHARECODE:=}"
|
||||||
|
: "${REMOVE_OLD_VANILLATWEAKS_DEPTH:=1} "
|
||||||
|
: "${REMOVE_OLD_VANILLATWEAKS_INCLUDE:=*.zip}"
|
||||||
|
|
||||||
|
# shellcheck source=start-utils
|
||||||
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
isDebugging && set -x
|
||||||
|
|
||||||
|
out_dir=/data/${LEVEL:-world}/datapacks
|
||||||
|
|
||||||
|
# Remove old VANILLATWEAKS
|
||||||
|
if isTrue "${REMOVE_OLD_VANILLATWEAKS}" && [ -z "${VANILLATWEAKS_FILE}" ]; then
|
||||||
|
if [ -d "$out_dir" ]; then
|
||||||
|
find "$out_dir" -mindepth 1 -maxdepth ${REMOVE_OLD_VANILLATWEAKS_DEPTH:-16} -wholename "${REMOVE_OLD_VANILLATWEAKS_INCLUDE:-*}" -not -wholename "${REMOVE_OLD_VANILLATWEAKS_EXCLUDE:-}" -delete
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Example: VANILLATWEAKS_SHARECODE=MGr52E
|
||||||
|
# Code generated from the UI website, typically a alphanumeric 6 digit code.
|
||||||
|
if [[ "$VANILLATWEAKS_SHARECODE" ]]; then
|
||||||
|
VANILLATWEAKS_FILE=/tmp/vanillatweaksfile.json
|
||||||
|
SHARECODE_LOOKUP_URL="https://vanillatweaks.net/assets/server/sharecode.php?code=${VANILLATWEAKS_SHARECODE}"
|
||||||
|
curl -f $SHARECODE_LOOKUP_URL -o $VANILLATWEAKS_FILE
|
||||||
|
if [ ! -f "$VANILLATWEAKS_FILE" ]; then
|
||||||
|
log "ERROR: Unable to use share code provided to retreive vanillatweaks file"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use vanillatweaks file to specify VT and datapacks
|
||||||
|
if [[ "$VANILLATWEAKS_FILE" ]]; then
|
||||||
|
if [ ! -f "$VANILLATWEAKS_FILE" ]; then
|
||||||
|
log "ERROR: given VANILLATWEAKS_FILE file does not exist"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
PACKS=$(jq -jc '.packs' $VANILLATWEAKS_FILE)
|
||||||
|
if [ ! "$PACKS" ]; then
|
||||||
|
log "ERROR: unable to retrieve packs from $VANILLATWEAKS_FILE"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
VT_VERSION=$(jq -jc '.version' $VANILLATWEAKS_FILE)
|
||||||
|
if [ ! "$VT_VERSION" ]; then
|
||||||
|
log "ERROR: unable to retrieve version from $VANILLATWEAKS_FILE"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Download and unzip packs
|
||||||
|
if [[ "$PACKS" ]] && [[ "$VT_VERSION" ]]; then
|
||||||
|
VT_ZIPDATA_URL=https://vanillatweaks.net/assets/server/zipdatapacks.php
|
||||||
|
DOWNLOAD_URL=$(curl -X POST -F "packs=${PACKS}" -F "version=${VT_VERSION}" $VT_ZIPDATA_URL | jq -r '.link')
|
||||||
|
if [ ! "$DOWNLOAD_URL" ]; then
|
||||||
|
log "ERROR: unable to retrieve DOWNLOAD_URL from vanillatweaks.net!"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
TEMPZIP=/tmp/vanillatweaks.zip
|
||||||
|
if ! get -o $TEMPZIP "https://vanillatweaks.net${DOWNLOAD_URL}"; then
|
||||||
|
log "ERROR: failed to download from ${DOWNLOAD_URL}"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$out_dir"
|
||||||
|
if ! unzip -o -d "$out_dir" $TEMPZIP; then
|
||||||
|
log "ERROR: failed to unzip the ${PACKS} from ${$TEMPZIP}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# clean up files time!
|
||||||
|
rm -f $TEMPZIP
|
||||||
|
# cleans up temp vanilla tweaks file download to get stored packs
|
||||||
|
if [[ "$VANILLATWEAKS_SHARECODE" ]]; then
|
||||||
|
rm -f $VANILLATWEAKS_FILE
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "${SCRIPTS:-/}start-setupDatapack" "$@"
|
@ -69,4 +69,4 @@ if [[ "$WORLD" ]] && ( isTrue "${FORCE_WORLD_COPY}" || [ ! -d "$worldDest" ] );
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "${SCRIPTS:-/}start-setupDatapack" "$@"
|
exec "${SCRIPTS:-/}start-setupVanillaTweaks" "$@"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
version: "3.8"
|
version: "3"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
monitor:
|
monitor:
|
||||||
|
@ -2,14 +2,13 @@ version: "3"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
mc:
|
mc:
|
||||||
image: itzg/minecraft-server
|
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}
|
||||||
environment:
|
environment:
|
||||||
EULA: "true"
|
EULA: "true"
|
||||||
|
SETUP_ONLY: "TRUE"
|
||||||
GENERIC_PACKS: https://github.com/itzg/mc-image-helper/releases/download/v1.9.5/mc-image-helper-1.9.5.zip,/packs/testing.zip
|
GENERIC_PACKS: https://github.com/itzg/mc-image-helper/releases/download/v1.9.5/mc-image-helper-1.9.5.zip,/packs/testing.zip
|
||||||
DEBUG: "true"
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./packs:/packs
|
- ./packs:/packs
|
||||||
- data:/data
|
- data:/data
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
data: {}
|
data: {}
|
@ -1,22 +1,56 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
# go to script root directory
|
||||||
cd "$(dirname "$0")" || exit 1
|
cd "$(dirname "$0")" || exit 1
|
||||||
|
|
||||||
failed=false
|
# compose down function for reuse
|
||||||
|
|
||||||
down() {
|
down() {
|
||||||
docker-compose down -v
|
docker-compose down -v --remove-orphans
|
||||||
}
|
}
|
||||||
|
|
||||||
docker-compose run monitor || failed=true
|
fullMinecraftUpTest(){
|
||||||
echo "
|
name=$1
|
||||||
Result: failed=$failed"
|
failed=false
|
||||||
|
# run the monitor to validate the Minecraft image is healthy
|
||||||
|
docker-compose run monitor || failed=true
|
||||||
|
echo "${name} Result: failed=$failed"
|
||||||
|
|
||||||
if $failed; then
|
# docker-compose logs outputs messages from the specified container
|
||||||
docker-compose logs mc
|
if $failed; then
|
||||||
|
docker-compose logs mc
|
||||||
|
down
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
down
|
down
|
||||||
exit 1
|
}
|
||||||
else
|
|
||||||
down
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
setupOnlyMinecraftTest(){
|
||||||
|
folder=$1
|
||||||
|
failed=false
|
||||||
|
# run the monitor to validate the Minecraft image is healthy
|
||||||
|
docker-compose --log-level ERROR up --quiet-pull --exit-code-from mc 2>/dev/null || failed=true
|
||||||
|
echo "${folder} Result: failed=$failed"
|
||||||
|
|
||||||
|
# docker-compose logs outputs messages from the specified container
|
||||||
|
if $failed; then
|
||||||
|
docker-compose logs mc
|
||||||
|
down
|
||||||
|
cd ..
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
down
|
||||||
|
cd ..
|
||||||
|
}
|
||||||
|
|
||||||
|
# run tests on base docker compose and validate mc service with monitor
|
||||||
|
fullMinecraftUpTest 'Full Vanilla Test'
|
||||||
|
|
||||||
|
# go through each folder to test builds
|
||||||
|
FOLDERS=$(ls)
|
||||||
|
for folder in $FOLDERS; do
|
||||||
|
# If folder is a directory
|
||||||
|
if [ -d "$folder" ]; then
|
||||||
|
cd "$folder"
|
||||||
|
setupOnlyMinecraftTest $folder
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
14
tests/vanillatweaks_file/docker-compose.yml
Normal file
14
tests/vanillatweaks_file/docker-compose.yml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
restart: "no"
|
||||||
|
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
SETUP_ONLY: "TRUE"
|
||||||
|
VERSION: ${MINECRAFT_VERSION:-LATEST}
|
||||||
|
VANILLATWEAKS_FILE: /config/vanillatweaks-datapacks.json
|
||||||
|
REMOVE_OLD_VANILLATWEAKS: "TRUE"
|
||||||
|
volumes:
|
||||||
|
- ./vanillatweaks-datapacks.json:/config/vanillatweaks-datapacks.json:ro
|
17
tests/vanillatweaks_file/vanillatweaks-datapacks.json
Normal file
17
tests/vanillatweaks_file/vanillatweaks-datapacks.json
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"type": "datapacks",
|
||||||
|
"version": "1.18",
|
||||||
|
"packs": {
|
||||||
|
"survival": [
|
||||||
|
"graves",
|
||||||
|
"multiplayer sleep",
|
||||||
|
"afk display",
|
||||||
|
"armor statues",
|
||||||
|
"unlock all recipes",
|
||||||
|
"fast leaf decay",
|
||||||
|
"coordinates hud"
|
||||||
|
],
|
||||||
|
"items": ["armored elytra"]
|
||||||
|
},
|
||||||
|
"result": "ok"
|
||||||
|
}
|
12
tests/vanillatweaks_sharecode/docker-compose.yml
Normal file
12
tests/vanillatweaks_sharecode/docker-compose.yml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
restart: "no"
|
||||||
|
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
SETUP_ONLY: "TRUE"
|
||||||
|
VERSION: ${MINECRAFT_VERSION:-LATEST}
|
||||||
|
VANILLATWEAKS_SHARECODE: MGr52E
|
||||||
|
REMOVE_OLD_VANILLATWEAKS: "TRUE"
|
Loading…
Reference in New Issue
Block a user