Compare commits

..

7 Commits

Author SHA1 Message Date
Geoff Bourne
f3826422cf Auto-merging via docker-versions-create 2021-04-11 10:12:00 -05:00
Geoff Bourne
9b7459ad5c Merged latest from master 2021-04-08 19:28:35 -05:00
Geoff Bourne
c9dc6012f6 Auto-merging via docker-versions-create 2021-04-01 16:40:16 -05:00
Geoff Bourne
a5aec72837 Added git
#819
2021-04-01 16:29:06 -05:00
Geoff Bourne
af38a8fc7a ci: removed armv7 build since 15-openj9 doesn't include it 2021-03-06 17:27:08 -06:00
Geoff Bourne
58fa3c897d Merge branch 'master' into java15-openj9 2021-03-06 17:23:02 -06:00
Geoff Bourne
e45621d8e2 ci: Added java15-openj9 branch 2021-03-06 17:22:36 -06:00
35 changed files with 263 additions and 452 deletions

View File

@@ -1,7 +0,0 @@
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

View File

@@ -2,61 +2,57 @@ name: Build and publish multiarch
on:
push:
branches:
- master
- "*-multiarch"
- "multiarch*"
- java8-openj9
- java11*
- java15*
- java16*
- multiarch
- java8-multiarch
- multiarch-latest
- java15
- java15-openj9
- test/multiarch/*
tags:
- "[0-9]+.[0-9]+.[0-9]+"
- "[0-9]+.[0-9]+.[0-9]+-multiarch*"
- "[0-9]+.[0-9]+.[0-9]+-*multiarch"
- "[0-9]+.[0-9]+.[0-9]+-java8-openj9"
- "[0-9]+.[0-9]+.[0-9]+-java11*"
- "[0-9]+.[0-9]+.[0-9]+-multiarch"
- "[0-9]+.[0-9]+.[0-9]+-multiarch-latest"
- "[0-9]+.[0-9]+.[0-9]+-java15"
- "[0-9]+.[0-9]+.[0-9]+-java16*"
paths-ignore:
- "*.md"
- "docs/**"
- "examples/**"
jobs:
docker-buildx:
runs-on: ubuntu-20.04
env:
CACHE_NAME: java8-openj9
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.2.0
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
images: |
itzg/minecraft-server
tags: |
type=ref,event=branch
type=ref,event=tag
type=edge,branch=master
- name: Prepare
id: prep
run: |
DOCKER_IMAGE=itzg/minecraft-server
VERSION=edge
if [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/}
fi
if [[ $GITHUB_REF == refs/heads/* ]]; then
VERSION=${GITHUB_REF#refs/heads/}
if [[ $VERSION == master ]]; then
VERSION=latest
fi
fi
TAGS="${DOCKER_IMAGE}:${VERSION//\//-}"
echo ::set-output name=tags::${TAGS}
echo ::set-output name=cache_from::${TAGS}
echo ::set-output name=version::${VERSION//\//-}
echo ::set-output name=cache_version::${VERSION//\//-}
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2.1.5
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ env.CACHE_NAME }}-${{ github.sha }}
key: ${{ runner.os }}-buildx-${{ steps.prep.outputs.cache_version }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-${{ env.CACHE_NAME }}-
${{ runner.os }}-buildx-
${{ runner.os }}-buildx-${{ steps.prep.outputs.cache_version }}-
- name: Set up QEMU
uses: docker/setup-qemu-action@v1.1.0
uses: docker/setup-qemu-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
@@ -66,17 +62,22 @@ jobs:
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2.4.0
uses: docker/build-push-action@v2
with:
context: .
platforms: linux/amd64
file: ./Dockerfile
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
tags: ${{ steps.prep.outputs.tags }}
# ensure latest base image is used
pull: true
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
labels: ${{ steps.meta.outputs.labels }}
labels: |
org.opencontainers.image.documentation=https://github.com/itzg/docker-minecraft-server
org.opencontainers.image.source=https://github.com/itzg/docker-minecraft-server
org.opencontainers.image.version=${{ steps.prep.outputs.version }}
org.opencontainers.image.revision=${{ github.sha }}
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}

View File

@@ -1,20 +0,0 @@
name: Generate README table of contents
on:
push:
branches:
- master
paths:
- README.md
jobs:
generate:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v2.3.4
- run: |
curl https://raw.githubusercontent.com/ekalinin/github-markdown-toc/master/gh-md-toc -o gh-md-toc
chmod a+x gh-md-toc
./gh-md-toc --insert --no-backup README.md
- uses: stefanzweifel/git-auto-commit-action@v4.11.0
with:
commit_message: "docs: Auto update markdown TOC"

View File

@@ -3,12 +3,14 @@ name: Build and Publish
on:
push:
branches:
- master
- java8
- openj9
- openj9-11
- adopt11
- test/*
tags:
- "[0-9]+.[0-9]+.[0-9]+"
- "[0-9]+.[0-9]+.[0-9]+-java8"
- "[0-9]+.[0-9]+.[0-9]+-openj9"
- "[0-9]+.[0-9]+.[0-9]+-openj9-11"
@@ -20,7 +22,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2.3.4
- uses: actions/checkout@v2
- name: Run tests
run: |
@@ -29,11 +31,9 @@ jobs:
needs:
- test
runs-on: ubuntu-20.04
env:
CACHE_NAME: java8-openj9
steps:
- uses: actions/checkout@v2.3.4
- uses: actions/checkout@v2
- name: Prepare
id: prep
@@ -59,12 +59,12 @@ jobs:
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2.1.5
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ env.CACHE_NAME }}-${{ github.sha }}
key: ${{ runner.os }}-buildx-${{ steps.prep.outputs.cache_version }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-${{ env.CACHE_NAME }}-
${{ runner.os }}-buildx-${{ steps.prep.outputs.cache_version }}-
${{ runner.os }}-buildx-
- name: Login to DockerHub
@@ -75,7 +75,7 @@ jobs:
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2.4.0
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile

View File

@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.4
- uses: actions/checkout@v2
- name: Run tests
run: |

3
.gitignore vendored
View File

@@ -1,4 +1,3 @@
/data/
/.idea/
*.iml
/gh-md-toc
*.iml

View File

@@ -1,4 +1,4 @@
FROM adoptopenjdk:8-jre-openj9
FROM adoptopenjdk:15-openj9
LABEL org.opencontainers.image.authors="Geoff Bourne <itzgeoff@gmail.com>"
@@ -84,6 +84,5 @@ RUN dos2unix /start* && chmod +x /start*
RUN dos2unix /health.sh && chmod +x /health.sh
RUN dos2unix /autopause/* && chmod +x /autopause/*.sh
ENTRYPOINT [ "/start" ]
HEALTHCHECK --start-period=1m CMD /health.sh

345
README.md
View File

@@ -38,115 +38,6 @@ With that you can easily view the logs, stop, or re-start the container:
> Be sure to always include `-e EULA=TRUE` in your commands, as Mojang/Microsoft requires EULA acceptance.
By default, the container will download the latest version of the "vanilla" [Minecraft: Java Edition server](https://www.minecraft.net/en-us/download/server) provided by Mojang. The [`VERSION`](#versions) and the [`TYPE`](#server-types) can be configured to create many variations of desired Minecraft server.
**TABLE OF CONTENTS**
<!--ts-->
* [Looking for a Bedrock Dedicated Server](#looking-for-a-bedrock-dedicated-server)
* [Interacting with the server](#interacting-with-the-server)
* [Data Directory](#data-directory)
* [Attaching data directory to host filesystem](#attaching-data-directory-to-host-filesystem)
* [Converting anonymous /data volume to named volume](#converting-anonymous-data-volume-to-named-volume)
* [Versions](#versions)
* [Running Minecraft server on different Java version](#running-minecraft-server-on-different-java-version)
* [Deprecated Image Tags](#deprecated-image-tags)
* [Healthcheck](#healthcheck)
* [Deployment Templates and Examples](#deployment-templates-and-examples)
* [Helm Charts](#helm-charts)
* [Examples](#examples)
* [Amazon Web Services (AWS) Deployment](#amazon-web-services-aws-deployment)
* [Server types](#server-types)
* [Running a Forge Server](#running-a-forge-server)
* [Running a Bukkit/Spigot server](#running-a-bukkitspigot-server)
* [Running a Paper server](#running-a-paper-server)
* [Running a Tuinity server](#running-a-tuinity-server)
* [Running an Airplane server](#running-an-airplane-server)
* [Running a Purpur server](#running-a-purpur-server)
* [Running a Yatopia server](#running-a-yatopia-server)
* [Running a Magma server](#running-a-magma-server)
* [Running a Mohist server](#running-a-mohist-server)
* [Running a Catserver type server](#running-a-catserver-type-server)
* [Running an Canyon server](#running-an-canyon-server)
* [Running a SpongeVanilla server](#running-a-spongevanilla-server)
* [Running a Fabric Server](#running-a-fabric-server)
* [Running a server with a Feed the Beast modpack](#running-a-server-with-a-feed-the-beast-modpack)
* [Environment Variables:](#environment-variables)
* [Upgrading](#upgrading)
* [Example](#example)
* [Running a server with a CurseForge modpack](#running-a-server-with-a-curseforge-modpack)
* [Modpack data directory](#modpack-data-directory)
* [Buggy start scripts](#buggy-start-scripts)
* [Fixing "unable to launch forgemodloader"](#fixing-unable-to-launch-forgemodloader)
* [Optional plugins, mods, and config attach points](#optional-plugins-mods-and-config-attach-points)
* [Auto-downloading SpigotMC/Bukkit/PaperMC plugins](#auto-downloading-spigotmcbukkitpapermc-plugins)
* [Replacing variables inside configs](#replacing-variables-inside-configs)
* [Running with a custom server JAR](#running-with-a-custom-server-jar)
* [Force re-download of the server file](#force-re-download-of-the-server-file)
* [Using Docker Compose](#using-docker-compose)
* [Server configuration](#server-configuration)
* [Server name](#server-name)
* [Server port](#server-port)
* [Difficulty](#difficulty)
* [Whitelist Players](#whitelist-players)
* [Op/Administrator Players](#opadministrator-players)
* [Server icon](#server-icon)
* [Rcon](#rcon)
* [Query](#query)
* [Max players](#max-players)
* [Max world size](#max-world-size)
* [Allow Nether](#allow-nether)
* [Announce Player Achievements](#announce-player-achievements)
* [Enable Command Block](#enable-command-block)
* [Force Gamemode](#force-gamemode)
* [Generate Structures](#generate-structures)
* [Hardcore](#hardcore)
* [Snooper](#snooper)
* [Max Build Height](#max-build-height)
* [Max Tick Time](#max-tick-time)
* [Spawn Animals](#spawn-animals)
* [Spawn Monsters](#spawn-monsters)
* [Spawn NPCs](#spawn-npcs)
* [Set spawn protection](#set-spawn-protection)
* [View Distance](#view-distance)
* [Level Seed](#level-seed)
* [Game Mode](#game-mode)
* [Message of the Day](#message-of-the-day)
* [PVP Mode](#pvp-mode)
* [Level Type and Generator Settings](#level-type-and-generator-settings)
* [Custom Server Resource Pack](#custom-server-resource-pack)
* [World Save Name](#world-save-name)
* [Downloadable world](#downloadable-world)
* [Cloning world from a container path](#cloning-world-from-a-container-path)
* [Overwrite world on start](#overwrite-world-on-start)
* [Downloadable mod/plugin pack for Forge, Bukkit, and Spigot Servers](#downloadable-modplugin-pack-for-forge-bukkit-and-spigot-servers)
* [Remove old mods/plugins](#remove-old-modsplugins)
* [Online mode](#online-mode)
* [Allow flight](#allow-flight)
* [Other server property mappings](#other-server-property-mappings)
* [Miscellaneous Options](#miscellaneous-options)
* [Running as alternate user/group ID](#running-as-alternate-usergroup-id)
* [Memory Limit](#memory-limit)
* [JVM Options](#jvm-options)
* [Interactive and Color Console](#interactive-and-color-console)
* [OpenJ9 Specific Options](#openj9-specific-options)
* [Enabling rolling logs](#enabling-rolling-logs)
* [Timezone Configuration](#timezone-configuration)
* [Enable Remote JMX for Profiling](#enable-remote-jmx-for-profiling)
* [Enable Aikar's Flags](#enable-aikars-flags)
* [HTTP Proxy](#http-proxy)
* [Using "noconsole" option](#using-noconsole-option)
* [Explicitly disable GUI](#explicitly-disable-gui)
* [Stop Duration](#stop-duration)
* [Autopause](#autopause)
* [Description](#description)
* [Enabling Autopause](#enabling-autopause)
* [Running on RaspberryPi](#running-on-raspberrypi)
<!-- Added by: runner, at: Sat May 22 03:44:26 UTC 2021 -->
<!--te-->
## Looking for a Bedrock Dedicated Server
For Minecraft clients running on consoles, mobile, or native Windows, you'll need to
@@ -210,7 +101,7 @@ When attached in this way you can stop the server, edit the configuration under
With Docker Compose, setting up a host attached directory is even easier since relative paths can be configured. For example, with the following `docker-compose.yml` Docker will automatically create/attach the relative directory `minecraft-data` to the container.
```yaml
version: "3.8"
version: "3"
services:
mc:
@@ -272,16 +163,15 @@ To use a different version of Java, please use a docker tag to run your Minecraf
| Tag name | Java version | Linux | JVM Type | Architecture |
| -------------- | -------------|--------|----------|-------------------|
| latest | 16 | Debian | Hotspot | amd64,arm64,armv7 |
| edge | 16 | Debian | Hotspot | amd64,arm64,armv7 |
| latest | 11 | Alpine | Hotspot | amd64 |
| java8 | 8 | Alpine | Hotspot | amd64 |
| java8-multiarch | 8 | Debian | Hotspot | amd64,arm64,armv7 |
| java8-openj9 | 8 | Debian | OpenJ9 | amd64 |
| java11 | 11 | Debian | Hotspot | amd64,arm64,armv7 |
| java11-openj9 | 11 | Debian | OpenJ9 | amd64 |
| java15 | 15 | Debian | Hotspot | amd64,arm64,armv7 |
| java16 | 16 | Debian | Hotspot | amd64,arm64,armv7 |
| java16-openj9 | 16 | Debian | OpenJ9 | amd64 |
| java15-openj9 | 15 | Debian | OpenJ9 | amd64,arm64 |
| adopt11 | 11 | Alpine | Hotspot | amd64 |
| openj9 | 8 | Alpine | OpenJ9 | amd64 |
| openj9-11 | 11 | Alpine | OpenJ9 | amd64 |
| multiarch | 11 | Debian | Hotspot | amd64,arm64,armv7 |
| multiarch-latest | 15+ | Debian | Hotspot | amd64,arm64,armv7 |
For example, to use Java version 15 on any supported architecture:
@@ -322,9 +212,7 @@ Some orchestration systems, such as Portainer, don't allow for disabling the def
### Helm Charts
- itzg Helm Chart:
- [GitHub repo](https://github.com/itzg/minecraft-server-charts)
- [Helm Chart repo](https://itzg.github.io/minecraft-server-charts/)
- [stable/minecraft](https://hub.helm.sh/charts/stable/minecraft) ([chart source](https://github.com/helm/charts/tree/master/stable/minecraft))
- [mcsh/server-deployment](https://github.com/mcserverhosting-net/charts)
### Examples
@@ -335,15 +223,13 @@ The [examples directory](https://github.com/itzg/docker-minecraft-server/tree/ma
If you're looking for a simple way to deploy this to the Amazon Web Services Cloud, check out the [Minecraft Server Deployment (CloudFormation) repository](https://github.com/vatertime/minecraft-spot-pricing). This repository contains a CloudFormation template that will get you up and running in AWS in a matter of minutes. Optionally it uses Spot Pricing so the server is very cheap, and you can easily turn it off when not in use.
## Server types
### Running a Forge Server
## Running a Forge Server
Enable [Forge server](http://www.minecraftforge.net/wiki/) mode by adding a `-e TYPE=FORGE` to your command-line.
The overall version is specified by `VERSION`, [as described in the section above](#versions) and will run the recommended Forge version by default. You can also choose to run a specific Forge version with `FORGEVERSION`, such as `-e FORGEVERSION=14.23.5.2854`.
docker run -d -v /path/on/host:/data \
$ docker run -d -v /path/on/host:/data \
-e TYPE=FORGE \
-e VERSION=1.12.2 -e FORGEVERSION=14.23.5.2854 \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
@@ -351,18 +237,36 @@ The overall version is specified by `VERSION`, [as described in the section abov
To use a pre-downloaded Forge installer, place it in the attached `/data` directory and
specify the name of the installer file with `FORGE_INSTALLER`, such as:
docker run -d -v /path/on/host:/data ... \
$ docker run -d -v /path/on/host:/data ... \
-e FORGE_INSTALLER=forge-1.11.2-13.20.0.2228-installer.jar ...
To download a Forge installer from a custom location, such as your own file repository, specify
the URL with `FORGE_INSTALLER_URL`, such as:
docker run -d -v /path/on/host:/data ... \
$ docker run -d -v /path/on/host:/data ... \
-e FORGE_INSTALLER_URL=http://HOST/forge-1.11.2-13.20.0.2228-installer.jar ...
In both of the cases above, there is no need for the `VERSION` or `FORGEVERSION` variables.
### Running a Bukkit/Spigot server
### Managing mods
In order to manage mods, you have two options:
1. [Attach a host directory to the /data path](#attaching-data-directory-to-host-filesystem) and manage the contents of the `mods` subdirectory
2. Using a mods-mount
If the container paths `/mods` and/or `/config` exist, such as by attaching a docker volume or host path, then any files in either of these directories will be copied over to the respective `/data` subdirectory before starting Minecraft.
If you want old mods to be removed as the `/mods` content is updated, then add `-e REMOVE_OLD_MODS=TRUE`. You can fine tune the removal process by specifying the `REMOVE_OLD_MODS_INCLUDE` and `REMOVE_OLD_MODS_EXCLUDE` variables. By default, everything will be removed. You can also specify the `REMOVE_OLD_MODS_DEPTH` (default is 16) variable to only delete files up to a certain level.
For example: `-e REMOVE_OLD_MODS=TRUE -e REMOVE_OLD_MODS_INCLUDE="*.jar" -e REMOVE_OLD_MODS_DEPTH=1` will remove all old jar files that are directly inside the `plugins/` or `mods/` directory.
You can specify the destination of the files that are copied from `/config` by setting the `COPY_CONFIG_DEST` variable, where the default is `/data/config`. For example, `-v ./config:/config -e COPY_CONFIG_DEST=/data` will allow you to copy over files like `bukkit.yml` and so on directly into the server directory.
> NOTE: If a file was updated in the destination path and is newer than the source file from `/config`, then it will not be overwritten.
## Running a Bukkit/Spigot server
Enable Bukkit/Spigot server mode by adding a `-e TYPE=BUKKIT` or `-e TYPE=SPIGOT` to your command-line.
@@ -383,7 +287,7 @@ Plugins can either be managed within the `plugins` subdirectory of the [data dir
> NOTE some of the `VERSION` values are not as intuitive as you would think, so make sure to click into the version entry to find the **exact** version needed for the download. For example, "1.8" is not sufficient since their download naming expects `1.8-R0.1-SNAPSHOT-latest` exactly.
### Running a Paper server
## Running a Paper server
Enable Paper server mode by adding a `-e TYPE=PAPER` to your command-line.
@@ -405,7 +309,7 @@ If you have attached a host directory to the `/data` volume, then you can instal
[You can also auto-download plugins using `SPIGET_RESOURCES`.](#auto-downloading-spigotmcbukkitpapermc-plugins)
### Running a Tuinity server
## Running a Tuinity server
A [Tuinity](https://github.com/Spottedleaf/Tuinity) server, which is a fork of Paper aimed at improving server performance at high playercounts.
@@ -413,7 +317,7 @@ A [Tuinity](https://github.com/Spottedleaf/Tuinity) server, which is a fork of P
> **NOTE** only `VERSION=LATEST` is supported
### Running an Airplane server
## Running an Airplane server
An [Airplane](https://github.com/TECHNOVE/Airplane) server, which is a fork of Tuinity aimed at further improving server performance at high playercounts.
@@ -427,7 +331,7 @@ Extra variables:
- `FORCE_REDOWNLOAD=false` : set to true to force the located server jar to be re-downloaded
- `USE_FLARE_FLAGS=false` : set to true to add appropriate flags for the [Flare](https://blog.airplane.gg/flare) profiler
### Running a Purpur server
## Running a Purpur server
A [Purpur](https://purpur.pl3x.net/) server, which is "a fork of Paper, Tuinity, Airplane with the goal of providing new and interesting configuration options".
@@ -440,7 +344,7 @@ Extra variables:
- `FORCE_REDOWNLOAD=false` : set to true to force the located server jar to be re-downloaded
- `USE_FLARE_FLAGS=false` : set to true to add appropriate flags for the [Flare](https://blog.airplane.gg/flare) profiler
### Running a Yatopia server
## Running a Yatopia server
A [Yatopia](https://github.com/YatopiaMC/Yatopia) server, which is a "blazing fast Tuinity fork with best in class performance".
@@ -453,7 +357,7 @@ Extra variables:
- `FORCE_REDOWNLOAD=false` : set to true to force the located server jar to be re-downloaded
- `USE_FLARE_FLAGS=false` : set to true to add appropriate flags for the [Flare](https://blog.airplane.gg/flare) profiler
### Running a Magma server
## Running a Magma server
A [Magma](https://magmafoundation.org/) server, which is a combination of Forge and PaperMC, can be used with
@@ -462,9 +366,9 @@ 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 Mohist server
## Running a Mohist server
A [Mohist](https://github.com/MohistMC/Mohist) server can be used with
A [Mohist](https://github.com/Mohist-Community/Mohist) server can be used with
-e TYPE=MOHIST
@@ -474,7 +378,7 @@ By default the latest build will be used; however, a specific build number can b
-e VERSION=1.16.5 -e MOHIST_BUILD=374
### Running a Catserver type server
## Running a Catserver type server
A [Catserver](http://catserver.moe/) type server can be used with
@@ -482,63 +386,6 @@ A [Catserver](http://catserver.moe/) type server can be used with
> **NOTE** Catserver only provides a single release stream, so `VERSION` is ignored
### Running an Canyon server
[Canyon](https://github.com/canyonmodded/canyon) is a fork of CraftBukkit for Minecraft Beta 1.7.3. It includes multiple enhancements whilst also retaining compatibility with old Bukkit plugins and mods as much as possible.
-e VERSION=b1.7.3 -e TYPE=CANYON
> **NOTE** only `VERSION=b1.7.3` is supported
> **NOTE** only Java 8 is supported
By default the latest build will be used; however, a specific build number can be selected by setting `CANYON_BUILD`, such as
-e CANYON_BUILD=11
### Running a SpongeVanilla server
Enable SpongeVanilla server mode by adding a `-e TYPE=SPONGEVANILLA` to your command-line.
By default the container will run the latest `STABLE` version.
If you want to run a specific version, you can add `-e SPONGEVERSION=1.11.2-6.1.0-BETA-19` to your command-line.
docker run -d -v /path/on/host:/data -e TYPE=SPONGEVANILLA \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
You can also choose to use the `EXPERIMENTAL` branch.
Just change it with `SPONGEBRANCH`, such as:
$ docker run -d -v /path/on/host:/data ... \
-e TYPE=SPONGEVANILLA -e SPONGEBRANCH=EXPERIMENTAL ...
### Running a Fabric Server
Enable [Fabric server](http://fabricmc.net/use/) mode by adding a `-e TYPE=FABRIC` to your command-line. By default, the container will run the latest version, but you can also choose to run a specific version with `VERSION`.
```
docker run -d -v /path/on/host:/data \
-e TYPE=FABRIC \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
```
A specific installer version can be requested using `FABRIC_INSTALLER_VERSION`.
To use a pre-downloaded Fabric installer, place it in a directory attached into the container, such as the `/data` volume and specify the name of the installer file with `FABRIC_INSTALLER`, such as:
```
docker run -d -v /path/on/host:/data ... \
-e FABRIC_INSTALLER=fabric-installer-0.5.0.32.jar ...
```
To download a Fabric installer from a custom location, such as your own file repository, specify the URL with `FABRIC_INSTALLER_URL`, such as:
```
docker run -d -v /path/on/host:/data ... \
-e FABRIC_INSTALLER_URL=http://HOST/fabric-installer-0.5.0.32.jar ...
```
In order to add mods, you have two options:
## Running a server with a Feed the Beast modpack
> **NOTE** requires one of the Debian based images listed in [the Java versions section](#running-minecraft-server-on-different-java-version).
@@ -610,28 +457,94 @@ then you apply a workaround by adding this to the run invocation:
-e FTB_LEGACYJAVAFIXER=true
## Optional plugins, mods, and config attach points
## Running a SpongeVanilla server
There are optional volume paths that can be attached to supply content to be copied into the data area:
Enable SpongeVanilla server mode by adding a `-e TYPE=SPONGEVANILLA` to your command-line.
By default the container will run the latest `STABLE` version.
If you want to run a specific version, you can add `-e SPONGEVERSION=1.11.2-6.1.0-BETA-19` to your command-line.
`/plugins`
: contents are copied into `/data/plugins` for Bukkit related server types. Set `PLUGINS_SYNC_UPDATE=false` if you want files from `/plugins` to take precedence over newer files in `/data/plugins`.
docker run -d -v /path/on/host:/data -e TYPE=SPONGEVANILLA \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
`/mods`
: contents are copied into `/data/mods` for Forge related server types
You can also choose to use the `EXPERIMENTAL` branch.
Just change it with `SPONGEBRANCH`, such as:
`/config`
: contents are copied into `/data/config` by default, but can be changed with `COPY_CONFIG_DEST`
$ docker run -d -v /path/on/host:/data ... \
-e TYPE=SPONGEVANILLA -e SPONGEBRANCH=EXPERIMENTAL ...
If you want old mods/plugins to be removed before the content is brought over from those attach points, then add `-e REMOVE_OLD_MODS=TRUE`. You can fine tune the removal process by specifying the `REMOVE_OLD_MODS_INCLUDE` and `REMOVE_OLD_MODS_EXCLUDE` variables. By default, everything will be removed. You can also specify the `REMOVE_OLD_MODS_DEPTH` (default is 16) variable to only delete files up to a certain level.
## Running a Fabric Server
For example: `-e REMOVE_OLD_MODS=TRUE -e REMOVE_OLD_MODS_INCLUDE="*.jar" -e REMOVE_OLD_MODS_DEPTH=1` will remove all old jar files that are directly inside the `plugins/` or `mods/` directory.
Enable [Fabric server](http://fabricmc.net/use/) mode by adding a `-e TYPE=FABRIC` to your command-line. By default, the container will run the latest version, but you can also choose to run a specific version with `VERSION`.
You can specify the destination of the files that are copied from `/mods` and `/config` by setting the `COPY_MODS_DEST` and `COPY_CONFIG_DEST`, where the default is `/data/mods` and `/data/config`. For example, `-v ./config:/config -e COPY_CONFIG_DEST=/data` will allow you to copy over files like `bukkit.yml` and so on directly into the server directory.
```
docker run -d -v /path/on/host:/data \
-e TYPE=FABRIC \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
```
These paths work well if you want to have a common set of modules in a separate location, but still have multiple worlds with different server requirements in either persistent volumes or a downloadable archive.
A specific installer version can be requested using `FABRIC_INSTALLER_VERSION`.
> For more flexibility with mods/plugins preparation, you can declare directories to use in [the `MODS` variable](#downloadable-modplugin-pack-for-forge-bukkit-and-spigot-servers)
To use a pre-downloaded Fabric installer, place it in a directory attached into the container, such as the `/data` volume and specify the name of the installer file with `FABRIC_INSTALLER`, such as:
```
docker run -d -v /path/on/host:/data ... \
-e FABRIC_INSTALLER=fabric-installer-0.5.0.32.jar ...
```
To download a Fabric installer from a custom location, such as your own file repository, specify the URL with `FABRIC_INSTALLER_URL`, such as:
```
docker run -d -v /path/on/host:/data ... \
-e FABRIC_INSTALLER_URL=http://HOST/fabric-installer-0.5.0.32.jar ...
```
In order to add mods, you have two options:
### Using the /data volume
This is the easiest way if you are using a persistent `/data` mount.
To do this, you will need to attach the container's `/data` directory
(see "Attaching data directory to host filesystem”).
Then, you can add mods to the `/path/on/host/mods` folder you chose. From the example above,
the `/path/on/host` folder contents look like:
```
/path/on/host
├── mods
│   └── ... INSTALL MODS HERE ...
├── config
│   └── ... CONFIGURE MODS HERE ...
├── ops.json
├── server.properties
├── whitelist.json
└── ...
```
If you add mods while the container is running, you'll need to restart it to pick those
up:
docker stop mc
docker start mc
### Using separate mounts
This is the easiest way if you are using an ephemeral `/data` filesystem,
or downloading a world with the `WORLD` option.
There are two additional volumes that can be mounted; `/mods` and `/config`.
Any files in either of these filesystems will be copied over to the main
`/data` filesystem before starting Minecraft.
This works well if you want to have a common set of modules in a separate
location, but still have multiple worlds with different server requirements
in either persistent volumes or a downloadable archive.
## Deploying plugins from attached volume
If the `/plugins` directory exists in the container, such as from an attached volume, any files in this directory will be copied over to `/data/plugins` before starting Minecraft. Set `PLUGINS_SYNC_UPDATE=false` if you want files from `/plugins` to take precedence over newer files in `/data/plugins`.
This works well if you want to have a common set of plugins in a separate location, but still have multiple worlds with different server requirements in either persistent volumes or a downloadable archive.
## Auto-downloading SpigotMC/Bukkit/PaperMC plugins
@@ -703,7 +616,7 @@ database:
This is how your `docker-compose.yml` file could look like:
```yml
version: "3.8"
version: "3"
# Other docker-compose examples in /examples
services:
@@ -778,9 +691,7 @@ every time you want to create new Minecraft server, you can now use
[Docker Compose](https://docs.docker.com/compose/). Start with a
`docker-compose.yml` file like the following:
```yml
version: "3.8"
```
minecraft-server:
image: itzg/minecraft-server
@@ -1109,7 +1020,7 @@ The world will only be downloaded or copied if it doesn't exist already. Set `FO
### Downloadable mod/plugin pack for Forge, Bukkit, and Spigot Servers
Like the `WORLD` option above, you can specify the URL or path of a "mod pack"
Like the `WORLD` option above, you can specify the URL of a "mod pack"
to download and install into `mods` for Forge or `plugins` for Bukkit/Spigot.
To use this option pass the environment variable `MODPACK`, such as
@@ -1119,12 +1030,10 @@ To use this option pass the environment variable `MODPACK`, such as
top level of the zip archive. Make sure the jars are compatible with the
particular `TYPE` of server you are running.
You may also download or copy over individual mods using the `MODS` environment variable. `MODS` contains a comma-separated list of
- URL of a jar file
- container path to a jar file
- container path to a directory containing jar files
You may also download individual mods using the `MODS` environment variable and supplying the URL
to the jar files. Multiple mods/plugins should be comma separated.
docker run -d -e MODS=https://www.example.com/mods/mod1.jar,/plugins/common,/plugins/special/mod2.jar ...
docker run -d -e MODS=https://www.example.com/mods/mod1.jar,https://www.example.com/mods/mod2.jar ...
### Remove old mods/plugins
@@ -1334,7 +1243,9 @@ The following environment variables define the behaviour of auto-pausing:
## Running on RaspberryPi
To run this image on a RaspberryPi 3 B+, 4, or newer, use any of the image tags [list in the Java version section](#running-minecraft-server-on-different-java-version) that specify `armv7` for the architecture, which includes `itzg/minecraft-server:latest`.
To run this image on a RaspberryPi 3 B+, 4, or newer, use any of the image tags [list in the Java version section](#running-minecraft-server-on-different-java-version) that specify `armv7` for the architecture, such as
itzg/minecraft-server:multiarch
> NOTE: you may need to lower the memory allocation, such as `-e MEMORY=750m`

View File

@@ -4,12 +4,12 @@
branches_list=(
'java8'
'java8-multiarch'
'java8-openj9'
'java11'
'java11-openj9'
'openj9'
'openj9-11'
'adopt11'
'java15'
'java16'
'java16-openj9'
'java15-openj9'
'multiarch'
'multiarch-latest'
)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

View File

@@ -1,4 +1,4 @@
version: '3.8'
version: '3'
services:
minecraft:

View File

@@ -1,4 +1,4 @@
version: '3.8'
version: '3.2'
services:
mc:

View File

@@ -1,4 +1,4 @@
version: "3.8"
version: "3.7"
services:
mc:

View File

@@ -1,4 +1,4 @@
version: "3.8"
version: "3.7"
services:
mc:

View File

@@ -1,4 +1,4 @@
version: '3.8'
version: '3.7'
services:
mc:

View File

@@ -1,4 +1,4 @@
version: '3.8'
version: '3'
services:
mc:

View File

@@ -1,4 +1,4 @@
version: "3.8"
version: "3"
services:
mc:

View File

@@ -1,4 +1,4 @@
version: '3.8'
version: '3'
# Forge with Sponge API support. THIS REQUIRES DOWNLOADING SPONGEFORGE.
# Place the SpongeForge jar file in /data/mods. Other Forge mods go here as well.
# Place Sponge mods in /data/mods/plugins. Yes, this is a directory inside the Forge mod directory. Do NOT use /data/plugins.

View File

@@ -1,4 +1,4 @@
version: "3.8"
version: "3.7"
services:
mc:

View File

@@ -98,6 +98,12 @@ case "${TYPE^^}" in
;;
FORGE)
log "**********************************************************************"
log "WARNING: The image tag itzg/minecraft-server:java8 is recommended"
log " since some mods require Java 8"
log " Exception traces reporting ClassCastException: class jdk.internal.loader.ClassLoaders\$AppClassLoader"
log " can be fixed with java8"
log "**********************************************************************"
exec ${SCRIPTS:-/}start-deployForge "$@"
;;
@@ -110,6 +116,12 @@ case "${TYPE^^}" in
;;
FTB|CURSEFORGE)
log "**********************************************************************"
log "WARNING: The image tag itzg/minecraft-server:java8 is recommended"
log " since some mods require Java 8"
log " Exception traces reporting ClassCastException: class jdk.internal.loader.ClassLoaders\$AppClassLoader"
log " can be fixed with java8"
log "**********************************************************************"
exec ${SCRIPTS:-/}start-deployCF "$@"
;;
@@ -148,20 +160,16 @@ case "${TYPE^^}" in
YATOPIA)
exec ${SCRIPTS:-/}start-deployYatopia "$@"
;;
AIRPLANE)
AIRPLANE)
exec ${SCRIPTS:-/}start-deployAirplane "$@"
;;
CANYON)
exec ${SCRIPTS:-/}start-deployCanyon "$@"
;;
*)
log "Invalid type: '$TYPE'"
log "Must be: VANILLA, FORGE, BUKKIT, SPIGOT, PAPER, FTBA (multiarch-only),"
log " CURSE_INSTANCE, CURSEFORGE, SPONGEVANILLA, TUINITY, PURPUR"
log " CUSTOM, MAGMA, MOHIST, CATSERVER, YATOPIA, AIRPLANE, CANYON"
log " CUSTOM, MAGMA, MOHIST, CATSERVER, YATOPIA, AIRPLANE"
exit 1
;;

View File

@@ -33,4 +33,5 @@ fi
export TYPE=SPIGOT
export SKIP_LOG4J_CONFIG=true
exec ${SCRIPTS:-/}start-spiget "$@"
# Continue to Final Setup
exec ${SCRIPTS:-/}start-finalSetupWorld $@

View File

@@ -60,7 +60,7 @@ if ! isTrue ${USE_MODPACK_START_SCRIPT:-true}; then
mkdir -p ${FTB_BASE_DIR}
unzip -o "${FTB_SERVER_MOD}" -d ${FTB_BASE_DIR} | awk '{printf "."} END {print ""}'
serverJar=$(find ${FTB_BASE_DIR} -type f \( -path "*/libraries/*" -o -path "*/mods/*" \) -prune -o -name "forge*.jar" -not -name "forge*installer.jar" -print)
serverJar=$(find ${FTB_BASE_DIR} -path "*/libraries/*" -prune -type f -o -not -name "forge*installer.jar" -name "forge*.jar")
if [[ -z "$serverJar" ]]; then
if [ -f "${FTB_BASE_DIR}/settings.cfg" ]; then
@@ -91,7 +91,7 @@ if ! isTrue ${USE_MODPACK_START_SCRIPT:-true}; then
echo "${FTB_SERVER_MOD}" > $installMarker
fi
export SERVER=$(find ${FTB_BASE_DIR} -type f \( -path "*/libraries/*" -o -path "*/mods/*" \) -prune -o -name "forge*.jar" -not -name "forge*installer.jar" -print)
export SERVER=$(find ${FTB_BASE_DIR} -path "*/libraries/*" -prune -type f -o -not -name "forge*installer.jar" -name "forge*.jar")
if [[ -z "${SERVER}" || ! -f "${SERVER}" ]]; then
log "ERROR unable to locate installed forge server jar"
isDebugging && find ${FTB_BASE_DIR} -name "forge*.jar"
@@ -109,7 +109,6 @@ entryScriptExpr="
-o -name ServerStartLinux.sh
-o -name LaunchServer.sh
-o -name server-start.sh
-o -name start-server.sh
-o -name startserver.sh
-o -name StartServer.sh
"
@@ -168,16 +167,6 @@ if [[ $startScriptCount = 0 ]]; then
log "Unpacking FTB server modpack ${srv_modpack} ..."
mkdir -p ${FTB_BASE_DIR}
unzip -o "${srv_modpack}" -d ${FTB_BASE_DIR} | awk '{printf "."} END {print ""}'
installScript=$(find "${FTB_BASE_DIR}" -maxdepth 2 -type f -name install.sh)
if [[ "$installScript" ]]; then
(
cd "$(dirname "${installScript}")"
chmod +x ./install.sh
log "Running included install.sh"
./install.sh
)
fi
fi
if [[ $(find ${FTB_BASE_DIR} $entryScriptExpr | wc -l) = 0 ]]; then

View File

@@ -1,54 +0,0 @@
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
. ${SCRIPTS:-/}start-utils
isDebugging && set -x
: ${CANYON_BUILD:=lastSuccessfulBuild}
JAVA_VER=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1)
if [ "${JAVA_VER}" != "8" ]; then
log "ERROR: Canyon server type only supports Java version 8"
exit 1
fi
if [ "${VERSION}" != "b1.7.3" ]; then
log "ERROR: Canyon server type only supports VERSION=b1.7.3"
exit 1
fi
canyonJob="https://ci.velocitypowered.com/job/Canyon"
buildRelPath=$(
curl -fsSL "${canyonJob}/${CANYON_BUILD}/api/json" |
jq -r '.artifacts[0].relativePath'
)
buildNumber=$(
curl -fsSL "${canyonJob}/${CANYON_BUILD}/api/json" |
jq -r '.number'
)
baseName=$(basename "${buildRelPath}")
# Add build tag to non-tagged builds for version detection
if [ ${baseName%.*} = 'canyon-server' ]; then
export SERVER=${baseName%.*}_build${buildNumber}.jar
else
export SERVER="${baseName}"
fi
if [ ! -f "$SERVER" ]; then
downloadUrl="${canyonJob}/${CANYON_BUILD}/artifact/${buildRelPath}"
log "Downloading Canyon build ${buildNumber} from $downloadUrl ..."
curl -fsSL -o "$SERVER" "$downloadUrl"
if [ ! -f "$SERVER" ]; then
log "ERROR: failed to download from $downloadUrl (status=$?)"
exit 3
fi
fi
# Normalize on Spigot for later operations
export TYPE=SPIGOT
export SKIP_LOG4J_CONFIG=true
exec ${SCRIPTS:-/}start-spiget "$@"

View File

@@ -8,12 +8,12 @@ isDebugging && set -x
requireVar VANILLA_VERSION
: ${MOHIST_BUILD:=lastSuccessfulBuild}
mohistJobs=https://ci.codemc.io/job/MohistMC/job/
mohistJobs=https://ci.codemc.io/job/Mohist-Community/job/
mohistJob=${mohistJobs}Mohist-${VANILLA_VERSION}/
if ! curl -X HEAD -o /dev/null -fsSL "${mohistJob}"; then
log "ERROR: mohist builds do not exist for ${VANILLA_VERSION}"
log " check https://ci.codemc.io/job/MohistMC/ for available versions"
log " check https://ci.codemc.io/job/Mohist-Community/ for available versions"
log " and set VERSION accordingly"
exit 1
fi
@@ -26,7 +26,7 @@ buildRelPath=$(
baseName=$(basename "${buildRelPath}")
if [[ ${baseName} != *-server.jar* ]]; then
log "ERROR: mohist build for ${VANILLA_VERSION} is not a valid server jar, found ${baseName}"
log " check https://ci.codemc.io/job/MohistMC/ for available versions"
log " check https://ci.codemc.io/job/Mohist-Community/ for available versions"
log " and set VERSION accordingly"
exit 1
fi

View File

@@ -34,4 +34,5 @@ fi
export TYPE=SPIGOT
export SKIP_LOG4J_CONFIG=true
exec ${SCRIPTS:-/}start-spiget "$@"
# Continue to Final Setup
exec ${SCRIPTS:-/}start-finalSetupWorld $@

View File

@@ -23,4 +23,5 @@ fi
# Normalize on Spigot for later operations
export TYPE=SPIGOT
exec ${SCRIPTS:-/}start-spiget "$@"
# Continue to Final Setup
exec ${SCRIPTS:-/}start-finalSetupWorld $@

View File

@@ -42,7 +42,7 @@ if isTrue "${REPLACE_ENV_VARIABLES}"; then
$dirExcludes \
-type f \
\( -name "*.yml" -or -name "*.yaml" -or -name "*.txt" -or -name "*.cfg" \
-or -name "*.conf" -or -name "*.properties" -or -name "*.hjson" -or -name "*.json" \) \
-or -name "*.conf" -or -name "*.properties" \) \
$fileExcludes \
-exec sed -i 's#${'"$name"'}#'"$value"'#g' {} \;
done

View File

@@ -11,9 +11,21 @@ fi
CURSE_URL_BASE=${CURSE_URL_BASE:-https://minecraft.curseforge.com/projects}
# Remove old mods/plugins
if isTrue ${REMOVE_OLD_MODS:-false}; then
removeOldMods /data/mods
removeOldMods /data/plugins
if isTrue ${REMOVE_OLD_MODS}; then
remove_mods_dest="/data/mods"
case ${TYPE} in
SPIGOT|BUKKIT|PAPER)
remove_mods_dest="/data/plugins"
;;
esac
# only try to remove existing mods dir
if [ -d "$remove_mods_dest" ]; then
log "Removing old mods in $remove_mods_dest..."
find $remove_mods_dest -mindepth 1 -maxdepth ${REMOVE_OLD_MODS_DEPTH:-16} -wholename "${REMOVE_OLD_MODS_INCLUDE:-*}" -not -wholename "${REMOVE_OLD_MODS_EXCLUDE}" -delete
else
log "Directory $remove_mods_dest does not exist; removing nothing."
fi
fi
# If supplied with a URL for a modpack (simple zip of jars), download it and unpack
@@ -25,39 +37,35 @@ if [[ "$MODPACK" ]]; then
downloadUrl=$(curl -Ls -o /dev/null -w %{effective_url} $MODPACK)
if ! [[ $downloadUrl == *.zip ]]; then
log "ERROR Invalid URL given for MODPACK: $downloadUrl resolved from $MODPACK"
log " Must be HTTP, HTTPS or FTP and a ZIP file"
log " Must be HTTP or HTTPS and a ZIP file"
exit 1
fi
fi
log "Downloading mod/plugin pack"
log "Downloading mod/plugin pack via HTTP"
log " from $downloadUrl ..."
if ! curl -sSL -o /tmp/modpack.zip "$downloadUrl"; then
log "ERROR: failed to download from $downloadUrl"
exit 2
fi
elif [[ "$MODPACK" =~ .*\.zip ]]; then
if ! cp $MODPACK /tmp/modpack.zip; then
log "ERROR: failed to copy from $MODPACK"
exit 2
if [ "$TYPE" = "SPIGOT" ]; then
mkdir -p /data/plugins
if ! unzip -o -d /data/plugins /tmp/modpack.zip; then
log "ERROR: failed to unzip the modpack from $downloadUrl"
fi
else
mkdir -p /data/mods
if ! unzip -o -d /data/mods /tmp/modpack.zip; then
log "ERROR: failed to unzip the modpack from $downloadUrl"
fi
fi
rm -f /tmp/modpack.zip
else
log "ERROR Invalid URL or Path given for MODPACK: $MODPACK"
log "ERROR Invalid URL given for MODPACK: $MODPACK"
exit 1
fi
if [ "$TYPE" = "SPIGOT" ]; then
mkdir -p /data/plugins
if ! unzip -o -d /data/plugins /tmp/modpack.zip; then
log "ERROR: failed to unzip the modpack from $downloadUrl"
fi
else
mkdir -p /data/mods
if ! unzip -o -d /data/mods /tmp/modpack.zip; then
log "ERROR: failed to unzip the modpack from $downloadUrl"
fi
fi
rm -f /tmp/modpack.zip
fi
# If supplied with a URL for a plugin download it.
@@ -91,18 +99,8 @@ if [[ "$MODS" ]]; then
exit 2
fi
fi
elif [[ -f "$i" && "$i" =~ .*\.jar ]]; then
log "Copying plugin located at $i ..."
out_file=$(basename "$i")
if ! cp "$i" "${out_dir}/$out_file"; then
log "ERROR: failed to copy from $i into $out_dir"
exit 2
fi
elif [[ -d "$i" ]]; then
log "Copying plugin jars from $i ..."
cp "$i"/*.jar "${out_dir}"
else
log "ERROR Invalid URL or path given in MODS: $i"
log "ERROR Invalid URL given in MODS: $i"
exit 2
fi
done

View File

@@ -21,12 +21,10 @@ if [ -d /plugins ]; then
fi
# If any modules have been provided, copy them over
: ${COPY_MODS_DEST:="/data/mods"}
if [ -d /mods ]; then
log "Copying any mods over..."
mkdir -p $COPY_MODS_DEST
rsync -a --out-format="update:%f:Last Modified %M" "${rsyncArgs[@]}" --prune-empty-dirs --update /mods/ $COPY_MODS_DEST
mkdir -p /data/mods
rsync -a --out-format="update:%f:Last Modified %M" "${rsyncArgs[@]}" --prune-empty-dirs --update /mods /data
fi
: ${COPY_CONFIG_DEST:="/data/config"}

View File

@@ -181,8 +181,8 @@ function customizeServerProps {
}
# Deploy server.properties file
if [[ ${TYPE} == "CURSEFORGE" ]]; then
export SERVER_PROPERTIES="${FTB_DIR}/server.properties"
if [[ ${TYPE} == "FEED-THE-BEAST" ]]; then
export SERVER_PROPERTIES=${FTB_DIR}/server.properties
log "detected FTB, changing properties path to ${SERVER_PROPERTIES}"
fi
@@ -214,7 +214,7 @@ fi
if isDebugging; then
log "DEBUG Dumping server.properties"
cat "${SERVER_PROPERTIES}"
cat /data/server.properties
fi
exec ${SCRIPTS:-/}start-finalSetupEnvVariables $@

View File

@@ -7,7 +7,7 @@ isDebugging && set -x
: ${LEVEL:=world}
export LEVEL
if [ $TYPE = "CURSEFORGE" ]; then
if [ $TYPE = "FEED-THE-BEAST" ]; then
worldDest=$FTB_DIR/$LEVEL
else
worldDest=/data/$LEVEL

View File

@@ -246,4 +246,3 @@ else
exec mc-server-runner ${bootstrapArgs} ${mcServerRunnerArgs} java "${finalArgs[@]}"
fi
fi

View File

@@ -16,7 +16,7 @@ containsJars() {
if [[ $line =~ $pat ]]; then
return 0
fi
done <<<$(unzip -l "$file")
done <<< $(unzip -l "$file")
return 1
}
@@ -46,14 +46,10 @@ getResourceFromSpiget() {
}
if [[ ${SPIGET_RESOURCES} ]]; then
if isTrue ${REMOVE_OLD_MODS:-false}; then
removeOldMods /data/plugins
REMOVE_OLD_MODS=false
fi
log "Getting plugins via Spiget"
IFS=',' read -r -a resources <<<"${SPIGET_RESOURCES}"
for resource in "${resources[@]}"; do
IFS=',' read -r -a resources <<< "${SPIGET_RESOURCES}"
for resource in "${resources[@]}"
do
getResourceFromSpiget "${resource}"
done
fi

View File

@@ -11,7 +11,7 @@ function join_by() {
function isURL() {
local value=$1
if [[ ${value:0:8} == "https://" || ${value:0:7} == "http://" || ${value:0:6} == "ftp://" ]]; then
if [[ ${value:0:8} == "https://" || ${value:0:7} == "http://" ]]; then
return 0
else
return 1
@@ -174,9 +174,3 @@ eula=${EULA,,}
exit 2
fi
}
function removeOldMods {
if [ -d "$1" ]; then
find "$1" -mindepth 1 -maxdepth ${REMOVE_OLD_MODS_DEPTH:-16} -wholename "${REMOVE_OLD_MODS_INCLUDE:-*}" -not -wholename "${REMOVE_OLD_MODS_EXCLUDE:-}" -delete
fi
}

View File

@@ -10,9 +10,6 @@ services:
restart: "no"
build:
context: ..
args:
TARGETOS: linux
TARGETARCH: amd64
cache_from:
- itzg/minecraft-server:latest
environment: