Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-15 11:00:06 +01:00
d089acb3bd
ForgeFlower is better than Spigots FernFlower at decompiling the source. However, in order to maintain the CraftBukkit patches, we must keep using spigots for the primary. However, for any file that we import on top of Spigots imported files there is nothing stopping us from using better decompiled files. So these changes will use ForgeFlower to maintain a better set of decomped files, so anything we add on top of Paper can start off in a better spot.
134 Zeilen
3.2 KiB
Bash
Ausführbare Datei
134 Zeilen
3.2 KiB
Bash
Ausführbare Datei
#!/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
|
|
#
|
|
|
|
jar="$basedir/Paper-Server/target/paper-${minecraftversion}.jar"
|
|
if [ ! -f "$jar" ] || [ "$2" == "build" ] || [ "$3" == "build" ]; then
|
|
(
|
|
echo "Building Paper"
|
|
cd "$basedir"
|
|
./paper patch
|
|
mvn clean install
|
|
)
|
|
fi
|
|
|
|
|
|
#
|
|
# JVM FLAGS
|
|
#
|
|
|
|
baseargs="-server -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=50 -XX:G1MaxNewSizePercent=80 "
|
|
baseargs="$baseargs -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=50 "
|
|
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
|