mirror of
https://github.com/PaperMC/Paper.git
synced 2024-08-21 11:52:55 +02:00
Many times I've ran paper test trying to SHUTDOWN the existing test server, only for it to see that my target folder is missing (for whatever reason), and it try to build paper to make the jar exists. Well, the patch process will wipe out any uncommitted changes, causing loss of work. Now we will only build patches if your missing your entire Paper-Server folder, and only trigger a mvn compile if the jar is missing.
141 lines
3.4 KiB
Bash
Executable File
141 lines
3.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
PS1="$"
|
|
basedir="$(cd "$1" && pwd -P)"
|
|
workdir="$basedir/work"
|
|
minecraftversion=$(cat "$workdir/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4)
|
|
gitcmd="git -c commit.gpgsign=false"
|
|
|
|
#
|
|
# FUNCTIONS
|
|
#
|
|
source $basedir/scripts/functions.sh
|
|
|
|
updateTest() {
|
|
paperstash
|
|
$gitcmd reset --hard origin/master
|
|
paperunstash
|
|
}
|
|
|
|
papertestdir="${PAPER_TEST_DIR:-$workdir/test-server}"
|
|
|
|
mkdir -p "$papertestdir"
|
|
cd "$papertestdir"
|
|
|
|
#
|
|
# SKELETON CHECK
|
|
#
|
|
|
|
if [ ! -d .git ]; then
|
|
$gitcmd init
|
|
$gitcmd remote add origin ${PAPER_TEST_SKELETON:-https://github.com/PaperMC/PaperTestServer}
|
|
$gitcmd fetch origin
|
|
updateTest
|
|
elif [ "$2" == "update" ] || [ "$3" == "update" ]; then
|
|
updateTest
|
|
fi
|
|
|
|
if [ ! -f server.properties ] || [ ! -d plugins ]; then
|
|
echo " "
|
|
echo " Checking out Test Server Skeleton"
|
|
updateTest
|
|
fi
|
|
|
|
|
|
#
|
|
# EULA CHECK
|
|
#
|
|
|
|
if [ -z "$(grep true eula.txt 2>/dev/null)" ]; then
|
|
echo
|
|
echo "$(color 32) It appears you have not agreed to Mojangs EULA yet! Press $(color 1 33)y$(colorend) $(color 32)to confirm agreement to"
|
|
read -p " Mojangs EULA found at:$(color 1 32) https://account.mojang.com/documents/minecraft_eula $(colorend) " -n 1 -r
|
|
echo ""
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
echo "$(color 1 31)Aborted$(colorend)"
|
|
exit;
|
|
fi
|
|
echo "eula=true" > eula.txt
|
|
fi
|
|
|
|
#
|
|
# JAR CHECK
|
|
#
|
|
|
|
folder="$basedir/Paper-Server"
|
|
jar="$folder/target/paper-${minecraftversion}.jar"
|
|
if [ ! -d "$folder" ]; then
|
|
(
|
|
echo "Building Patched Repo"
|
|
cd "$basedir"
|
|
./paper patch
|
|
)
|
|
fi
|
|
|
|
if [ ! -f "$jar" ] || [ "$2" == "build" ] || [ "$3" == "build" ]; then
|
|
(
|
|
echo "Building Paper"
|
|
cd "$basedir"
|
|
mvn package
|
|
)
|
|
fi
|
|
|
|
#
|
|
# JVM FLAGS
|
|
#
|
|
|
|
baseargs="-server -Xms${PAPER_MIN_TEST_MEMORY:-512M} -Xmx${PAPER_TEST_MEMORY:-2G} -Dfile.encoding=UTF-8 -XX:MaxGCPauseMillis=150 -XX:+UseG1GC "
|
|
baseargs="$baseargs -DIReallyKnowWhatIAmDoingISwear=1 -XX:TargetSurvivorRatio=90 "
|
|
baseargs="$baseargs -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=40 -XX:G1MaxNewSizePercent=80 "
|
|
baseargs="$baseargs -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=20 "
|
|
baseargs="$baseargs -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5100"
|
|
|
|
cmd="java ${PAPER_TEST_BASE_JVM_ARGS:-$baseargs} ${PAPER_TEST_EXTRA_JVM_ARGS} -jar $jar"
|
|
screen_command="screen -DURS papertest $cmd"
|
|
tmux_command="tmux new-session -A -s Paper -n 'Paper Test' -c '$(pwd)' '$cmd'"
|
|
|
|
#
|
|
# MULTIPLEXER CHOICE
|
|
#
|
|
|
|
multiplex=${PAPER_TEST_MULTIPLEXER}
|
|
|
|
if [ "$multiplex" == "screen" ]; then
|
|
if command -v "screen" >/dev/null 2>&1 ; then
|
|
cmd="$screen_command"
|
|
else
|
|
echo "screen not found"
|
|
exit 1
|
|
fi
|
|
elif [ "$multiplex" == "tmux" ] ; then
|
|
if command -v "tmux" >/dev/null 2>&1 ; then
|
|
cmd="$tmux_command"
|
|
else
|
|
echo "tmux not found"
|
|
exit 1
|
|
fi
|
|
else
|
|
if command -v "screen" >/dev/null 2>&1 ; then
|
|
cmd="$screen_command"
|
|
elif command -v "tmux" >/dev/null 2>&1 ; then
|
|
cmd="$tmux_command"
|
|
else
|
|
echo "screen or tmux not found - it is strongly recommended to install either"
|
|
echo "No terminal multiplexer will be used"
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# START / LOG
|
|
#
|
|
|
|
if [ ! -z "$PAPER_TEST_COMMAND_WRAPPER" ]; then
|
|
$PAPER_TEST_COMMAND_WRAPPER $cmd
|
|
else
|
|
echo "Running command: $cmd"
|
|
echo "In directory: $(pwd)"
|
|
sleep 1
|
|
/usr/bin/env bash -c "$cmd"
|
|
fi
|