ef170ee659
--- work/Bukkit Submodule work/Bukkit 6eac6d70..1ef8b9d9: > Add Player#openBook(ItemStack) method --- work/CraftBukkit Submodule work/CraftBukkit 17543ecf..649921e5: > Add Player#openBook(ItemStack) method > SPIGOT-2000: Picking up items to shield slot working inconsistently when inventory is full > SPIGOT-5037: Player.openMerchant does not show merchant level > SPIGOT-5038: Inventory.getHolder returns null for wandering traders --- work/Spigot Submodule work/Spigot baafee91..df0eb250: > SPIGOT-5043: Desync if world is changed in PlayerSpawnLocationEvent > Rebuild patches Implementation developer note: This patch adds a "pre-source" patch system for fixing malformed patches from upstream directly. This seems to keep happening so it's best we have some way to deal with them. This system brings those issues into our domain rather than needing to wait for upstream to fix their malformed files.
66 Zeilen
1.7 KiB
Bash
Ausführbare Datei
66 Zeilen
1.7 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)
|
|
spigotdecompiledir="$workdir/Minecraft/$minecraftversion/spigot"
|
|
nms="$spigotdecompiledir/net/minecraft/server"
|
|
cb="src/main/java/net/minecraft/server"
|
|
gitcmd="git -c commit.gpgsign=false"
|
|
|
|
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="$workdir/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"
|
|
mkdir -p "$cb"
|
|
# create baseline NMS import so we can see diff of what CB changed
|
|
for file in $(ls nms-patches)
|
|
do
|
|
patchFile="nms-patches/$file"
|
|
file="$(echo "$file" | cut -d. -f1).java"
|
|
cp "$nms/$file" "$cb/$file"
|
|
done
|
|
$gitcmd add src
|
|
$gitcmd commit -m "Minecraft $ $(date)" --author="Vanilla <auto@mated.null>"
|
|
|
|
# apply patches
|
|
for file in $(ls nms-patches)
|
|
do
|
|
patchFile="nms-patches/$file"
|
|
file="$(echo "$file" | cut -d. -f1).java"
|
|
|
|
echo "Patching $file < $patchFile"
|
|
set +e
|
|
sed -i 's/\r//' "$nms/$file" > /dev/null
|
|
set -e
|
|
|
|
"$patch" -s -d src/main/java/ "net/minecraft/server/$file" < "$patchFile"
|
|
done
|
|
|
|
$gitcmd add src
|
|
$gitcmd commit -m "CraftBukkit $ $(date)" --author="CraftBukkit <auto@mated.null>"
|
|
$gitcmd checkout -f HEAD~2
|
|
)
|