#!/bin/bash

NOMECONTAINER="minecraft-server-1"

SECRET_0=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12)

docker_repo="itzg/minecraft-server"
imagem="minecraft"

CustmN2="local_ip"
CustmN3="servidor_dns"
CustmN4="version"
CustmN5="port"
CustmN6="difficulty"
CustmN7="gamemode"
CustmN8="rcon_pass"
CustmN9="rcon_port"
CustmN10="memory"

VALUE2="0.0.0.0"
VALUE3="8.8.4.4"
VALUE4="1.21.9"
VALUE5="25565"
VALUE6="normal"
VALUE7="survival"
VALUE8="$SECRET_0"
VALUE9="25575"
VALUE10="8G"

export NOMECONTAINER docker_repo imagem
export CustmN2 CustmN3 CustmN4 CustmN5 CustmN6 CustmN7 CustmN8 CustmN9 CustmN10
export VALUE2 VALUE3 VALUE4 VALUE5 VALUE6 VALUE7 VALUE8 VALUE9 VALUE10

source /root/.index.sh

if [ -f /tmp/common-functions.sh ]; then
  source /tmp/common-functions.sh
else
  echo "ERRO: common-functions.sh não encontrado!"
  exit 1
fi

function set_mkdir {
  sudo mkdir -p /srv/containers/"$NOMECONTAINER"/{data,mods}
:; }

function docker_create {
  local ip_regex="^([0-9]{1,3}\.){3}[0-9]{1,3}$"

  # Se NAO for numerico, execute como host!
  if [[ ! "$VALUE2" =~ $ip_regex ]]; then

    docker run -d --name="$NOMECONTAINER" --hostname="$NOMECONTAINER" \
    --network host \
    --no-healthcheck --restart=unless-stopped -v /etc/localtime:/etc/localtime:ro \
    --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 \
    -v "/srv/containers/$NOMECONTAINER/data:/data" \
    -v "/srv/containers/$NOMECONTAINER/mods:/mods" \
    -e EULA=TRUE \
    -e ENABLE_LAN_VISIBILITY=true \
    -e OVERRIDE_WHITELIST=true \
    -e ENABLE_RCON="true" \
    -e ONLINE_MODE=false \
    -e NETWORK_COMPRESSION_THRESHOLD=512 \
    -e RCON_PASSWORD="$VALUE8" \
    -e RCON_PORT=25575 \
    -e SERVER_PORT="$VALUE5" \
    -e DIFFICULTY="$VALUE6" \
    -e VERSION="$VALUE4" \
    -e MEMORY="$VALUE10" \
    -e GAMEMODE="$VALUE7" \
    -p 0.0.0.0:25565:25565 \
    "$docker_repo"

    return
  fi

  docker run -d --name="$NOMECONTAINER" --hostname="$NOMECONTAINER" \
  --network macvlan --ip="$VALUE2" --dns="$VALUE3" \
  --no-healthcheck --restart=unless-stopped -v /etc/localtime:/etc/localtime:ro \
  --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 \
  -v "/srv/containers/$NOMECONTAINER/data:/data" \
  -v "/srv/containers/$NOMECONTAINER/mods:/mods" \
  -e EULA=TRUE \
  -e ENABLE_LAN_VISIBILITY=true \
  -e OVERRIDE_WHITELIST=true \
  -e ENABLE_RCON="true" \
  -e ONLINE_MODE=false \
  -e NETWORK_COMPRESSION_THRESHOLD=512 \
  -e RCON_PASSWORD="$VALUE8" \
  -e RCON_PORT=25575 \
  -e SERVER_PORT="$VALUE5" \
  -e DIFFICULTY="$VALUE6" \
  -e VERSION="$VALUE4" \
  -e MEMORY="$VALUE10" \
  -e GAMEMODE="$VALUE7" \
  -p 0.0.0.0:25565:25565 \
  "$docker_repo"
}

function docker_extras {

:; }

execute_main

exit 0
