Version 2.0
Using Spigot maven repository now. Improved test deployment scripts. Removed checks for updates. Code-style.
This commit is contained in:
@ -1,160 +1,202 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPT_DIR=$(readlink -f $(dirname "$0"))
|
||||
SERVICE='craftbukkit*.jar'
|
||||
#USERNAME="minecraft"
|
||||
CPU_COUNT=2
|
||||
BUKKIT="$SCRIPT_DIR/../target/lib/$SERVICE"
|
||||
INVOCATION="java -Xmx1000M -Xms300M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts -jar $BUKKIT nogui"
|
||||
MCPATH="$SCRIPT_DIR/../bukkit-testserver"
|
||||
# Craft Inc. BorderProtection
|
||||
# Copyright (C) 2016 Paul Schulze
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
if [ ! -d "$MCPATH" ]; then
|
||||
mkdir -p "$MCPATH"
|
||||
|
||||
SERVICE='craftbukkit-1.10.2.jar'
|
||||
|
||||
# numbers of CPU cores; used only for the parallel garbage collector threads
|
||||
CPU_COUNT=8
|
||||
|
||||
# maximum memory which the JAVA VM is allowed to allocate (M is megabyte)
|
||||
XMX=-Xmx10000M
|
||||
|
||||
# initial memory which the JAVA VM is allocating (M is megabyte)
|
||||
XMS=-Xms3000M
|
||||
|
||||
# Replace with path which contains your craftbukkit.jar
|
||||
MCPATH="$(dirname "$0")/../bukkit-testserver"
|
||||
|
||||
|
||||
|
||||
# ========================================================================
|
||||
# == Don't change anything below this line unless you know what you do. ==
|
||||
# ========================================================================
|
||||
BUKKIT="$MCPATH/$SERVICE"
|
||||
INVOCATION="java $XMX $XMS -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts -jar $BUKKIT nogui"
|
||||
|
||||
if [[ "$MCPATH" == '/my/path/to/craftbukkit' ]]; then
|
||||
echo "Please configure the \"MCPATH\" variable in the $0 file." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ME=$(whoami)
|
||||
as_user() {
|
||||
#if [ $ME == $USERNAME ] ; then
|
||||
bash -c "$1"
|
||||
#else
|
||||
#su - $USERNAME -c "$1"
|
||||
#fi
|
||||
SCREEN_NAME="$(cat "$MCPATH/screen_name" 2> /dev/null)"
|
||||
if [[ -z "$SCREEN_NAME" ]]; then
|
||||
SCREEN_NAME="minecraft.$(head -c12 /dev/urandom | xxd -p)"
|
||||
echo -n "$SCREEN_NAME" > "$MCPATH/screen_name"
|
||||
fi
|
||||
|
||||
psgrep() {
|
||||
psgreptmp=$(mktemp)
|
||||
|
||||
ps auxww > "$psgreptmp"
|
||||
grep -v "$$" "$psgreptmp" | egrep --color=auto -i "$1"
|
||||
rm "$psgreptmp"
|
||||
}
|
||||
|
||||
send_to_screen() {
|
||||
screen -p 0 -S "$SCREEN_NAME" -X stuff "$1
|
||||
"
|
||||
}
|
||||
|
||||
mc_service_running() {
|
||||
psgrep "$SERVICE" | grep -v -i 'screen' | grep 'java' | grep -- "$XMX" | grep -- "$XMS" | grep "$BUKKIT" > /dev/null
|
||||
return $?
|
||||
}
|
||||
|
||||
mc_start() {
|
||||
if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
|
||||
then
|
||||
echo "Tried to start but $SERVICE was already running!"
|
||||
else
|
||||
echo "$SERVICE was not running... starting."
|
||||
if ! mc_status; then
|
||||
echo "Starting..."
|
||||
cd "$MCPATH"
|
||||
as_user "cd "$MCPATH" && screen -dmS minecraft $INVOCATION"
|
||||
sleep 7
|
||||
if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
|
||||
then
|
||||
echo "$SERVICE is now running."
|
||||
else
|
||||
echo "Could not start $SERVICE."
|
||||
fi
|
||||
screen -dmS "$SCREEN_NAME" $INVOCATION
|
||||
sleep 2
|
||||
mc_status
|
||||
fi
|
||||
}
|
||||
|
||||
mc_stop() {
|
||||
if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
|
||||
then
|
||||
echo "$SERVICE is running... stopping."
|
||||
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
|
||||
sleep 2
|
||||
as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'"
|
||||
sleep 6
|
||||
else
|
||||
echo "$SERVICE was not running."
|
||||
fi
|
||||
if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
|
||||
then
|
||||
echo "$SERVICE could not be shut down... still running."
|
||||
else
|
||||
echo "$SERVICE is shut down."
|
||||
if mc_status; then
|
||||
# echo "Sending message to users..."
|
||||
# send_to_screen 'say SERVER SHUTTING DOWN IN 10 SECONDS!'
|
||||
# sleep 10
|
||||
echo "Saving..."
|
||||
send_to_screen 'save-all'
|
||||
sleep 1
|
||||
echo "Stopping..."
|
||||
send_to_screen 'stop'
|
||||
sleep 3
|
||||
mc_status
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
mc_save() {
|
||||
if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
|
||||
then
|
||||
echo "$SERVICE is running... saving."
|
||||
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
|
||||
else
|
||||
echo "$SERVICE was not running."
|
||||
if mc_status; then
|
||||
echo "Saving..."
|
||||
send_to_screen 'save-all'
|
||||
fi
|
||||
}
|
||||
|
||||
mc_reload() {
|
||||
if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
|
||||
then
|
||||
echo "$SERVICE is running... reloading."
|
||||
as_user "screen -p 0 -S minecraft -X eval 'stuff \"reload\"\015'"
|
||||
|
||||
mc_restart_or_start() {
|
||||
if mc_service_running; then
|
||||
mc_stop
|
||||
sleep 1
|
||||
mc_start
|
||||
else
|
||||
echo "$SERVICE was not running."
|
||||
mc_start
|
||||
fi
|
||||
}
|
||||
|
||||
mc_reload_or_start() {
|
||||
if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
|
||||
then
|
||||
echo "$SERVICE was already running! Doing a reload now!"
|
||||
mc_reload
|
||||
else
|
||||
echo "$SERVICE was not running... starting."
|
||||
cd "$MCPATH"
|
||||
as_user "cd \"$MCPATH\" && screen -dmS minecraft $INVOCATION"
|
||||
sleep 7
|
||||
if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
|
||||
then
|
||||
echo "$SERVICE is now running."
|
||||
else
|
||||
echo "Could not start $SERVICE."
|
||||
mc_reset_permissions() {
|
||||
if mc_status; then
|
||||
echo "Unbanning ddidderr..."
|
||||
send_to_screen 'pardon ddidderr'
|
||||
echo "Unbanning mice_on_drugs..."
|
||||
send_to_screen 'pardon mice_on_drugs'
|
||||
echo "Unbanning Mochaccino..."
|
||||
send_to_screen 'pardon Mochaccino'
|
||||
|
||||
echo "ddidder -> admin"
|
||||
send_to_screen 'pex user ddidderr group set admin'
|
||||
echo "mice_on_drugs -> mod"
|
||||
send_to_screen 'pex user mice_on_drugs group set mod'
|
||||
echo "Mochaccino -> mod"
|
||||
send_to_screen 'pex user Mochaccino group set mod'
|
||||
|
||||
echo "Reloading permissions..."
|
||||
send_to_screen 'pex reload'
|
||||
echo "DONE"
|
||||
fi
|
||||
}
|
||||
|
||||
mc_custom_command() {
|
||||
if mc_status; then
|
||||
if [[ -z "$1" ]]; then
|
||||
echo "You must specify a command." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Trying to issue command: \"$1\""
|
||||
send_to_screen "$1"
|
||||
tail -fn50 "$MCPATH/logs/latest.log"
|
||||
fi
|
||||
}
|
||||
|
||||
mc_ddidderr_admin() {
|
||||
if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
|
||||
then
|
||||
echo "$SERVICE is running... making ddidder to admin and reloading permissions."
|
||||
as_user "screen -p 0 -S minecraft -X eval 'stuff \"pex user ddidderr group set admin\"\015'"
|
||||
as_user "screen -p 0 -S minecraft -X eval 'stuff \"pex reload\"\015'"
|
||||
mc_status() {
|
||||
if mc_service_running; then
|
||||
echo "$SERVICE is running."
|
||||
return 0
|
||||
else
|
||||
echo "$SERVICE was not running."
|
||||
echo "$SERVICE is stopped."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
mc_online() {
|
||||
if mc_status; then
|
||||
send_to_screen 'list'
|
||||
sleep 2s
|
||||
tac "$MCPATH/logs/latest.log" | egrep -om 1 "There are.*players online"
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
echo "Starting Minecraft..."
|
||||
mc_start
|
||||
echo "DONE"
|
||||
;;
|
||||
stop)
|
||||
echo "Stopping Minecraft..."
|
||||
as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN!\"\015'"
|
||||
mc_stop
|
||||
echo "DONE"
|
||||
;;
|
||||
restart)
|
||||
as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER REBOOT IN 10 SECONDS.\"\015'"
|
||||
$0 stop
|
||||
sleep 1
|
||||
sleep 2
|
||||
$0 start
|
||||
;;
|
||||
reload)
|
||||
mc_reload
|
||||
restart_or_start)
|
||||
mc_restart_or_start
|
||||
;;
|
||||
reload_or_start)
|
||||
echo "Starting or reloading Minecraft..."
|
||||
mc_reload_or_start
|
||||
echo "DONE"
|
||||
reset_permissions)
|
||||
mc_reset_permissions
|
||||
;;
|
||||
ddidderr_admin)
|
||||
mc_ddidderr_admin
|
||||
custom)
|
||||
mc_custom_command "${*:2}"
|
||||
;;
|
||||
connected)
|
||||
as_user "screen -p 0 -S minecraft -X eval 'stuff \"who\"\015'"
|
||||
sleep 2s
|
||||
tac "$MCPATH"/server.log | grep -m 1 "Connected"
|
||||
online)
|
||||
mc_online
|
||||
;;
|
||||
status)
|
||||
if ps ax | grep -v grep | grep -v -i SCREEN | grep "craftbukkit" > /dev/null
|
||||
then
|
||||
echo "$SERVICE is running."
|
||||
else
|
||||
echo "$SERVICE is not running."
|
||||
fi
|
||||
mc_status
|
||||
;;
|
||||
save)
|
||||
mc_save
|
||||
;;
|
||||
*)
|
||||
echo "Usage: /etc/init.d/minecraft {start|stop|restart|connected|status}"
|
||||
echo "Usage: $0 {start|stop|restart|save|online|status|reset_permissions}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
@ -1,29 +1,57 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Craft Inc. BorderProtection
|
||||
# Copyright (C) 2016 Paul Schulze
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
SCRIPT_DIR="$(dirname "$0")"
|
||||
|
||||
DEVELOPER=$(whoami)
|
||||
DEVELOPER="$(whoami)"
|
||||
|
||||
if [ $DEVELOPER = "tobi" ]; then
|
||||
BUKKIT_DIR="$HOME/minecraft/testbuk"
|
||||
PLUGIN_DIR="$HOME/minecraft/testbuk/plugins"
|
||||
START_STOP_SCRIPT="$BUKKIT_DIR/../minecraft.sh"
|
||||
else
|
||||
BUKKIT_DIR="$SCRIPT_DIR/../bukkit-testserver"
|
||||
PLUGIN_DIR="$SCRIPT_DIR/../bukkit-testserver/plugins"
|
||||
START_STOP_SCRIPT="$SCRIPT_DIR/minecraft.sh"
|
||||
BUKKIT_DIR="$SCRIPT_DIR/../bukkit-testserver"
|
||||
PLUGIN_DIR="$SCRIPT_DIR/../bukkit-testserver/plugins"
|
||||
START_STOP_SCRIPT="$SCRIPT_DIR/minecraft.sh"
|
||||
BUILD_TOOLS_DIR="$BUKKIT_DIR/buildtools"
|
||||
|
||||
mkdir -p "$BUILD_TOOLS_DIR"
|
||||
# get build tools
|
||||
if [ ! -f "$BUILD_TOOLS_DIR/BuildTools.jar" ]; then
|
||||
wget -O- 'https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar' > "$BUILD_TOOLS_DIR/BuildTools.jar"
|
||||
fi
|
||||
|
||||
cp -f "$BUILD_TOOLS_DIR"/craftbukkit*.jar "$BUKKIT_DIR/"
|
||||
|
||||
# run build tools
|
||||
if [ ! -f "$BUKKIT_DIR"/craftbukkit*.jar ]; then
|
||||
cd "$BUILD_TOOLS_DIR"
|
||||
java -jar ./BuildTools.jar
|
||||
fi
|
||||
|
||||
echo 'eula=TRUE' > "$BUKKIT_DIR/eula.txt"
|
||||
|
||||
# TODO: This is a bad solution! Maven should write necessary information into an extra file.
|
||||
ARTIFACT_ID="$(grep -C5 '<groupId>de.craftinc' "$SCRIPT_DIR/../pom.xml" | grep '<name>' | sed 's/[ \t]*<name>//g' | sed 's/<\/name>[ \t]*//g')"
|
||||
|
||||
# TODO: This is a bad solution! Maven should write necessary information into an extra file.
|
||||
VERSION="$(grep -C5 '<groupId>de.craftinc' "$SCRIPT_DIR/../pom.xml" | grep '<version>' | sed 's/[ \t]*<version>//g' | sed 's/<\/version>[ \t]*//g')"
|
||||
|
||||
rm -rf "$PLUGIN_DIR"
|
||||
mkdir -p "$PLUGIN_DIR"
|
||||
|
||||
cp "$SCRIPT_DIR/../target/$ARTIFACT_ID $VERSION".jar "$PLUGIN_DIR/"
|
||||
cp "$SCRIPT_DIR/../target/$ARTIFACT_ID-$VERSION".jar "$PLUGIN_DIR/"
|
||||
|
||||
echo -e "ddidderr\nmice_on_drugs\nMochaccino" > "$BUKKIT_DIR/ops.txt"
|
||||
|
||||
$START_STOP_SCRIPT reload_or_start
|
||||
$START_STOP_SCRIPT restart_or_start
|
||||
|
Reference in New Issue
Block a user