mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-22 08:57:35 +01:00
Remove now unnecessary scripts and update upstreamMerge.sh
This commit is contained in:
parent
34269f8a39
commit
c8ecb664c6
@ -1,109 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
(
|
||||
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"
|
||||
applycmd="$gitcmd am --3way --ignore-whitespace"
|
||||
# Windows detection to workaround ARG_MAX limitation
|
||||
windows="$([[ "$OSTYPE" == "cygwin" || "$OSTYPE" == "msys" ]] && echo "true" || echo "false")"
|
||||
|
||||
echo "Rebuilding Forked projects.... "
|
||||
|
||||
function applyPatch {
|
||||
what=$1
|
||||
what_name=$(basename "$what")
|
||||
target=$2
|
||||
branch=$3
|
||||
|
||||
cd "$basedir/$what"
|
||||
$gitcmd fetch
|
||||
$gitcmd branch -f upstream "$branch" >/dev/null
|
||||
|
||||
cd "$basedir"
|
||||
if [ ! -d "$basedir/$target" ]; then
|
||||
$gitcmd clone "$what" "$target"
|
||||
fi
|
||||
cd "$basedir/$target"
|
||||
|
||||
echo "Resetting $target to $what_name..."
|
||||
$gitcmd remote rm upstream > /dev/null 2>&1
|
||||
$gitcmd remote add upstream "$basedir/$what" >/dev/null 2>&1
|
||||
$gitcmd checkout master 2>/dev/null || $gitcmd checkout -b master
|
||||
$gitcmd fetch upstream >/dev/null 2>&1
|
||||
$gitcmd reset --hard upstream/upstream
|
||||
|
||||
echo " Applying patches to $target..."
|
||||
|
||||
statusfile=".git/patch-apply-failed"
|
||||
rm -f "$statusfile"
|
||||
git config commit.gpgsign false
|
||||
$gitcmd am --abort >/dev/null 2>&1
|
||||
|
||||
# Special case Windows handling because of ARG_MAX constraint
|
||||
if [[ $windows == "true" ]]; then
|
||||
echo " Using workaround for Windows ARG_MAX constraint"
|
||||
find "$basedir/${what_name}-Patches/"*.patch -print0 | xargs -0 $applycmd
|
||||
else
|
||||
$applycmd "$basedir/${what_name}-Patches/"*.patch
|
||||
fi
|
||||
|
||||
if [ "$?" != "0" ]; then
|
||||
echo 1 > "$statusfile"
|
||||
echo " Something did not apply cleanly to $target."
|
||||
echo " Please review above details and finish the apply then"
|
||||
echo " save the changes with rebuildPatches.sh"
|
||||
|
||||
# On Windows, finishing the patch apply will only fix the latest patch
|
||||
# users will need to rebuild from that point and then re-run the patch
|
||||
# process to continue
|
||||
if [[ $windows == "true" ]]; then
|
||||
echo ""
|
||||
echo " Because you're on Windows you'll need to finish the AM,"
|
||||
echo " rebuild all patches, and then re-run the patch apply again."
|
||||
echo " Consider using the scripts with Windows Subsystem for Linux."
|
||||
fi
|
||||
|
||||
exit 1
|
||||
else
|
||||
rm -f "$statusfile"
|
||||
echo " Patches applied cleanly to $target"
|
||||
fi
|
||||
}
|
||||
|
||||
# Move into spigot dir
|
||||
cd "$workdir/Spigot"
|
||||
basedir=$(pwd)
|
||||
# Apply Spigot
|
||||
(
|
||||
applyPatch ../Bukkit Spigot-API HEAD &&
|
||||
applyPatch ../CraftBukkit Spigot-Server patched
|
||||
) || (
|
||||
echo "Failed to apply Spigot Patches"
|
||||
exit 1
|
||||
) || exit 1
|
||||
# Move out of Spigot
|
||||
basedir="$1"
|
||||
cd "$basedir"
|
||||
|
||||
echo "Importing MC Dev"
|
||||
|
||||
./scripts/importmcdev.sh "$basedir" || exit 1
|
||||
|
||||
# Apply paper
|
||||
(
|
||||
applyPatch "work/Spigot/Spigot-API" Paper-API HEAD &&
|
||||
applyPatch "work/Spigot/Spigot-Server" Paper-Server HEAD
|
||||
cd "$basedir"
|
||||
|
||||
# if we have previously ran ./paper mcdev, update it
|
||||
if [ -d "$workdir/Minecraft/$minecraftversion/src" ]; then
|
||||
./scripts/makemcdevsrc.sh "$basedir"
|
||||
fi
|
||||
) || (
|
||||
echo "Failed to apply Paper Patches"
|
||||
exit 1
|
||||
) || exit 1
|
||||
) || exit 1
|
@ -1,15 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
(
|
||||
set -e
|
||||
basedir="$(cd "$1" && pwd -P)"
|
||||
gitcmd="git -c commit.gpgsign=false"
|
||||
|
||||
($gitcmd submodule update --init && ./scripts/remap.sh "$basedir" && ./scripts/decompile.sh "$basedir" && ./scripts/init.sh "$basedir" && ./scripts/applyPatches.sh "$basedir") || (
|
||||
echo "Failed to build Paper"
|
||||
exit 1
|
||||
) || exit 1
|
||||
if [ "$2" == "--jar" ]; then
|
||||
mvn clean install && ./scripts/paperclip.sh "$basedir"
|
||||
fi
|
||||
) || exit 1
|
@ -1,146 +0,0 @@
|
||||
#!/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)
|
||||
windows="$([[ "$OSTYPE" == "cygwin" || "$OSTYPE" == "msys" ]] && echo "true" || echo "false")"
|
||||
decompiledir="$workdir/Minecraft/$minecraftversion"
|
||||
spigotdecompiledir="$decompiledir/spigot"
|
||||
forgedecompiledir="$decompiledir/forge"
|
||||
forgeflowerversion="1.5.380.19"
|
||||
forgeflowerurl="http://files.minecraftforge.net/maven/net/minecraftforge/forgeflower/$forgeflowerversion/forgeflower-$forgeflowerversion.jar"
|
||||
# temp use patched version
|
||||
forgeflowerurl="https://zachbr.keybase.pub/paper/forgeflower-patched/forgeflower-1.5.380.19.jar?dl=1"
|
||||
forgeflowerbin="$workdir/ForgeFlower/$forgeflowerversion.jar"
|
||||
# TODO: Make this better? We don't need spigot compat for this stage
|
||||
forgefloweroptions="-dgs=1 -hdc=0 -asc=1 -udv=1 -jvn=1"
|
||||
forgeflowercachefile="$decompiledir/forgeflowercache"
|
||||
forgeflowercachevalue="$forgeflowerurl - $forgeflowerversion - $forgefloweroptions";
|
||||
classdir="$decompiledir/classes"
|
||||
versionjson="$workdir/Minecraft/$minecraftversion/$minecraftversion.json"
|
||||
|
||||
if [[ ! -f "$versionjson" ]]; then
|
||||
echo "Downloading $minecraftversion JSON Data"
|
||||
verescaped=$(echo ${minecraftversion} | sed 's/\-pre/ Pre-Release /g' | sed 's/\./\\./g')
|
||||
urlescaped=$(echo ${verescaped} | sed 's/ /_/g')
|
||||
verentry=$(curl -s "https://launchermeta.mojang.com/mc/game/version_manifest.json" | grep -oE "\{\"id\": \"${verescaped}\".*${urlescaped}\.json")
|
||||
jsonurl=$(echo $verentry | grep -oE https:\/\/.*\.json)
|
||||
curl -o "$versionjson" "$jsonurl"
|
||||
echo "$versionjson - $jsonurl"
|
||||
fi
|
||||
|
||||
function downloadLibraries {
|
||||
group=$1
|
||||
groupesc=$(echo ${group} | sed 's/\./\\./g')
|
||||
grouppath=$(echo ${group} | sed 's/\./\//g')
|
||||
libdir="$decompiledir/libraries/${group}/"
|
||||
mkdir -p "$libdir"
|
||||
shift
|
||||
for lib in "$@"
|
||||
do
|
||||
jar="$libdir/${lib}-sources.jar"
|
||||
destlib="$libdir/${lib}"
|
||||
if [ ! -f "$jar" ]; then
|
||||
libesc=$(echo ${lib} | sed 's/\./\\]./g')
|
||||
ver=$(grep -oE "${groupesc}:${libesc}:[0-9\.]+" "$versionjson" | sed "s/${groupesc}:${libesc}://g")
|
||||
echo "Downloading ${group}:${lib}:${ver} Sources"
|
||||
curl -s -o "$jar" "https://libraries.minecraft.net/${grouppath}/${lib}/${ver}/${lib}-${ver}-sources.jar"
|
||||
set +e
|
||||
grep "<html>" "$jar" && grep -oE "<title>.*?</title>" "$jar" && rm "$jar" && echo "Failed to download $jar" && exit 1
|
||||
set -e
|
||||
fi
|
||||
|
||||
if [ ! -d "$destlib/$grouppath" ]; then
|
||||
echo "Extracting $group:$lib Sources"
|
||||
mkdir -p "$destlib"
|
||||
(cd "$destlib" && jar xf "$jar")
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
downloadLibraries "com.mojang" datafixerupper authlib brigadier
|
||||
|
||||
# prep folders
|
||||
mkdir -p "$workdir/ForgeFlower"
|
||||
mkdir -p "$spigotdecompiledir"
|
||||
mkdir -p "$forgedecompiledir"
|
||||
|
||||
echo "Extracting NMS classes..."
|
||||
if [ ! -d "$classdir" ]; then
|
||||
mkdir -p "$classdir"
|
||||
cd "$classdir"
|
||||
set +e
|
||||
jar xf "$decompiledir/$minecraftversion-mapped.jar" net/minecraft com/mojang/math
|
||||
if [ "$?" != "0" ]; then
|
||||
cd "$basedir"
|
||||
echo "Failed to extract NMS classes."
|
||||
exit 1
|
||||
fi
|
||||
set -e
|
||||
fi
|
||||
|
||||
#needsDecomp=0
|
||||
#if [ ! -f "$forgeflowercachefile" ]; then
|
||||
# needsDecomp=1
|
||||
#elif [ "$(cat ${forgeflowercachefile})" != "$forgeflowercachevalue" ]; then
|
||||
# needsDecomp=1
|
||||
#fi
|
||||
#if [ "$needsDecomp" == "1" ]; then
|
||||
# # our local cache is now invalidated, we can update forgeflower to get better deobfuscation
|
||||
# rm -rf "$forgedecompiledir/net"
|
||||
#fi
|
||||
|
||||
## Forge (for Paper mc-dev imports, and dev src folders for unimported files)
|
||||
#if [ ! -d "$forgedecompiledir/net" ] ; then
|
||||
# echo "Decompiling classes (stage 1)..."
|
||||
# cd "$basedir"
|
||||
#
|
||||
# if [ ! -f "$forgeflowerbin" ]; then
|
||||
# echo "Downloading ForgeFlower ($forgeflowerversion)..."
|
||||
# curl -s -o "$forgeflowerbin" "$forgeflowerurl"
|
||||
# fi
|
||||
#
|
||||
# set +e
|
||||
# java -Ddecomp.renameparams=true -jar "$forgeflowerbin" ${forgefloweroptions} -ind=' ' "$classdir" "$forgedecompiledir"
|
||||
# if [ "$?" != "0" ]; then
|
||||
# rm -rf "$forgedecompiledir/net"
|
||||
# echo "Failed to decompile classes."
|
||||
# exit 1
|
||||
# fi
|
||||
# echo "$forgeflowercachevalue" > "$forgeflowercachefile"
|
||||
# set -e
|
||||
#fi
|
||||
|
||||
# Spigot (for CraftBukkit patches)
|
||||
|
||||
# if we see the old net folder, copy it to spigot to avoid redecompiling
|
||||
if [ -d "$decompiledir/net" ]; then
|
||||
cp -r "$decompiledir/net" "$spigotdecompiledir/"
|
||||
fi
|
||||
|
||||
if [ ! -d "$spigotdecompiledir/net" ]; then
|
||||
echo "Decompiling classes (stage 2)..."
|
||||
cd "$basedir"
|
||||
set +e
|
||||
java -jar "$workdir/BuildData/bin/fernflower.jar" -dgs=1 -hdc=0 -asc=1 -udv=0 -rsy=1 -aoa=1 "$classdir" "$spigotdecompiledir"
|
||||
if [ "$?" != "0" ]; then
|
||||
rm -rf "$spigotdecompiledir/net"
|
||||
echo "Failed to decompile classes."
|
||||
exit 1
|
||||
fi
|
||||
set -e
|
||||
fi
|
||||
|
||||
# set a symlink to current
|
||||
currentlink="$workdir/Minecraft/current"
|
||||
if ([ ! -e "$currentlink" ] || [ -L "$currentlink" ]) && [ "$windows" == "false" ]; then
|
||||
set +e
|
||||
echo "Pointing $currentlink to $minecraftversion"
|
||||
rm -rf "$currentlink" || true
|
||||
ln -sfn "$minecraftversion" "$currentlink" || echo "Failed to set current symlink"
|
||||
fi
|
||||
|
||||
)
|
@ -1,24 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
gitcmd="git -c commit.gpgsign=false"
|
||||
|
||||
color() {
|
||||
if [ $2 ]; then
|
||||
printf "\e[$1;$2m"
|
||||
else
|
||||
printf "\e[$1m"
|
||||
fi
|
||||
}
|
||||
colorend() {
|
||||
printf "\e[m"
|
||||
}
|
||||
|
||||
paperstash() {
|
||||
STASHED=$($gitcmd stash 2>/dev/null|| return 0) # errors are ok
|
||||
}
|
||||
|
||||
paperunstash() {
|
||||
if [[ "$STASHED" != "No local changes to save" ]] ; then
|
||||
$gitcmd stash pop 2>/dev/null|| return 0 # errors are ok
|
||||
fi
|
||||
}
|
@ -1,126 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
(
|
||||
set -e
|
||||
nms="net/minecraft"
|
||||
export MODLOG=""
|
||||
PS1="$"
|
||||
basedir="$(cd "$1" && pwd -P)"
|
||||
source "$basedir/scripts/functions.sh"
|
||||
gitcmd="git -c commit.gpgsign=false"
|
||||
|
||||
workdir="$basedir/work"
|
||||
minecraftversion=$(cat "$workdir/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4)
|
||||
decompiledir="$workdir/Minecraft/$minecraftversion/forge"
|
||||
# replace for now
|
||||
decompiledir="$workdir/Minecraft/$minecraftversion/spigot"
|
||||
export importedmcdev=""
|
||||
function import {
|
||||
export importedmcdev="$importedmcdev $1"
|
||||
file="${1}.java"
|
||||
target="$workdir/Spigot/Spigot-Server/src/main/java/$nms/$file"
|
||||
base="$decompiledir/$nms/$file"
|
||||
|
||||
if [[ ! -f "$target" ]]; then
|
||||
export MODLOG="$MODLOG Imported $file from mc-dev\n";
|
||||
#echo "Copying $base to $target"
|
||||
mkdir -p "$(dirname "$target")"
|
||||
cp "$base" "$target" || exit 1
|
||||
else
|
||||
echo "UN-NEEDED IMPORT: $file"
|
||||
fi
|
||||
}
|
||||
|
||||
function importLibrary {
|
||||
group=$1
|
||||
lib=$2
|
||||
prefix=$3
|
||||
shift 3
|
||||
for file in "$@"; do
|
||||
file="$prefix/$file"
|
||||
target="$workdir/Spigot/Spigot-Server/src/main/java/${file}"
|
||||
targetdir=$(dirname "$target")
|
||||
mkdir -p "${targetdir}"
|
||||
base="$workdir/Minecraft/$minecraftversion/libraries/${group}/${lib}/$file"
|
||||
if [ ! -f "$base" ]; then
|
||||
echo "Missing $base"
|
||||
exit 1
|
||||
fi
|
||||
export MODLOG="$MODLOG Imported $file from $lib\n";
|
||||
sed 's/\r$//' "$base" > "$target" || exit 1
|
||||
done
|
||||
}
|
||||
|
||||
(
|
||||
cd "$workdir/Spigot/Spigot-Server/"
|
||||
lastlog=$($gitcmd log -1 --oneline)
|
||||
if [[ "$lastlog" = *"mc-dev Imports"* ]]; then
|
||||
$gitcmd reset --hard HEAD^
|
||||
fi
|
||||
)
|
||||
|
||||
|
||||
files=$(cat "$basedir/Spigot-Server-Patches/"* | grep "+++ b/src/main/java/net/minecraft/" | sort | uniq | sed 's/\+\+\+ b\/src\/main\/java\/net\/minecraft\///g')
|
||||
|
||||
nonnms=$(grep -R "new file mode" -B 1 "$basedir/Spigot-Server-Patches/" | grep -v "new file mode" | grep -oE --color=none "net\/minecraft\/.*.java" | sed 's/.*\/net\/minecraft\///g')
|
||||
function containsElement {
|
||||
local e
|
||||
for e in "${@:2}"; do
|
||||
[[ "$e" == "$1" ]] && return 0;
|
||||
done
|
||||
return 1
|
||||
}
|
||||
set +e
|
||||
for f in $files; do
|
||||
containsElement "$f" ${nonnms[@]}
|
||||
if [ "$?" == "1" ]; then
|
||||
if [ ! -f "$workdir/Spigot/Spigot-Server/src/main/java/net/minecraft/$f" ]; then
|
||||
f="$(echo "$f" | sed 's/.java//g')"
|
||||
if [ ! -f "$decompiledir/$nms/$f.java" ]; then
|
||||
echo "$(color 1 31) ERROR!!! Missing NMS$(color 1 34) $f $(colorend)";
|
||||
error=true
|
||||
else
|
||||
import $f
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if [ -n "$error" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
########################################################
|
||||
########################################################
|
||||
########################################################
|
||||
# NMS IMPORTS
|
||||
# Temporarily add new NMS dev imports here before you run paper patch
|
||||
# but after you have paper rb'd your changes, remove the line from this file before committing.
|
||||
# we do not need any lines added to this file for NMS
|
||||
|
||||
# import FileName
|
||||
|
||||
|
||||
########################################################
|
||||
########################################################
|
||||
########################################################
|
||||
# LIBRARY IMPORTS
|
||||
# These must always be mapped manually, no automatic stuff
|
||||
#
|
||||
# # group # lib # prefix # many files
|
||||
|
||||
# dont forget \ at end of each line but last
|
||||
importLibrary com.mojang authlib com/mojang/authlib yggdrasil/YggdrasilGameProfileRepository.java
|
||||
importLibrary com.mojang datafixerupper com/mojang/datafixers DataFixerBuilder.java
|
||||
importLibrary com.mojang datafixerupper com/mojang/datafixers/util Either.java
|
||||
importLibrary com.mojang datafixerupper com/mojang/serialization/codecs KeyDispatchCodec.java
|
||||
importLibrary com.mojang datafixerupper com/mojang/serialization Dynamic.java
|
||||
|
||||
########################################################
|
||||
########################################################
|
||||
########################################################
|
||||
set -e
|
||||
cd "$workdir/Spigot/Spigot-Server/"
|
||||
rm -rf nms-patches applyPatches.sh makePatches.sh >/dev/null 2>&1
|
||||
$gitcmd add --force . -A >/dev/null 2>&1
|
||||
echo -e "mc-dev Imports\n\n$MODLOG" | $gitcmd commit . -F -
|
||||
)
|
@ -1,77 +0,0 @@
|
||||
#!/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)
|
||||
spigotdecompiledir="$workdir/Minecraft/$minecraftversion/spigot"
|
||||
nms="$spigotdecompiledir"
|
||||
cb="src/main/java"
|
||||
gitcmd="git -c commit.gpgsign=false"
|
||||
|
||||
# https://stackoverflow.com/a/38595160
|
||||
# https://stackoverflow.com/a/800644
|
||||
if sed --version >/dev/null 2>&1; then
|
||||
strip_cr() {
|
||||
sed -i -- "s/\r//" "$@"
|
||||
}
|
||||
else
|
||||
strip_cr () {
|
||||
sed -i "" "s/$(printf '\r')//" "$@"
|
||||
}
|
||||
fi
|
||||
|
||||
patch=$(which patch 2>/dev/null)
|
||||
if [ "x$patch" == "x" ]; then
|
||||
patch="$basedir/hctap.exe"
|
||||
fi
|
||||
|
||||
# apply patches directly to the file tree
|
||||
# used to fix issues from upstream source repos
|
||||
cd "$basedir"
|
||||
prepatchesdir="$basedir/scripts/pre-source-patches"
|
||||
for file in $(ls "$prepatchesdir")
|
||||
do
|
||||
if [ $file == "README.md" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "--==-- Applying PRE-SOURCE patch: $file --==--"
|
||||
$patch -p0 < "$prepatchesdir/$file"
|
||||
done
|
||||
|
||||
echo "Applying CraftBukkit patches to NMS..."
|
||||
cd "$workdir/CraftBukkit"
|
||||
$gitcmd checkout -B patched HEAD >/dev/null 2>&1
|
||||
rm -rf "$cb/net"
|
||||
# create baseline NMS import so we can see diff of what CB changed
|
||||
while IFS= read -r -d '' file
|
||||
do
|
||||
patchFile="$file"
|
||||
file="$(echo "$file" | cut -d "/" -f2- | cut -d. -f1).java"
|
||||
mkdir -p "$(dirname $cb/"$file")"
|
||||
cp "$nms/$file" "$cb/$file"
|
||||
done < <(find nms-patches -type f -print0)
|
||||
$gitcmd add --force src
|
||||
$gitcmd commit -m "Minecraft $ $(date)" --author="Vanilla <auto@mated.null>"
|
||||
|
||||
# apply patches
|
||||
while IFS= read -r -d '' file
|
||||
do
|
||||
patchFile="$file"
|
||||
file="$(echo "$file" | cut -d "/" -f2- | cut -d. -f1).java"
|
||||
|
||||
echo "Patching $file < $patchFile"
|
||||
set +e
|
||||
strip_cr "$nms/$file" > /dev/null
|
||||
set -e
|
||||
|
||||
"$patch" -d src/main/java -p 1 < "$patchFile"
|
||||
done < <(find nms-patches -type f -print0)
|
||||
|
||||
$gitcmd add --force src
|
||||
$gitcmd commit -m "CraftBukkit $ $(date)" --author="CraftBukkit <auto@mated.null>"
|
||||
$gitcmd checkout -f HEAD~2
|
||||
)
|
@ -1,29 +0,0 @@
|
||||
#!/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)
|
||||
decompiledir="$workdir/Minecraft/$minecraftversion"
|
||||
nms="$decompiledir/spigot/net/minecraft"
|
||||
papernms="$basedir/Paper-Server/src/main/java/net/minecraft"
|
||||
mcdevsrc="${decompiledir}/src/net/minecraft"
|
||||
rm -rf "${mcdevsrc}"
|
||||
mkdir -p "${mcdevsrc}"
|
||||
cd "${nms}"
|
||||
|
||||
for file in $(find . -name '*.java')
|
||||
do
|
||||
if [ ! -f "${papernms}/${file}" ]; then
|
||||
destdir="${mcdevsrc}"/$(dirname "${file}")
|
||||
mkdir -p "${destdir}"
|
||||
cp "${file}" "${destdir}"
|
||||
fi
|
||||
done
|
||||
|
||||
cd "$basedir"
|
||||
echo "Built $decompiledir/src to be included in your project for src access";
|
||||
)
|
@ -1,22 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
(
|
||||
set -e
|
||||
basedir="$(cd "$1" && pwd -P)"
|
||||
workdir="$basedir/work"
|
||||
mcver=$(cat "$workdir/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4)
|
||||
paperjar="$basedir/Paper-Server/target/paper-$mcver.jar"
|
||||
vanillajar="$workdir/Minecraft/$mcver/$mcver.jar"
|
||||
|
||||
(
|
||||
cd "$workdir/Paperclip"
|
||||
mvn clean package "-Dmcver=$mcver" "-Dpaperjar=$paperjar" "-Dvanillajar=$vanillajar"
|
||||
)
|
||||
cp "$workdir/Paperclip/assembly/target/paperclip-${mcver}.jar" "$basedir/paperclip.jar"
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
echo ""
|
||||
echo "Build success!"
|
||||
echo "Copied final jar to $(cd "$basedir" && pwd -P)/paperclip.jar"
|
||||
) || exit 1
|
@ -1,16 +0,0 @@
|
||||
Files in this directory are applied directly to the tree before any other
|
||||
patches.
|
||||
|
||||
These patches are always applied directly from the root of the repository.
|
||||
"$basedir"
|
||||
|
||||
This allows us to fix malformed patch files and other changes from upstream.
|
||||
This is not intended to replace any other system and should not be used in
|
||||
place of the existing specific patch directories.
|
||||
|
||||
Documentation is intentionally sparse to avoid being misused.
|
||||
|
||||
`diff -ruN originalfile changedfile`
|
||||
|
||||
See the man pages on diff and patch.
|
||||
|
@ -1,70 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
(
|
||||
PS1="$"
|
||||
basedir="$(cd "$1" && pwd -P)"
|
||||
workdir="$basedir/work"
|
||||
source "$basedir/scripts/functions.sh"
|
||||
gitcmd="git -c commit.gpgsign=false -c core.safecrlf=false"
|
||||
|
||||
echo "Rebuilding patch files from current fork state..."
|
||||
nofilter="0"
|
||||
if [ "$2" == "nofilter" ] || [ "$2" == "noclean" ]; then
|
||||
nofilter="1"
|
||||
fi
|
||||
function cleanupPatches {
|
||||
cd "$1"
|
||||
for patch in *.patch; do
|
||||
echo "$patch"
|
||||
diffs=$($gitcmd diff --staged "$patch" | grep --color=none -E "^(\+|\-)" | grep --color=none -Ev "(\-\-\- a|\+\+\+ b|^.index)")
|
||||
|
||||
if [ "x$diffs" == "x" ] ; then
|
||||
$gitcmd reset HEAD "$patch" >/dev/null
|
||||
$gitcmd checkout -- "$patch" >/dev/null
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function savePatches {
|
||||
what=$1
|
||||
what_name=$(basename "$what")
|
||||
target=$2
|
||||
echo "Formatting patches for $what..."
|
||||
|
||||
cd "$basedir/${what_name}-Patches/"
|
||||
if [ -d "$basedir/$target/.git/rebase-apply" ]; then
|
||||
# in middle of a rebase, be smarter
|
||||
echo "REBASE DETECTED - PARTIAL SAVE"
|
||||
last=$(cat "$basedir/$target/.git/rebase-apply/last")
|
||||
next=$(cat "$basedir/$target/.git/rebase-apply/next")
|
||||
orderedfiles=$(find . -name "*.patch" | sort)
|
||||
for i in $(seq -f "%04g" 1 1 $last)
|
||||
do
|
||||
if [ $i -lt $next ]; then
|
||||
rm $(echo "$orderedfiles{@}" | sed -n "${i}p")
|
||||
fi
|
||||
done
|
||||
else
|
||||
rm -rf *.patch
|
||||
fi
|
||||
|
||||
cd "$basedir/$target"
|
||||
|
||||
$gitcmd format-patch --zero-commit --full-index --no-signature --no-stat -N -o "$basedir/${what_name}-Patches/" upstream/upstream >/dev/null
|
||||
cd "$basedir"
|
||||
$gitcmd add --force -A "$basedir/${what_name}-Patches"
|
||||
if [ "$nofilter" == "0" ]; then
|
||||
cleanupPatches "$basedir/${what_name}-Patches"
|
||||
fi
|
||||
echo " Patches saved for $what to $what_name-Patches/"
|
||||
}
|
||||
|
||||
savePatches "$workdir/Spigot/Spigot-API" "Paper-API"
|
||||
if [ -f "$basedir/Paper-API/.git/patch-apply-failed" ]; then
|
||||
echo "$(color 1 31)[[[ WARNING ]]] $(color 1 33)- Not saving Paper-Server as it appears Paper-API did not apply clean.$(colorend)"
|
||||
echo "$(color 1 33)If this is a mistake, delete $(color 1 34)Paper-API/.git/patch-apply-failed$(color 1 33) and run rebuild again.$(colorend)"
|
||||
echo "$(color 1 33)Otherwise, rerun ./paper patch to have a clean Paper-API apply so the latest Paper-Server can build.$(colorend)"
|
||||
else
|
||||
savePatches "$workdir/Spigot/Spigot-Server" "Paper-Server"
|
||||
fi
|
||||
) || exit 1
|
@ -1,81 +0,0 @@
|
||||
#!/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)"
|
||||
minecraftserverurl=$(cat "${workdir}/BuildData/info.json" | grep serverUrl | cut -d '"' -f 4)
|
||||
minecrafthash=$(cat "${workdir}/BuildData/info.json" | grep minecraftHash | cut -d '"' -f 4)
|
||||
accesstransforms="$workdir/BuildData/mappings/"$(cat "${workdir}/BuildData/info.json" | grep accessTransforms | cut -d '"' -f 4)
|
||||
classmappings="$workdir/BuildData/mappings/"$(cat "${workdir}/BuildData/info.json" | grep classMappings | cut -d '"' -f 4)
|
||||
membermappings="$workdir/BuildData/mappings/"$(cat "${workdir}/BuildData/info.json" | grep memberMappings | cut -d '"' -f 4)
|
||||
#packagemappings="$workdir/BuildData/mappings/"$(cat "${workdir}/BuildData/info.json" | grep packageMappings | cut -d '"' -f 4)
|
||||
decompiledir="$workdir/Minecraft/$minecraftversion"
|
||||
jarpath="$decompiledir/$minecraftversion"
|
||||
mkdir -p "$decompiledir"
|
||||
|
||||
echo "Downloading unmapped vanilla jar..."
|
||||
if [ ! -f "$jarpath.jar" ]; then
|
||||
curl -s -o "$jarpath.jar" "$minecraftserverurl"
|
||||
if [ "$?" != "0" ]; then
|
||||
echo "Failed to download the vanilla server jar. Check connectivity or try again later."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# OS X & FreeBSD don't have md5sum, just md5 -r
|
||||
#command -v md5sum >/dev/null 2>&1 || {
|
||||
# command -v md5 >/dev/null 2>&1 && {
|
||||
# shopt -s expand_aliases
|
||||
# alias md5sum='md5 -r'
|
||||
# echo "md5sum command not found, using an alias instead"
|
||||
# } || {
|
||||
# echo >&2 "No md5sum or md5 command found"
|
||||
# exit 1
|
||||
# }
|
||||
#}
|
||||
#
|
||||
#checksum=$(md5sum "$jarpath.jar" | cut -d ' ' -f 1)
|
||||
#if [ "$checksum" != "$minecrafthash" ]; then
|
||||
# echo "The MD5 checksum of the downloaded server jar does not match the BuildData hash."
|
||||
# exit 1
|
||||
#fi
|
||||
|
||||
# These specialsource commands are from https://hub.spigotmc.org/stash/projects/SPIGOT/repos/builddata/browse/info.json
|
||||
echo "Applying class mappings..."
|
||||
if [ ! -f "$jarpath-cl.jar" ]; then
|
||||
java -jar "$workdir/BuildData/bin/SpecialSource-2.jar" map --only . --only net/minecraft --only com/mojang/math --auto-lvt BASIC --auto-member SYNTHETIC -i "$jarpath.jar" -m "$classmappings" -o "$jarpath-cl.jar" 1>/dev/null
|
||||
if [ "$?" != "0" ]; then
|
||||
echo "Failed to apply class mappings."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Applying member mappings..."
|
||||
if [ ! -f "$jarpath-m.jar" ]; then
|
||||
java -jar "$workdir/BuildData/bin/SpecialSource-2.jar" map --only . --only com/mojang/math --only net/minecraft --auto-member TOKENS -i "$jarpath-cl.jar" -m "$membermappings" -o "$jarpath-m.jar" 1>/dev/null
|
||||
if [ "$?" != "0" ]; then
|
||||
echo "Failed to apply member mappings."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Creating remapped jar..."
|
||||
if [ ! -f "$jarpath-mapped.jar" ]; then
|
||||
java -jar "$workdir/BuildData/bin/SpecialSource.jar" --only . --only com/mojang/math --only net/minecraft -i "$jarpath-m.jar" --access-transformer "$accesstransforms" -m "/home/martin/Projects/Paper/bukkit-e3c5450d-fields.csrg" -o "$jarpath-mapped.jar" 1>/dev/null
|
||||
if [ "$?" != "0" ]; then
|
||||
echo "Failed to create remapped jar."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Installing remapped jar..."
|
||||
cd "$workdir/CraftBukkit" # Need to be in a directory with a valid POM at the time of install.
|
||||
mvn install:install-file -q -Dfile="$jarpath-mapped.jar" -Dpackaging=jar -DgroupId=io.papermc -DartifactId=minecraft-server -Dversion="$minecraftversion-SNAPSHOT"
|
||||
if [ "$?" != "0" ]; then
|
||||
echo "Failed to install remapped jar."
|
||||
exit 1
|
||||
fi
|
||||
)
|
@ -1,26 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -ue
|
||||
|
||||
# Check if an application is on the PATH.
|
||||
# If it is not, return with non-zero.
|
||||
_is_dep_available() {
|
||||
command -v "$1" >/dev/null || (echo "\`$1\` ${2:-command was not found in the path and is a required dependency}"; return 1)
|
||||
}
|
||||
|
||||
if [ -z "${1:-}" ]; then
|
||||
# No specific dependency was found; let's just check for all required ones.
|
||||
_is_dep_available git
|
||||
_is_dep_available patch
|
||||
_is_dep_available mvn
|
||||
_is_dep_available curl
|
||||
|
||||
_is_dep_available javac "was not found; you can download the JDK from https://adoptopenjdk.net/ or via your package manager"
|
||||
_is_dep_available jar "was not found; you can download the JDK from https://adoptopenjdk.net/ or via your package manager"
|
||||
else
|
||||
# Require all dependencies provided.
|
||||
for dep in $@; do
|
||||
_is_dep_available "$dep"
|
||||
done
|
||||
fi
|
||||
|
||||
# vim: set ff=unix autoindent ts=4 sw=4 tw=0 et :
|
@ -1,148 +0,0 @@
|
||||
#!/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 [ ! -z "$PAPER_JAR" ]; then
|
||||
jar="$PAPER_JAR"
|
||||
fi
|
||||
if [ ! -d "$folder" ]; then
|
||||
(
|
||||
echo "Building Patched Repo"
|
||||
cd "$basedir"
|
||||
./paper patch
|
||||
)
|
||||
fi
|
||||
|
||||
if [ "$2" == "build" ] || [ "$3" == "build" ]; then
|
||||
(
|
||||
echo "Building Paper"
|
||||
cd "$basedir"
|
||||
mvn package
|
||||
)
|
||||
fi
|
||||
#
|
||||
# JVM FLAGS
|
||||
#
|
||||
|
||||
if [ -f "$jar" ]; then
|
||||
cp "$jar" paper.jar
|
||||
fi
|
||||
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 "
|
||||
baseargs="$baseargs -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=40 -XX:G1MaxNewSizePercent=60 "
|
||||
baseargs="$baseargs -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=80 "
|
||||
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 paper.jar ${PAPER_TEST_APP_ARGS:-} nogui"
|
||||
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 [ ! -z "$PAPER_NO_MULTIPLEX" ]; then
|
||||
cmd="$cmd"
|
||||
elif [ "$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
|
@ -30,11 +30,11 @@ update Spigot
|
||||
|
||||
if [[ "$2" = "all" || "$2" = "a" ]] ; then
|
||||
update BuildData
|
||||
update Paperclip
|
||||
fi
|
||||
if [ "$updated" == "1" ]; then
|
||||
echo "Rebuilding patches without filtering to improve apply ability"
|
||||
cd "$basedir"
|
||||
scripts/rebuildPatches.sh "$basedir" nofilter 1>/dev/null|| exit 1
|
||||
./gradlew applyPatches -Dpaperweight.debug=true || exit 1
|
||||
./gradlew rebuildPatches || exit 1
|
||||
fi
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user