# Multicraft Jar Configurations
This repository contains the Multicraft jar configuration files that are used in conjunction with the [java-multi-version](https://git.jrdn.dev/jordanwalster/-/packages/container/java-multi-version/latest) docker image.
This allows Multicraft to utilise the built in docker feature whilst maintaining the ability to run different versions of Minecraft, since the `multicraft.conf` forces the selection of a single jdk image.
## How to use
The configurations from this repo can be used with a bare metal installation of Multicraft, but my preferred method is using Docker-in-Docker, allowing the entire minecraft stack to be containerised.
1. Grab your key from Multicraft and store it in the root directory.
2. Run Multicraft using the [multicraft-docker](https://git.jrdn.dev/jordanwalster/-/packages/container/multicraft-docker/latest) image and the accompanying `docker-compose.yml` & `.env` files.
3. Navigate to the `install.php` file and complete the setup matching the values to the `.env` file.
4. Once setup is complete, navigate to Settings > Update Minecraft > Add or Remove Files
- In the JAR Filename, File URL and Conf URL fields, enter the chosen file: e.g.
- JAR Filename: `paper-1.21.4.jar`
- File URL: `https://mc-assets.jrdn.dev/jar/paper-1.21.4.jar`
- Conf URL: `https://mc-assets.jrdn.dev/conf/paper-1.21.4.jar.conf`
All configuration files are in the /conf path, matching their corresponding `.jar` files in /jar, with the same name plus a `.conf` extension.
### Docker compose and .env file
#### docker-compose.yml
```
services:
multicraft:
image: git.jrdn.dev/jordanwalster/multicraft-docker:latest
ports:
- 80:80
- target: 21
published: 21
mode: host
volumes:
- ${BASE_DIR}/web-data:/var/www/html
- ${BASE_DIR}/multicraft/jar:/multicraft/jar
- ${BASE_DIR}/multicraft/servers:/multicraft/servers
- ${BASE_DIR}/multicraft/templates:/multicraft/templates
- ${BASE_DIR}/multicraft.key:/multicraft/multicraft.key
- /var/run/docker.sock:/var/run/docker.sock
environment:
- BASE_DIR=${BASE_DIR}
- SERVER_MEMORY=${SERVER_MEMORY}
- JDK_IMAGE=git.jrdn.dev/jordanwalster/java-multi-version:latest
- MYSQL_USER=${MYSQL_USER}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
networks:
- multicraft
depends_on:
- db
db:
image: mariadb
volumes:
- ${BASE_DIR}/db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
networks:
- multicraft
networks:
multicraft:
driver: bridge
```
#### .env
```
BASE_DIR=/path/to/data
SERVER_MEMORY=2048
MYSQL_USER=multicraft
MYSQL_DATABASE=multicraft
MYSQL_PASSWORD=changeme
MYSQL_ROOT_PASSWORD=changeme
```