 3d0d7a8a81
			
		
	
	3d0d7a8a81
	
	
	
		
			
			Using Spigot maven repository now. Improved test deployment scripts. Removed checks for updates. Code-style.
		
			
				
	
	
		
			203 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			203 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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/>.
 | |
| 
 | |
| 
 | |
| 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
 | |
| 
 | |
| 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 ! mc_status; then
 | |
|         echo "Starting..."
 | |
|         cd "$MCPATH"
 | |
|         screen -dmS "$SCREEN_NAME" $INVOCATION
 | |
|         sleep 2
 | |
|         mc_status
 | |
|     fi
 | |
| }
 | |
| 
 | |
| mc_stop() {
 | |
|     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 mc_status; then
 | |
|         echo "Saving..."
 | |
|         send_to_screen 'save-all'
 | |
|     fi
 | |
| }
 | |
| 
 | |
| 
 | |
| mc_restart_or_start() {
 | |
|     if mc_service_running; then
 | |
|         mc_stop
 | |
|         sleep 1
 | |
|         mc_start
 | |
|     else
 | |
|         mc_start
 | |
|     fi
 | |
| }
 | |
| 
 | |
| 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_status() {
 | |
|     if mc_service_running; then
 | |
|         echo "$SERVICE is running."
 | |
|         return 0
 | |
|     else
 | |
|         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)
 | |
|         mc_start
 | |
|         ;;
 | |
|     stop)
 | |
|         mc_stop
 | |
|         ;;
 | |
|     restart)
 | |
|         $0 stop
 | |
|         sleep 2
 | |
|         $0 start
 | |
|         ;;
 | |
|     restart_or_start)
 | |
|         mc_restart_or_start
 | |
|         ;;
 | |
|     reset_permissions)
 | |
|         mc_reset_permissions
 | |
|         ;;
 | |
|     custom)
 | |
|         mc_custom_command "${*:2}"
 | |
|         ;;
 | |
|     online)
 | |
|         mc_online
 | |
|         ;;
 | |
|     status)
 | |
|         mc_status
 | |
|         ;;
 | |
|     save)
 | |
|         mc_save
 | |
|         ;;
 | |
|     *)
 | |
|         echo "Usage: $0 {start|stop|restart|save|online|status|reset_permissions}"
 | |
|         exit 1
 | |
|         ;;
 | |
| esac
 |