From aa42633ab2c4c924f468fbfc6c7a9a2b22cf5845 Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Sun, 31 May 2020 18:18:54 -0500 Subject: [PATCH] Added support for FTB application modpacks via modpacks.ch For #524 --- .circleci/config.yml | 24 ---- .github/workflows/build-multiarch.yml | 24 ++++ BUILDING.md | 2 +- Dockerfile | 1 + README.md | 84 ++++++------ docs/.gitkeep | 0 examples/docker-compose-curseforge.yml | 6 +- examples/modpacks/.gitignore | 1 + examples/modpacks/README.md | 3 + start-configuration | 6 +- start-deployCF | 133 +++++++++++++++++++ start-deployFTB | 173 ++++++++----------------- start-minecraftFinalSetup | 2 +- 13 files changed, 265 insertions(+), 194 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/workflows/build-multiarch.yml create mode 100644 docs/.gitkeep create mode 100644 examples/modpacks/.gitignore create mode 100644 examples/modpacks/README.md create mode 100644 start-deployCF diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 006b7b01..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,24 +0,0 @@ -version: 2.1 - -jobs: - minecraft_server: - docker: - - image: docker:18.09.6 - environment: - DOCKER_BUILDKIT: "1" - steps: - - checkout - - setup_remote_docker: - version: 18.09.3 - - run: docker build --platform linux/amd64,linux/arm64,linux/arm/v7 -t itzg/minecraft-server:multiarch . - -workflows: - version: 2 - build: - jobs: - - minecraft_server: - filters: - branches: - ignore: - - armv7 - - multiarch diff --git a/.github/workflows/build-multiarch.yml b/.github/workflows/build-multiarch.yml new file mode 100644 index 00000000..76bffa43 --- /dev/null +++ b/.github/workflows/build-multiarch.yml @@ -0,0 +1,24 @@ +name: Build and publish multiarch +on: + push: + branches: + - ftba-support + - multiarch + +jobs: + docker-buildx: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2.2.0 + - name: Get branch name + uses: nelonoel/branch-name@v1 + - name: Docker Buildx + uses: ilteoood/docker_buildx@1.0.4 + with: + publish: true + imageName: itzg/minecraft-server + tag: ${{ env.BRANCH_NAME }} + dockerHubUser: ${{ secrets.DOCKER_USER }} + dockerHubPassword: ${{ secrets.DOCKER_PASSWORD }} + diff --git a/BUILDING.md b/BUILDING.md index d85990ef..928315bd 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -1,5 +1,5 @@ Ensure buildx/BuildKit support is enabled and run: ``` -docker buildx build --platform=linux/arm64 --platform=linux/arm/v7 --platform=linux/amd64 --tag itzg/minecraft-server:multiarch --push +docker buildx build --platform=linux/arm64 --platform=linux/arm/v7 --platform=linux/amd64 --tag itzg/minecraft-server:multiarch --push . ``` diff --git a/Dockerfile b/Dockerfile index 3e40abb0..ec649986 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,6 +15,7 @@ RUN apt-get update \ tzdata \ rsync \ nano \ + unzip \ && apt-get clean HEALTHCHECK --start-period=1m CMD mc-monitor status --host localhost --port $SERVER_PORT diff --git a/README.md b/README.md index 13e2a4d1..a858698a 100644 --- a/README.md +++ b/README.md @@ -491,20 +491,46 @@ A [Magma](https://magmafoundation.org/) server, which is a combination of Forge > **NOTE** there are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2" -## Running a Server with a Feed-The-Beast (FTB) / CurseForge modpack +## Running a server with a Feed the Beast modpack -Enable this server mode by adding a `-e TYPE=FTB` or `-e TYPE=CURSEFORGE` to your command-line, +> **NOTE** requires `itzg/minecraft-server:multiarch` image + +[Feed the Beast application](https://www.feed-the-beast.com/) modpacks are supported by using `-e TYPE=FTBA` (**note** the "A" at the end of the type). This server type will automatically take care of downloading and installing the modpack and appropriate version of Forge, so the `VERSION` does not need to be specified. + +### Environment Variables: +- `FTB_MODPACK_ID`: **required**, the numerical ID of the modpack to install. The ID can be located by finding the modpack at [Neptune FTB](https://ftb.neptunepowered.org/) and using the "Pack ID" +- `FTB_MODPACK_VERSION_ID`: optional, the numerical Id of the version to install. If not specified, the latest version will be installed. The "Version ID" can be obtained by drilling into the Versions tab and clicking a specific version. + +### Upgrading + +If a specific `FTB_MODPACK_VERSION_ID` was not specified, simply restart the container to pick up the newest modpack version. If using a specific version ID, recreate the container with the new version ID. + +### Example + +The following example runs the latest version of [FTB Presents Direwolf20 1.12](https://ftb.neptunepowered.org/pack/ftb-presents-direwolf20-1-12/): + +``` +docker run -d --name mc-ftb -e EULA=TRUE \ + -e TYPE=FTBA -e FTB_MODPACK_ID=31 \ + -p 25565:25565 \ + itzg/minecraft-server:multiarch +``` + +> Normally you will also add `-v` volume for `/data` since the mods and config are installed there along with world data. + +## Running a server with a CurseForge modpack + +Enable this server mode by adding `-e TYPE=CURSEFORGE` to your command-line, but note the following additional steps needed... -You need to specify a modpack to run, using the `FTB_SERVER_MOD` or `CF_SERVER_MOD` environment -variable. An FTB/CurseForge server modpack is available together with its respective -client modpack on under "Additional Files." Similar you can -locate the modpacks for CurseForge at . +You need to specify a modpack to run, using the `CF_SERVER_MOD` environment +variable. A CurseForge server modpack is available together with its respective +client modpack at . -Now you can add a `-e FTB_SERVER_MOD=name_of_modpack.zip` to your command-line. +Now you can add a `-e CF_SERVER_MOD=name_of_modpack.zip` to your command-line. - docker run -d -v /path/on/host:/data -e TYPE=FTB \ - -e FTB_SERVER_MOD=FTBPresentsSkyfactory3Server_3.0.6.zip \ + docker run -d -v /path/on/host:/data -e TYPE=CURSEFORGE \ + -e CF_SERVER_MOD=SkyFactory_4_Server_4.1.0.zip \ -p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server If you want to keep the pre-download modpacks separate from your data directory, @@ -512,8 +538,8 @@ then you can attach another volume at a path of your choosing and reference that The following example uses `/modpacks` as the container path as the pre-download area: docker run -d -v /path/on/host:/data -v /path/to/modpacks:/modpacks \ - -e TYPE=FTB \ - -e FTB_SERVER_MOD=/modpacks/FTBPresentsSkyfactory3Server_3.0.6.zip \ + -e TYPE=CURSEFORGE \ + -e CF_SERVER_MOD=/modpacks/SkyFactory_4_Server_4.1.0.zip \ -p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server ### Fixing "unable to launch forgemodloader" @@ -526,42 +552,6 @@ then you apply a workaround by adding this to the run invocation: -e FTB_LEGACYJAVAFIXER=true -### Using a client-made curseforge modpack - -If you use something like CurseForge, you may end up creating/using modpacks that do not -contain server mod jars. Instead, the CurseForge setup has `manifest.json` files, which -will show up under `/data/FeedTheBeast/manifest.json`. - -To use these packs you will need to: - -- Specify the manifest location with env var `MANIFEST=/data/FeedTheBeast/manifest` -- Pick a relevant ServerStart.sh and potentially settings.cfg and put them in `/data/FeedTheBeast` - -An example of the latter would be to use -There, you'll find that all you have to do is put `ServerStart.sh` and `settings.cfg` into -`/data/FeedTheBeast`, taking care to update `settings.cfg` to specify your desired version -of minecraft and forge. You can do this in the cli with something like: - -``` -$ wget https://raw.githubusercontent.com/AllTheMods/Server-Scripts/master/ServerStart.sh -$ wget https://raw.githubusercontent.com/AllTheMods/Server-Scripts/master/settings.cfg -$ vim settings.cfg #update the forge version to the one you want. Your manifest.json will have it -$ chmod +x ServerStart.sh -$ docker run -itd --name derpcraft \ - -e MANIFEST=/data/FeedTheBeast/manifest.json \ - -v $PWD/ServerStart.sh:/data/FeedTheBeast/ServerStart.sh \ - -v $PWD/settings.cfg:/data/FeedTheBeast/settings.cfg \ - -e VERSION=1.12.2\ - -e TYPE=CURSEFORGE\ - -e CF_SERVER_MOD=https://minecraft.curseforge.com/projects/your_amazing_modpack/files/2670435/download\ - -p 25565:25565\ - -e EULA=TRUE\ - --restart=always\ - itzg/minecraft-server -``` - -Note the `CF_SERVER_MOD` env var should match the server version of the modpack you are targeting. - ## Running a SpongeVanilla server Enable SpongeVanilla server mode by adding a `-e TYPE=SPONGEVANILLA` to your command-line. diff --git a/docs/.gitkeep b/docs/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/examples/docker-compose-curseforge.yml b/examples/docker-compose-curseforge.yml index 8bdc844e..fbdd8c89 100644 --- a/examples/docker-compose-curseforge.yml +++ b/examples/docker-compose-curseforge.yml @@ -3,9 +3,11 @@ version: '3.2' services: mc: image: itzg/minecraft-server + volumes: + - ./modpacks:/modpacks:ro environment: EULA: "true" - TYPE: FTB - FTB_SERVER_MOD: https://minecraft.curseforge.com/projects/all-the-mods-expert-remastered/files/2493900/download + TYPE: CURSEFORGE + CF_SERVER_MOD: /modpacks/SkyFactory_4_Server_4.1.0.zip ports: - 25565:25565 diff --git a/examples/modpacks/.gitignore b/examples/modpacks/.gitignore new file mode 100644 index 00000000..c4c4ffc6 --- /dev/null +++ b/examples/modpacks/.gitignore @@ -0,0 +1 @@ +*.zip diff --git a/examples/modpacks/README.md b/examples/modpacks/README.md new file mode 100644 index 00000000..17b8e85b --- /dev/null +++ b/examples/modpacks/README.md @@ -0,0 +1,3 @@ +Please server [modpacks downloaded from CurseForge](https://www.curseforge.com/minecraft/modpacks) in this directory. + +The example [`docker-compose-curseforge.yml`](../docker-compose-curseforge.yml) references a modpack downloaded from . diff --git a/start-configuration b/start-configuration index f91293b9..8a1d3aa0 100644 --- a/start-configuration +++ b/start-configuration @@ -83,10 +83,14 @@ case "${TYPE^^}" in exec /start-deployFabric "$@" ;; - FTB|CURSEFORGE) + FTBA) exec /start-deployFTB "$@" ;; + CURSEFORGE|FTB) + exec /start-deployCF "$@" + ;; + VANILLA) exec /start-deployVanilla "$@" ;; diff --git a/start-deployCF b/start-deployCF new file mode 100644 index 00000000..5b6063e7 --- /dev/null +++ b/start-deployCF @@ -0,0 +1,133 @@ +#!/bin/bash + +. /start-utils + +export FTB_BASE_DIR=/data/FeedTheBeast +legacyJavaFixerUrl=http://ftb.cursecdn.com/FTB2/maven/net/minecraftforge/lex/legacyjavafixer/1.0/legacyjavafixer-1.0.jar +export TYPE=CURSEFORGE + +FTB_SERVER_MOD=${FTB_SERVER_MOD:-$CF_SERVER_MOD} + +log "Looking for CurseForge server modpack." +if [[ -z $FTB_SERVER_MOD ]]; then + log "Environment variable FTB_SERVER_MOD not set." + log "Set FTB_SERVER_MOD to the file name of the FTB server modpack." + log "(And place the modpack in the /data directory.)" + exit 2 +fi + +entryScriptExpr="-name ServerStart.sh -o -name ServerStartLinux.sh -o -name LaunchServer.sh" + +if [[ -d ${FTB_BASE_DIR} ]]; then + startScriptCount=$(find ${FTB_BASE_DIR} $entryScriptExpr |wc -l) + if [[ $startScriptCount > 1 ]]; then + log "Conflicting FTB/CurseForge packages have been installed. Please cleanup ${FTB_BASE_DIR}" + exit 2 + fi +else + startScriptCount=0 +fi + +# only download and install if a mod pack isn't already installed +# also check for the start script rather than just the folder +# this allows saving just the world separate from the rest of the data directory +if [[ $startScriptCount = 0 ]]; then + srv_modpack=${FTB_SERVER_MOD} + if isURL ${srv_modpack}; then + case $srv_modpack in + https://www.feed-the-beast.com/*/download|https://www.curseforge.com/minecraft/modpacks/*/download/*/file) + ;; + https://www.curseforge.com/minecraft/modpacks/*/download/*) + srv_modpack=${srv_modpack}/file;; + https://www.feed-the-beast.com/*) + srv_modpack=${srv_modpack}/download;; + esac + file=$(basename $(dirname $srv_modpack)) + downloaded=/data/${file}.zip + if [ ! -e $downloaded ]; then + log "Downloading FTB modpack... + $srv_modpack -> $downloaded" + curl -sSL -o $downloaded $srv_modpack + fi + srv_modpack=$downloaded + fi + if [[ ${srv_modpack:0:5} == "data/" ]]; then + # Prepend with "/" + srv_modpack=/${srv_modpack} + fi + if [[ ! ${srv_modpack:0:1} == "/" ]]; then + # If not an absolute path, assume file is in "/data" + srv_modpack=/data/${srv_modpack} + fi + if [[ ! -f ${srv_modpack} ]]; then + log "FTB server modpack ${srv_modpack} not found." + exit 2 + fi + if [[ ! ${srv_modpack: -4} == ".zip" ]]; then + log "FTB server modpack ${srv_modpack} is not a zip archive." + log "Please set FTB_SERVER_MOD to a file with a .zip extension." + exit 2 + fi + + log "Unpacking FTB server modpack ${srv_modpack} ..." + mkdir -p ${FTB_BASE_DIR} + unzip -o ${srv_modpack} -d ${FTB_BASE_DIR} | awk '{printf "."} END {print ""}' +fi + +if [[ $(find ${FTB_BASE_DIR} $entryScriptExpr | wc -l) = 0 ]]; then + + # Allow up to 2 levels since some modpacks have a top-level directory named + # for the modpack + forgeJar=$(find ${FTB_BASE_DIR} -maxdepth 2 -name 'forge*.jar' -a -not -name 'forge*installer') + if [[ "$forgeJar" ]]; then + export FTB_BASE_DIR=$(dirname "${forgeJar}") + log "No entry script found, so building one for ${forgeJar}" + cat > "${FTB_BASE_DIR}/ServerStart.sh" < 1 ]]; then + log "Ambigous startup scripts in FTB modpack!" + log "found:" + find ${FTB_BASE_DIR} $entryScriptExpr + exit 2 +fi + +export FTB_SERVER_START=$(find "${FTB_BASE_DIR}" $entryScriptExpr) + +export FTB_DIR=$(dirname "${FTB_SERVER_START}") +chmod a+x "${FTB_SERVER_START}" +grep fml.queryResult=confirm ${FTB_SERVER_START} > /dev/null || \ + sed -i 's/-jar/-Dfml.queryResult=confirm -jar/' "${FTB_SERVER_START}" +sed -i 's/.*read.*Restart now/#\0/' "${FTB_SERVER_START}" +legacyJavaFixerPath="${FTB_DIR}/mods/legacyjavafixer.jar" + +if isTrue ${FTB_LEGACYJAVAFIXER} && [ ! -e "${legacyJavaFixerPath}" ]; then + log "Installing legacy java fixer to ${legacyJavaFixerPath}" + curl -sSL -o "${legacyJavaFixerPath}" ${legacyJavaFixerUrl} +fi + +if [ -e "${FTB_DIR}/FTBInstall.sh" ]; then + pushd "${FTB_DIR}" + sh FTBInstall.sh + popd +elif [ -e "${FTB_DIR}/Install.sh" ]; then + pushd "${FTB_DIR}" + sh Install.sh + popd +fi + +# Continue to Final Setup +exec /start-finalSetup01World $@ diff --git a/start-deployFTB b/start-deployFTB index dfdab6fe..15899f70 100644 --- a/start-deployFTB +++ b/start-deployFTB @@ -1,133 +1,70 @@ #!/bin/bash +ftbInstallMarker=".ftb-installed" + . /start-utils +isDebugging && set -x +set -e -export FTB_BASE_DIR=/data/FeedTheBeast -legacyJavaFixerUrl=http://ftb.cursecdn.com/FTB2/maven/net/minecraftforge/lex/legacyjavafixer/1.0/legacyjavafixer-1.0.jar -export TYPE=FEED-THE-BEAST - -FTB_SERVER_MOD=${FTB_SERVER_MOD:-$CF_SERVER_MOD} - -log "Looking for Feed-The-Beast / CurseForge server modpack." -if [[ -z $FTB_SERVER_MOD ]]; then - log "Environment variable FTB_SERVER_MOD not set." - log "Set FTB_SERVER_MOD to the file name of the FTB server modpack." - log "(And place the modpack in the /data directory.)" - exit 2 +if ! [[ -v FTB_MODPACK_ID ]]; then + log "ERROR FTB_MODPACK_ID is required with TYPE=FTB" + exit 1 fi -entryScriptExpr="-name ServerStart.sh -o -name ServerStartLinux.sh -o -name LaunchServer.sh" +if ! [[ ${FTB_MODPACK_ID} =~ [0-9]+ ]]; then + log "ERROR FTB_MODPACK_ID needs to be numeric" + exit 1 +fi -if [[ -d ${FTB_BASE_DIR} ]]; then - startScriptCount=$(find ${FTB_BASE_DIR} $entryScriptExpr |wc -l) - if [[ $startScriptCount > 1 ]]; then - log "Conflicting FTB/CurseForge packages have been installed. Please cleanup ${FTB_BASE_DIR}" - exit 2 +if ! [[ -v FTB_MODPACK_VERSION_ID ]]; then + if ! FTB_MODPACK_VERSION_ID=$(curl -fsSL https://api.modpacks.ch/public/modpack/${FTB_MODPACK_ID} | jq -r '.versions | sort_by(.updated)[-1].id'); then + log "ERROR unable to resolve latest modpack version ID for modpack ${FTB_MODPACK_ID}" + exit 1 fi +elif ! [[ ${FTB_MODPACK_VERSION_ID} =~ [0-9]+ ]]; then + log "ERROR FTB_MODPACK_VERSION_ID needs to be numeric" + exit 1 +fi + +if ! [ -f "${ftbInstallMarker}" ] || [ $(cat "${ftbInstallMarker}") != "${FTB_MODPACK_ID}=${FTB_MODPACK_VERSION_ID}" ]; then + ftbInstaller=/data/ftb-installer + if ! [[ -f "${ftbInstaller}" ]]; then + log "Downloading FTB installer" + curl -fsSL https://api.modpacks.ch/public/modpack/1/1/server/linux -o "${ftbInstaller}" + chmod +x "${ftbInstaller}" + fi + + rm -rf forge*jar mods config libraries defaultconfigs changelogs + + log "Installing modpack ID ${FTB_MODPACK_ID}, version ID ${FTB_MODPACK_VERSION_ID}" + ${ftbInstaller} ${FTB_MODPACK_ID} ${FTB_MODPACK_VERSION_ID} --noscript --auto + rm -f forge*installer.jar + + echo "${FTB_MODPACK_ID}=${FTB_MODPACK_VERSION_ID}" > ${ftbInstallMarker} else - startScriptCount=0 + log "FTB modpack ID ${FTB_MODPACK_ID}, version ID ${FTB_MODPACK_VERSION_ID} is ready to go" fi -# only download and install if a mod pack isn't already installed -# also check for the start script rather than just the folder -# this allows saving just the world separate from the rest of the data directory -if [[ $startScriptCount = 0 ]]; then - srv_modpack=${FTB_SERVER_MOD} - if isURL ${srv_modpack}; then - case $srv_modpack in - https://www.feed-the-beast.com/*/download|https://www.curseforge.com/minecraft/modpacks/*/download/*/file) - ;; - https://www.curseforge.com/minecraft/modpacks/*/download/*) - srv_modpack=${srv_modpack}/file;; - https://www.feed-the-beast.com/*) - srv_modpack=${srv_modpack}/download;; - esac - file=$(basename $(dirname $srv_modpack)) - downloaded=/data/${file}.zip - if [ ! -e $downloaded ]; then - log "Downloading FTB modpack... - $srv_modpack -> $downloaded" - curl -sSL -o $downloaded $srv_modpack - fi - srv_modpack=$downloaded +isDebugging && cat version.json +forgeVersion=$(jq -r '.targets[] | select(.name == "forge") | .version' version.json) +mcVersion=$(jq -r '.targets[] | select(.name == "minecraft") | .version' version.json) + +variants=( + forge-${mcVersion}-${forgeVersion}.jar + forge-${mcVersion}-${forgeVersion}-universal.jar + forge-${mcVersion}-${forgeVersion}-${mcVersion}-universal.jar +) +for f in ${variants[@]}; do + if [ -f $f ]; then + export SERVER=$f + break fi - if [[ ${srv_modpack:0:5} == "data/" ]]; then - # Prepend with "/" - srv_modpack=/${srv_modpack} - fi - if [[ ! ${srv_modpack:0:1} == "/" ]]; then - # If not an absolute path, assume file is in "/data" - srv_modpack=/data/${srv_modpack} - fi - if [[ ! -f ${srv_modpack} ]]; then - log "FTB server modpack ${srv_modpack} not found." - exit 2 - fi - if [[ ! ${srv_modpack: -4} == ".zip" ]]; then - log "FTB server modpack ${srv_modpack} is not a zip archive." - log "Please set FTB_SERVER_MOD to a file with a .zip extension." - exit 2 - fi - - log "Unpacking FTB server modpack ${srv_modpack} ..." - mkdir -p ${FTB_BASE_DIR} - unzip -o ${srv_modpack} -d ${FTB_BASE_DIR} | awk '{printf "."} END {print ""}' -fi - -if [[ $(find ${FTB_BASE_DIR} $entryScriptExpr | wc -l) = 0 ]]; then - - # Allow up to 2 levels since some modpacks have a top-level directory named - # for the modpack - forgeJar=$(find ${FTB_BASE_DIR} -maxdepth 2 -name 'forge*.jar' -a -not -name 'forge*installer') - if [[ "$forgeJar" ]]; then - export FTB_BASE_DIR=$(dirname "${forgeJar}") - log "No entry script found, so building one for ${forgeJar}" - cat > "${FTB_BASE_DIR}/ServerStart.sh" < 1 ]]; then - log "Ambigous startup scripts in FTB modpack!" - log "found:" - find ${FTB_BASE_DIR} $entryScriptExpr - exit 2 -fi - -export FTB_SERVER_START=$(find "${FTB_BASE_DIR}" $entryScriptExpr) - -export FTB_DIR=$(dirname "${FTB_SERVER_START}") -chmod a+x "${FTB_SERVER_START}" -grep fml.queryResult=confirm ${FTB_SERVER_START} > /dev/null || \ - sed -i 's/-jar/-Dfml.queryResult=confirm -jar/' "${FTB_SERVER_START}" -sed -i 's/.*read.*Restart now/#\0/' "${FTB_SERVER_START}" -legacyJavaFixerPath="${FTB_DIR}/mods/legacyjavafixer.jar" - -if isTrue ${FTB_LEGACYJAVAFIXER} && [ ! -e "${legacyJavaFixerPath}" ]; then - log "Installing legacy java fixer to ${legacyJavaFixerPath}" - curl -sSL -o "${legacyJavaFixerPath}" ${legacyJavaFixerUrl} -fi - -if [ -e "${FTB_DIR}/FTBInstall.sh" ]; then - pushd "${FTB_DIR}" - sh FTBInstall.sh - popd -elif [ -e "${FTB_DIR}/Install.sh" ]; then - pushd "${FTB_DIR}" - sh Install.sh - popd +done +if ! [ -v SERVER ]; then + log "ERROR unable to locate the installed forge server jar" + ls *.jar + exit 2 fi # Continue to Final Setup -exec /start-finalSetup01World $@ +exec /start-finalSetup01World "$@" diff --git a/start-minecraftFinalSetup b/start-minecraftFinalSetup index 6b1e858c..0fb08d54 100644 --- a/start-minecraftFinalSetup +++ b/start-minecraftFinalSetup @@ -179,7 +179,7 @@ if [[ ${TYPE} == "CURSE_INSTANCE" ]]; then exec mc-server-runner ${mcServerRunnerArgs} \ --cf-instance-file "${CURSE_INSTANCE_JSON}" \ java $JVM_XX_OPTS $JVM_OPTS $expandedDOpts -jar _SERVERJAR_ "$@" $EXTRA_ARGS -elif [[ ${TYPE} == "FEED-THE-BEAST" ]]; then +elif [[ ${TYPE} == "CURSEFORGE" ]]; then mcServerRunnerArgs="${mcServerRunnerArgs} --shell bash" if [ ! -e "${FTB_DIR}/ops.json" -a -e /data/ops.txt ]; then