papermc/scripts/decompile.sh
Aikar fa8406dab4
Create a symlink on not-windows to current minecraft decompile dir
This is useful for project developers switching back and forth between
1.12.2 and 1.13 so we can have our IDE automatically use the
current version we are working on for included mc-dev files.
2018-07-21 08:09:40 -04:00

42 lines
1.2 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)
windows="$([[ "$OSTYPE" == "cygwin" || "$OSTYPE" == "msys" ]] && echo "true" || echo "false")"
decompiledir="$workdir/Minecraft/$minecraftversion"
classdir="$decompiledir/classes"
echo "Extracting NMS classes..."
if [ ! -d "$classdir" ]; then
mkdir -p "$classdir"
cd "$classdir"
jar xf "$decompiledir/$minecraftversion-mapped.jar" net/minecraft/server
if [ "$?" != "0" ]; then
cd "$basedir"
echo "Failed to extract NMS classes."
exit 1
fi
fi
echo "Decompiling classes..."
if [ ! -d "$decompiledir/net/minecraft/server" ]; then
cd "$basedir"
java -jar "$workdir/BuildData/bin/fernflower.jar" -dgs=1 -hdc=0 -asc=1 -udv=0 "$classdir" "$decompiledir"
if [ "$?" != "0" ]; then
echo "Failed to decompile classes."
exit 1
fi
fi
# set a symlink to current
currentlink="$workdir/Minecraft/current"
if ([ ! -e "$currentlink" ] || [ -L "$currentlink" ]) && [ "$windows" == "false" ]; then
echo "Pointing $currentlink to $minecraftversion"
rm -rf "$currentlink"
ln -sfn "$minecraftversion" "$currentlink"
fi
)