diff --git a/.gitignore b/.gitignore index 658890931d..143c73b2a1 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,16 @@ build/ bin/ dist/ manifest.mf -work/ + +work/1.* +work/BuildData +work/Bukkit +work/CraftBukkit +work/Paperclip +work/Spigot +work/Spigot-Server +work/Spigot-API +work/*.jar # Mac filesystem dust .DS_Store/ @@ -37,15 +46,11 @@ work/ *~ # other stuff -Spigot-API -Spigot-Server + Paper-Server Paper-API PaperSpigot-Server PaperSpigot-API -Bukkit -CraftBukkit -Paperclip Paperclip.jar paperclip.jar paperclip-*.jar diff --git a/.gitmodules b/.gitmodules index f8d5e238f2..758536e061 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,15 +1,15 @@ -[submodule "Bukkit"] - path = Bukkit +[submodule "work/Bukkit"] + path = work/Bukkit url = https://hub.spigotmc.org/stash/scm/spigot/bukkit.git -[submodule "CraftBukkit"] - path = CraftBukkit +[submodule "work/CraftBukkit"] + path = work/CraftBukkit url = https://hub.spigotmc.org/stash/scm/spigot/craftbukkit.git -[submodule "BuildData"] - path = BuildData +[submodule "work/BuildData"] + path = work/BuildData url = https://hub.spigotmc.org/stash/scm/spigot/builddata.git -[submodule "Paperclip"] - path = Paperclip - url = https://github.com/PaperMC/Paperclip.git -[submodule "Spigot"] - path = Spigot +[submodule "work/Spigot"] + path = work/Spigot url = https://hub.spigotmc.org/stash/scm/spigot/spigot.git +[submodule "work/Paperclip"] + path = work/Paperclip + url = https://github.com/PaperMC/Paperclip.git diff --git a/Paperclip b/Paperclip deleted file mode 160000 index 6bff72410e..0000000000 --- a/Paperclip +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6bff72410effad0b2b0b0d8471a477f42bd484ff diff --git a/build.sh b/build.sh deleted file mode 100755 index 00eb9131e1..0000000000 --- a/build.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -(git submodule update --init && ./remap.sh && ./decompile.sh && ./init.sh && ./applyPatches.sh) || ( - echo "Failed to build Paper" - exit 1 -) || exit 1 -if [ "$1" == "--jar" ]; then - (mvn clean install && ./paperclip.sh) || exit 1 -fi diff --git a/paperclip.sh b/paperclip.sh deleted file mode 100755 index fe255bfa9b..0000000000 --- a/paperclip.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash -basedir=`pwd` -workdir=$basedir/work -mcver=$(cat BuildData/info.json | grep minecraftVersion | cut -d '"' -f 4) - -cd ./Paperclip -mvn clean package -cd .. -cp ./Paperclip/target/paperclip-${mcver}.jar ./paperclip.jar - -echo "" -echo "" -echo "" -echo "Build success!" -echo "Copied final jar to $(pwd)/paperclip.jar" diff --git a/applyPatches.sh b/scripts/applyPatches.sh similarity index 78% rename from applyPatches.sh rename to scripts/applyPatches.sh index 62b82e5b24..3c4d3a2a24 100755 --- a/applyPatches.sh +++ b/scripts/applyPatches.sh @@ -1,12 +1,13 @@ -#!/bin/bash +#!/usr/bin/env bash PS1="$" -basedir=`pwd` +basedir="$1" +workdir="$basedir/work" echo "Rebuilding Forked projects.... " function applyPatch { what=$1 - what_name=$(basename $what) + what_name=$(basename "$what") target=$2 branch=$3 @@ -21,7 +22,7 @@ function applyPatch { cd "$basedir/$target" echo "Resetting $target to $what_name..." git remote rm upstream > /dev/null 2>&1 - git remote add upstream $basedir/$what >/dev/null 2>&1 + git remote add upstream "$basedir/$what" >/dev/null 2>&1 git checkout master 2>/dev/null || git checkout -b master git fetch upstream >/dev/null 2>&1 git reset --hard upstream/upstream @@ -39,8 +40,8 @@ function applyPatch { } # Move into spigot dir -pushd Spigot -basedir=$basedir/Spigot +cd "$workdir/Spigot" +basedir=$(pwd) # Apply Spigot ( applyPatch ../Bukkit Spigot-API HEAD && @@ -50,17 +51,18 @@ basedir=$basedir/Spigot exit 1 ) || exit 1 # Move out of Spigot -popd -basedir=$(dirname "$basedir") +basedir="$1" +cd "$basedir" echo "Importing MC Dev" -./importmcdev.sh +./scripts/importmcdev.sh "$basedir" # Apply paper +cd "$basedir" ( - applyPatch Spigot/Spigot-API Paper-API HEAD && - applyPatch Spigot/Spigot-Server Paper-Server HEAD + applyPatch "work/Spigot/Spigot-API" Paper-API HEAD && + applyPatch "work/Spigot/Spigot-Server" Paper-Server HEAD ) || ( echo "Failed to apply Paper Patches" exit 1 diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000000..e5281754ba --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +basedir="$1" + +(git 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") || exit 1 +fi diff --git a/decompile.sh b/scripts/decompile.sh similarity index 60% rename from decompile.sh rename to scripts/decompile.sh index 81947e1c71..9dc9691690 100755 --- a/decompile.sh +++ b/scripts/decompile.sh @@ -1,11 +1,11 @@ -#!/bin/bash +#!/usr/bin/env bash PS1="$" -basedir=`pwd` -workdir=$basedir/work -minecraftversion=$(cat BuildData/info.json | grep minecraftVersion | cut -d '"' -f 4) -decompiledir=$workdir/$minecraftversion -classdir=$decompiledir/classes +basedir="$1" +workdir="$basedir/work" +minecraftversion=$(cat "$workdir/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4) +decompiledir="$workdir/$minecraftversion" +classdir="$decompiledir/classes" echo "Extracting NMS classes..." if [ ! -d "$classdir" ]; then @@ -22,7 +22,7 @@ fi echo "Decompiling classes..." if [ ! -d "$decompiledir/net/minecraft/server" ]; then cd "$basedir" - java -jar BuildData/bin/fernflower.jar -dgs=1 -hdc=0 -asc=1 -udv=0 "$classdir" "$decompiledir" + 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 diff --git a/scripts/envSetup.sh b/scripts/envSetup.sh new file mode 100644 index 0000000000..b2cd3d61c7 --- /dev/null +++ b/scripts/envSetup.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +# Set root project directory +CWD=$(pwd) + +rbp() { + NEW_CWD=$(pwd) + cd "$CWD" + scripts/rebuildPatches.sh "$CWD" + cd "$NEW_CWD" +} + +rebuildPatches() { + rbp +} + +lunch() { + NEW_CWD=$(pwd) + cd "$CWD" + + if [[ "$1" = "jar" ]] || [[ "$1" = "--jar" ]] ; then + ARG="--jar" + fi + + scripts/build.sh "$CWD" "$ARG" + ARG="" + + cd "$NEW_CWD" +} + +root() { + cd "$CWD" +} + +LAST_EDIT="" + +edit() { + if [[ "$1" = "server" ]] ; then + cd "$CWD/Paper-Server" + LAST_EDIT=$(pwd) + + stash + git rebase -i upstream/upstream + unstash + elif [[ "$1" = "api" ]] ; then + cd "$CWD/Paper-API" + LAST_EDIT=$(pwd) + + stash + git rebase -i upstream/upstream + unstash + elif [[ "$1" = "continue" ]] ; then + cd "$LAST_EDIT" + git add . + git commit --amend + git rebase --continue + else + echo "You must edit either the api or server." + fi +} + +stash() { + STASHED=$(git stash) +} + +unstash() { + if [[ "$STASHED" != "No local changes to save" ]] ; then + git stash pop + fi +} \ No newline at end of file diff --git a/importmcdev.sh b/scripts/importmcdev.sh similarity index 79% rename from importmcdev.sh rename to scripts/importmcdev.sh index 9900c11dc0..829a5ea1a8 100755 --- a/importmcdev.sh +++ b/scripts/importmcdev.sh @@ -3,17 +3,17 @@ nms="net/minecraft/server" export MODLOG="" PS1="$" -basedir=`pwd` +basedir="$1" -workdir=$basedir/work -minecraftversion=$(cat BuildData/info.json | grep minecraftVersion | cut -d '"' -f 4) -decompiledir=$workdir/$minecraftversion +workdir="$basedir/work" +minecraftversion=$(cat "$workdir/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4) +decompiledir="$workdir/$minecraftversion" export importedmcdev="" function import { export importedmcdev="$importedmcdev $1" file="${1}.java" - target="$basedir/Spigot/Spigot-Server/src/main/java/$nms/$file" + target="$workdir/Spigot/Spigot-Server/src/main/java/$nms/$file" base="$decompiledir/$nms/$file" if [[ ! -f "$target" ]]; then @@ -24,7 +24,7 @@ function import { } ( - cd Spigot/Spigot-Server/ + cd "$workdir/Spigot/Spigot-Server/" lastlog=$(git log -1 --oneline) if [[ "$lastlog" = *"mc-dev Imports"* ]]; then git reset --hard HEAD^ @@ -60,7 +60,7 @@ import PersistentVillage import TileEntityEnderChest ( - cd Spigot/Spigot-Server/ + cd "$workdir/Spigot/Spigot-Server/" git add src -A echo -e "mc-dev Imports\n\n$MODLOG" | git commit src -F - ) diff --git a/init.sh b/scripts/init.sh similarity index 57% rename from init.sh rename to scripts/init.sh index 95dc3b37c3..af9b1b9032 100755 --- a/init.sh +++ b/scripts/init.sh @@ -1,32 +1,27 @@ -#!/bin/bash +#!/usr/bin/env bash PS1="$" -basedir=`pwd` +basedir="$1" workdir="$basedir/work" -minecraftversion=$(cat BuildData/info.json | grep minecraftVersion | cut -d '"' -f 4) +minecraftversion=$(cat "$workdir/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4) decompiledir="$workdir/$minecraftversion" nms="$decompiledir/net/minecraft/server" -cb=src/main/java/net/minecraft/server - -paperjar="Paper-Server/target/paper-${minecraftversion}.jar" -vanillajar="work/${minecraftversion}/${minecraftversion}.jar" - -echo -e "mcver=${minecraftversion}\npaperjar=../${paperjar}\nvanillajar=../${vanillajar}\n" > paperclip.properties +cb="src/main/java/net/minecraft/server" patch=$(which patch 2>/dev/null) if [ "x$patch" == "x" ]; then - patch=$basedir/hctap.exe + patch="$basedir/hctap.exe" fi echo "Applying CraftBukkit patches to NMS..." -cd "$basedir/CraftBukkit" +cd "$workdir/CraftBukkit" git checkout -B patched HEAD >/dev/null 2>&1 -rm -rf $cb -mkdir -p $cb +rm -rf "$cb" +mkdir -p "$cb" for file in $(ls nms-patches) do patchFile="nms-patches/$file" - file="$(echo $file | cut -d. -f1).java" + file="$(echo "$file" | cut -d. -f1).java" echo "Patching $file < $patchFile" sed -i 's/\r//' "$nms/$file" > /dev/null diff --git a/makemcdevsrc.sh b/scripts/makemcdevsrc.sh similarity index 52% rename from makemcdevsrc.sh rename to scripts/makemcdevsrc.sh index 375127b052..b5ea7daeab 100755 --- a/makemcdevsrc.sh +++ b/scripts/makemcdevsrc.sh @@ -1,14 +1,14 @@ -#!/bin/bash +#!/usr/bin/env bash PS1="$" -workdir=work -minecraftversion=$(cat BuildData/info.json | grep minecraftVersion | cut -d '"' -f 4) -decompiledir=$workdir/$minecraftversion -nms=$decompiledir/net/minecraft/server -cb=src/main/java/net/minecraft/server -papernms=Paper-Server/src/main/java/net/minecraft/server -mcdevsrc=${decompiledir}/src/net/minecraft/server +basedir="$1" +workdir="$basedir/work" +minecraftversion=$(cat "$basedir/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4) +decompiledir="$workdir/$minecraftversion" +nms="$decompiledir/net/minecraft/server" +papernms="Paper-Server/src/main/java/net/minecraft/server" +mcdevsrc="${decompiledir}/src/net/minecraft/server" rm -rf "${mcdevsrc}" mkdir -p "${mcdevsrc}" cp ${nms}/*.java "${mcdevsrc}/" diff --git a/scripts/paperclip.sh b/scripts/paperclip.sh new file mode 100755 index 0000000000..9840f3c944 --- /dev/null +++ b/scripts/paperclip.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +basedir="$1" +workdir="$basedir/work" +mcver=$(cat "$workdir/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4) +paperjar="../../Paper-Server/target/paper-$mcver.jar" +vanillajar="../$mcver/$mcver.jar" + +cd "$workdir/Paperclip" +mvn clean package "-Dmcver=$mcver" "-Dpaperjar=$paperjar" "-Dvanillajar=$vanillajar" +cd .. +cp "$workdir/Paperclip/target/paperclip-${mcver}.jar" "$basedir/paperclip.jar" + +echo "" +echo "" +echo "" +echo "Build success!" +echo "Copied final jar to $basedir/paperclip.jar" diff --git a/rebuildPatches.sh b/scripts/rebuildPatches.sh similarity index 65% rename from rebuildPatches.sh rename to scripts/rebuildPatches.sh index 003269f6ac..6416e42e85 100755 --- a/rebuildPatches.sh +++ b/scripts/rebuildPatches.sh @@ -1,7 +1,8 @@ -#!/bin/bash +#!/usr/bin/env bash PS1="$" -basedir=`pwd` +basedir="$1" +workdir="$basedir/work" echo "Rebuilding patch files from current fork state..." git config core.safecrlf false @@ -9,8 +10,8 @@ function cleanupPatches { cd "$1" for patch in *.patch; do echo "$patch" - gitver=$(tail -n 2 $patch | grep -ve "^$" | tail -n 1) - diffs=$(git diff --staged $patch | grep -E "^(\+|\-)" | grep -Ev "(From [a-z0-9]{32,}|\-\-\- a|\+\+\+ b|.index)") + gitver=$(tail -n 2 "$patch" | grep -ve "^$" | tail -n 1) + diffs=$(git diff --staged "$patch" | grep -E "^(\+|\-)" | grep -Ev "(From [a-z0-9]{32,}|\-\-\- a|\+\+\+ b|.index)") testver=$(echo "$diffs" | tail -n 2 | grep -ve "^$" | tail -n 1 | grep "$gitver") if [ "x$testver" != "x" ]; then @@ -18,15 +19,15 @@ function cleanupPatches { fi if [ "x$diffs" == "x" ] ; then - git reset HEAD $patch >/dev/null - git checkout -- $patch >/dev/null + git reset HEAD "$patch" >/dev/null + git checkout -- "$patch" >/dev/null fi done } function savePatches { what=$1 - what_name=$(basename $what) + what_name=$(basename "$what") target=$2 echo "Formatting patches for $what..." @@ -42,5 +43,5 @@ function savePatches { echo " Patches saved for $what to $what_name-Patches/" } -savePatches Spigot/Spigot-API Paper-API -savePatches Spigot/Spigot-Server Paper-Server +savePatches "$workdir/Spigot/Spigot-API" "Paper-API" +savePatches "$workdir/Spigot/Spigot-Server" "Paper-Server" diff --git a/remap.sh b/scripts/remap.sh similarity index 54% rename from remap.sh rename to scripts/remap.sh index 3bd79f3ba2..abfde02e6a 100755 --- a/remap.sh +++ b/scripts/remap.sh @@ -1,15 +1,15 @@ -#!/bin/bash +#!/usr/bin/env bash PS1="$" -basedir=`pwd` -workdir=$basedir/work -minecraftversion=$(cat BuildData/info.json | grep minecraftVersion | cut -d '"' -f 4) -minecrafthash=$(cat BuildData/info.json | grep minecraftHash | cut -d '"' -f 4) -accesstransforms=BuildData/mappings/$(cat BuildData/info.json | grep accessTransforms | cut -d '"' -f 4) -classmappings=BuildData/mappings/$(cat BuildData/info.json | grep classMappings | cut -d '"' -f 4) -membermappings=BuildData/mappings/$(cat BuildData/info.json | grep memberMappings | cut -d '"' -f 4) -packagemappings=BuildData/mappings/$(cat BuildData/info.json | grep packageMappings | cut -d '"' -f 4) -jarpath=$workdir/$minecraftversion/$minecraftversion +basedir="$1" +workdir="$basedir/work" +minecraftversion=$(cat ${workdir}/BuildData/info.json | grep minecraftVersion | 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) +jarpath="$workdir/$minecraftversion/$minecraftversion" echo "Downloading unmapped vanilla jar..." if [ ! -f "$jarpath.jar" ]; then @@ -36,7 +36,7 @@ fi echo "Applying class mappings..." if [ ! -f "$jarpath-cl.jar" ]; then - java -jar BuildData/bin/SpecialSource-2.jar map -i "$jarpath.jar" -m "$classmappings" -o "$jarpath-cl.jar" 1>/dev/null + java -jar "$workdir/BuildData/bin/SpecialSource-2.jar" map -i "$jarpath.jar" -m "$classmappings" -o "$jarpath-cl.jar" 1>/dev/null if [ "$?" != "0" ]; then echo "Failed to apply class mappings." exit 1 @@ -45,7 +45,7 @@ fi echo "Applying member mappings..." if [ ! -f "$jarpath-m.jar" ]; then - java -jar BuildData/bin/SpecialSource-2.jar map -i "$jarpath-cl.jar" -m "$membermappings" -o "$jarpath-m.jar" 1>/dev/null + java -jar "$workdir/BuildData/bin/SpecialSource-2.jar" map -i "$jarpath-cl.jar" -m "$membermappings" -o "$jarpath-m.jar" 1>/dev/null if [ "$?" != "0" ]; then echo "Failed to apply member mappings." exit 1 @@ -54,7 +54,7 @@ fi echo "Creating remapped jar..." if [ ! -f "$jarpath-mapped.jar" ]; then - java -jar BuildData/bin/SpecialSource.jar --kill-lvt -i "$jarpath-m.jar" --access-transformer "$accesstransforms" -m "$packagemappings" -o "$jarpath-mapped.jar" 1>/dev/null + java -jar "$workdir/BuildData/bin/SpecialSource.jar" --kill-lvt -i "$jarpath-m.jar" --access-transformer "$accesstransforms" -m "$packagemappings" -o "$jarpath-mapped.jar" 1>/dev/null if [ "$?" != "0" ]; then echo "Failed to create remapped jar." exit 1 @@ -62,7 +62,7 @@ if [ ! -f "$jarpath-mapped.jar" ]; then fi echo "Installing remapped jar..." -cd CraftBukkit # Need to be in a directory with a valid POM at the time of install. +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=org.spigotmc -DartifactId=minecraft-server -Dversion="$minecraftversion-SNAPSHOT" if [ "$?" != "0" ]; then echo "Failed to install remapped jar." diff --git a/upstreamMerge.sh b/scripts/upstreamMerge.sh similarity index 66% rename from upstreamMerge.sh rename to scripts/upstreamMerge.sh index c3d5db20ad..16dfaf48d1 100755 --- a/upstreamMerge.sh +++ b/scripts/upstreamMerge.sh @@ -1,10 +1,11 @@ -#!/bin/bash +#!/usr/bin/env bash PS1="$" -basedir=`pwd` +basedir="$1" +workdir="$basedir/work" function update { - cd "$basedir/$1" + cd "$workdir/$1" git fetch && git reset --hard origin/master cd ../ git add $1 diff --git a/BuildData b/work/BuildData similarity index 100% rename from BuildData rename to work/BuildData diff --git a/Bukkit b/work/Bukkit similarity index 100% rename from Bukkit rename to work/Bukkit diff --git a/CraftBukkit b/work/CraftBukkit similarity index 100% rename from CraftBukkit rename to work/CraftBukkit diff --git a/work/Paperclip b/work/Paperclip new file mode 160000 index 0000000000..1fb6fefbe3 --- /dev/null +++ b/work/Paperclip @@ -0,0 +1 @@ +Subproject commit 1fb6fefbe36461552cd263092d7700a57bb1f7c3 diff --git a/Spigot b/work/Spigot similarity index 100% rename from Spigot rename to work/Spigot