Added Setup-Scripts, Generative-Scripts, Demo-Proj

This commit is contained in:
kb01guy 2023-03-19 23:59:28 +01:00
parent d7338efe63
commit c06908e080
9 changed files with 272 additions and 0 deletions

10
mc-java/.env Normal file
View file

@ -0,0 +1,10 @@
# Global Vars
TYPE="SPIGOT"
VERSION="1.19"
EULA="TRUE"
ONLINE_MODE="FALSE"
# Docker Vars
JVM_XX_OPTS="-XX:MaxRAMPercentage=75"
# Host Vars
JVM_HOST_OPTS="-Xmx768M -Xms512M -jar spigot.jar nogui"
JAVA_PATH="$JAVA_HOME"

View file

@ -0,0 +1,11 @@
version: '3.8'
services:
mc-java:
image: itzg/minecraft-server
hostname: mc-java
env_file: .env
#ports:
# - "24454:24454"
volumes:
- ./server:/data

19
mc-java/mc-java.service Normal file
View file

@ -0,0 +1,19 @@
[Unit]
Description=Minecraft Server
After=network.target
[Service]
User=minecraft
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/m/project/kb-one-game-minecraft/mc-java/server
ExecStart=/usr/bin/java -Xmx768M -Xms512M -jar spigot.jar nogui
ExecStop=/m/project/kb-one-game-minecraft/.tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password stop
[Install]
WantedBy=multi-user.target

1
mc-java/start.ps1 Normal file
View file

@ -0,0 +1 @@
java -jar template-server/spigot.jar

0
mc-java/start.sh Normal file
View file

112
servertool.sh Normal file
View file

@ -0,0 +1,112 @@
#/bin/bash
# How to Execute this Multi-Purpose script:
# -----------------------------------------
# execute this Script in a Linux Console or Windows Powershell with:
# bash servertool
# fill script variables
BASEDIR=$(pwd)
COMMAND=$1;
shift
CONFIG=("$@")
# Help function prints information about usage of this script.
function print_help {
echo -e "
Welcome to the All in one Minecraft Server Tool
-----------------------------------------------
Usage: servertool [command] [configuration]
COMMAND\tDESCRIPTION\t\t\tEXAMPLE
setup \tInteractive Setup
create \tCreates new configuration \tservertool create test
-----------------------------------------------";
# echo -e "start \tStarts configuration";
# echo -e "stop \tStops running configuration";
# echo -e "status \tShows Information about configuration";
# echo -e "remove \tRemoves configuration";
}
function list_server {
echo -e "You have currently configured following Servers: "
for i in $(ls -d */); do
echo ${i%%/};
done
}
function create_info {
echo -e "$1"
}
# Creates a new Server Configuration
function create_server {
local name=$1; # any string-value, please no stupid characters
local type=$2; # spigot, paper, bungeecord, waterfall, velocity, etc...
echo -e "Creating Server $name running $type"
echo -e "${#my_array[@]}"
if [ -z "${#my_array[@]}" ]; then
echo "Print create command Help"
elif [ -d "$name" ]; then
echo -e "Server $name allready exists!"
else
# mkdir "$name"
# mkdir "$name/server"
echo -e "version: '3.8'
services:
$name:
image: itzg/minecraft-server
hostname: $name
environment:
TYPE: \"$type\"
EULA: \"$eula\"
JVM_XX_OPTS: \"-XX:MaxRAMPercentage=75\"
ONLINE_MODE: \"$online\"
SPIGET_RESOURCES: \"70616,7688,73997,34315,51856,16708,92546,28140,80677\"
volumes:
- ./mc-survival:/data"
fi
}
# Select Command
if [[ -z "$COMMAND" || "$COMMAND" = "help" || "$COMMAND" = "--help" || "$COMMAND" = "-h" ]]; then
print_help
elif [ "$COMMAND" = "create" ]; then
echo "Creating Server";
create_server $CONFIG;
elif [ "$COMMAND" = "create" ]; then
list_server;
else
print_help
fi
#if ("$COMMAND"=="" || "$COMMAND"=="help" || "$COMMAND"=="--help" || "$COMMAND"=="-h"); then
# print_help;
#fi;
# Enable job control
set -m
while false :
do
read -t 10 -p "input> " input
[[ $input == finish ]] && break
# set SIGINT to default action
trap - SIGINT
# Run the command in background
bash -c "$input" &
# Set our signal mask to ignore SIGINT
trap "" SIGINT
# Move the command back-into foreground
fg %-
done

48
setup-tools-noroot.ps1 Normal file
View file

@ -0,0 +1,48 @@
$basedir=(Get-Location)
# Create File Structure
if (!(Test-Path ".tools/buildtools")){New-Item ".tools/buildtools" -ItemType Directory | Out-Null; Write-Host ("Created Directory .tools/buildtools")}
if (!(Test-Path ".tools/mcrcon" )){New-Item ".tools/mcrcon" -ItemType Directory | Out-Null; Write-Host ("Created Directory .tools/mcrcon" )}
if (!(Test-Path ".tools/nssm" )){New-Item ".tools/nssm" -ItemType Directory | Out-Null; Write-Host ("Created Directory .tools/nssm" )}
if (!(Test-Path ".tools/java" )){New-Item ".tools/java" -ItemType Directory | Out-Null; Write-Host ("Created Directory .tools/java" )}
# Setup mcrcon
Set-Location $basedir/.tools/mcrcon/
$release = (Invoke-RestMethod -Uri "https://api.github.com/repos/Tiiffi/mcrcon/releases/latest")
$download = ($release.assets.Where({$_.name -like "*windows*x86-64*"},"First",1))
if (!((Test-Path $download.name -PathType Leaf) -and (Test-Path "mcrcon.exe" -PathType Leaf))){
Write-Output ("Downloading mcrcon Version '" + $release.tag_name + "' in '" + (Get-Location) + "'.")
Remove-Item "mcrcon-*-windows-x86-64.zip"
Invoke-WebRequest -Uri $download.browser_download_url -OutFile $download.name
Expand-Archive $download.name .
} else { Write-Output ("Download skipped, mcrcon Version '" + $release.tag_name + "' is allready downloaded.") }
# Setup BuildTools
Set-Location $basedir/.tools/buildtools
if (!(Test-Path "BuildTools.jar" -PathType Leaf) -or (((get-date)-(get-item "BuildTools.jar").LastWriteTime) -gt (new-timespan -hours 2))){
Write-Output ("Downloading Build Tools in '" + (Get-Location) + "'.")
Remove-Item "BuildTools.jar"
Invoke-WebRequest -Uri https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar -OutFile BuildTools.jar
} else { Write-Output ("Download skipped, File .tools/buildtools/BuildTools.jar is newer than 2h.") }
# Setup NSSM https://nssm.cc/builds
Set-Location $basedir/.tools/nssm
$release = (Invoke-WebRequest -Uri https://nssm.cc/builds).Links.Where({$_.href -like "*ci/nssm*"},"First",1)
$archive_name = $release.href.SubString(4,22)
if (!((Test-Path ($archive_name+".zip") -PathType Leaf) -and (Test-Path "win64/nssm.exe" -PathType Leaf))){
Write-Output ("Downloading NSSM Version '"+$archive_name.SubString(5,8)+"' in '" + (Get-Location) + "'.")
Remove-Item -Recurse *
Invoke-WebRequest -Uri ("https://nssm.cc"+$release.href) -OutFile ($archive_name+".zip")
Expand-Archive ($archive_name+".zip") .
Move-Item ($archive_name+"\*") .
Remove-Item $archive_name
} else { Write-Output ("Download skipped, NSSM Version '"+$archive_name.SubString(5,8)+"' is allready downloaded.") }
# ---------------------------------
# Go Back to Script-Location
Set-Location $basedir

27
setup-tools-noroot.sh Normal file
View file

@ -0,0 +1,27 @@
#!/bin/bash
BASEDIR=$(pwd)
# Helper
get_latest_release() { # Source: https://gist.github.com/lukechilds/a83e1d7127b78fef38c2914c4ececc3c
curl --silent "https://api.github.com/repos/$1/releases/latest" | # Get latest release from GitHub api
grep '"tag_name":' | # Get tag line
sed -E 's/.*"([^"]+)".*/\1/' # Pluck JSON value
}
# Create File Structure
mkdir -p ${BASEDIR}/.tools/buildtools && \
mkdir -p ${BASEDIR}/.tools/mcrcon && \
mkdir -p ${BASEDIR}/.tools/java
# Setup mcrcon
cd ${BASEDIR}/.tools/mcrcon/ && \
LATEST=$(get_latest_release Tiiffi/mcrcon) && \
ARCHIVE_NAME="mcrcon-${LATEST[@]/v/}-linux-x86-64.tar.gz" && \
curl -L -o ${ARCHIVE_NAME} https://github.com/Tiiffi/mcrcon/releases/download/${LATEST}/${ARCHIVE_NAME} && \
tar xfz ${ARCHIVE_NAME}
#chmod +x mcrcon #Needed?
# Setup BuildTools
cd ${BASEDIR}/.tools/buildtools && \
curl -L -o BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

44
setup-tools.sh Normal file
View file

@ -0,0 +1,44 @@
#!/bin/bash
BASEDIR=$(pwd)
# Helper
get_latest_release() { # Source: https://gist.github.com/lukechilds/a83e1d7127b78fef38c2914c4ececc3c
curl --silent "https://api.github.com/repos/$1/releases/latest" | # Get latest release from GitHub api
grep '"tag_name":' | # Get tag line
sed -E 's/.*"([^"]+)".*/\1/' # Pluck JSON value
}
# Install Essentials
#sudo apt-get update
#sudo apt-get -yq install git build-essential gnupg curl
# Open JDK install Zulu: Package-Manager apt
#sudo apt-key adv \
# --keyserver hkp://keyserver.ubuntu.com:80 \
# --recv-keys 0xB1998361219BD9C9
#sudo apt-get update
#sudo apt-get install zulu16-jdk
# Open JDK install Zulu: Direct Download
#curl -O https://cdn.azul.com/zulu/bin/zulu-repo_1.0.0-2_all.deb
#sudo apt-get install ./zulu-repo_1.0.0-2_all.deb
# Open JDK install Zulu: Portable
#curl -o jdk17.tar.gz https://cdn.azul.com/zulu/bin/zulu17.40.19-ca-jdk17.0.6-linux_x64.tar.gz
#tar xfz jdk17.tar.gz
# Create File Structure
mkdir -p ${BASEDIR}/.tools/buildtools && \
mkdir -p ${BASEDIR}/.tools/java && \
# Setup mcrcon
LATEST=$(get_latest_release Tiiffi/mcrcon)
curl -o ${BASEDIR}/tools/mcrcon/mcrcon https://github.com/Tiiffi/mcrcon/releases/download/${LATEST}/mcrcon-${LATEST[@]/v/}-windows-x86-64.zip
cd ${BASEDIR}/tools && git clone https://github.com/Tiiffi/mcrcon.git \
&& cd ${BASEDIR}/tools/mcrcon && gcc -std=gnu11 -pedantic -Wall -Wextra -O2 -s -o mcrcon mcrcon.c
# Setup Spigot
cd ${BASEDIR}/tools/buildtools && curl -o BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar \
&& java -jar BuildTools.jar --rev 1.17