Yatopia/yatopia
budgidiere ff560e687c
[WIP] Better Patch System (#18)
* Update build.yml

* Remove 3rd party patches

* Add Upsteam Submodules

* Fix patches

* ?

* Fix patches

* Add Fast Init script

* Lots of stuff

also it's broke

* more broken

* fixes

* mor stuff

* gfhfgh

hg

* fix patch

* fix up script

* update submodule

* add papercut

* update tuinity

* update gitmodules

* fix var name

* fix more var stuff

* some how it's not deleting shit anymore

* should now use the branch it just made

why are we doing this again?

* now it does thing thing

* return previous so YAPFA can use it

* ok now it really does the thing

* for REAL it does the thing

* don't do the thing because it causes too many problems

* fix api

* work

* use better patching for YAPFA patches

* fix better patching

* more fixes

* new patches stuff

* remove old 3rd parry patches add removed akarin patches

* make new branch for making patches

* hopefully build patches correctly

* fix gitignore and add config patches

* remove papercut files

* fix some weirdness

* fix bug

* time to do some fixin' 👀

* New Patch System Rebased Patches

* fix full build

* exit 1

* fix

* Remove patch

* Hopefully fix compile errors

* fixes

* this might work

* don't use rej for our patches

* tmp disable cache

* some times case sensitivity is dumb

* my sanity is at an all time low :)

* dfg

* readd cahce

* fix?

* Update Upstream

* fix perms

* fix

* fix api

* Redo API

* rm folders

* fix villager brain patch

* emc explosion pref

* fixed aikar's shit

* betterfix

* fix lagggg

* Origami

* Origami Fixes

* Update readme

* test async path finding

* WIP Async Path Finding

* WIP fix async path finding

* same as bellow

* same

* update to newer funcs

* fix newer funcs

* fix author

* Updates, Fixes, and new patches

* fixes

* possibly async flying path finding

* minor asnyc pathfinding fix

* test remove non asnyc path finder

* WIP make all path finding async

* Rename everything

* Exec flag

* Rebuild hashes

* remove dupe patch

* fix?

* Fix packages, redirect config

* old nav class is now async and back

* add getchatcolor.getbyid and handle patches with a . in them better

Co-authored-by: tr7zw <tr7zw@live.de>
Co-authored-by: Unknown <unknown@example.com>
Co-authored-by: Ovydux <68059159+Ovydux@users.noreply.github.com>
2020-08-03 11:48:42 -05:00

211 lines
7.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Yatopia Build Script
############################################################################
# Multicore building #
# By JosephWorks #
# -------------------------------------------------------------------------#
# To use multicore building, use "$mvncmd" instead of "maven" #
# 20-50% speed improvement is quite common. #
############################################################################
# Exit immediately if a command exits with a non-zero status
set -e
source "./scripts/functions.sh"
JAVA_VERSION=`java -version 2>&1 |awk 'NR==1{ gsub(/"/,""); print $3 }'`
failed=0
case "$1" in
"reset")
(
$scriptdir/resetToUpstream.sh "$basedir"
) || failed=1
;;
"i" | "in" | "init" | "initsubmodules")
(
set -e
basedir
$scriptdir/initUpstream.sh "$basedir" || exit 1
) || failed=1
;;
"r" | "rb" | "rbp" | "rebuild")
(
set -e
basedir
#$scriptdir/importSources.sh "$basedir" || exit 1
$scriptdir/rebuildPatches.sh "$basedir" || exit 1
) || failed=1
;;
"a" | "p" | "patch" | "apply")
(
set -e
$scriptdir/applyPatches.sh "$basedir" || exit 1
) || failed=1
;;
"b" | "bu" | "build" | "install")
(
echo "$JAVA_VERSION"
basedir
$mvncmd -N install surefire-report:report
cd ${FORK_NAME}-API
$mvncmd -e clean install && (cd ../Tuinity/Paper/Paper-MojangAPI && $mvncmd -e clean install) && cd ../${FORK_NAME}-Server && $mvncmd -e clean install surefire-report:report
) || failed=1
;;
"j" | "launcher" | "jar" | "paperclip")
(
basedir
$scriptdir/installLauncher.sh "$basedir"
) || failed=1
;;
"u" | "up" | "upstream" | "update")
(
basedir
$scriptdir/updateUpstream.sh "$basedir" 1
)
;;
"r" | "root")
basedir
;;
"a" | "api")
cd "$basedir/Yatopia-API"
;;
"s" | "server")
cd "$basedir/Yatopia-Server"
;;
"fup" | "fetchupstream")
$scriptdir/fetchUpstream.sh "$basedir" || exit 1
;;
"c" | "clean")
rm -rf Yatopia-API
rm -rf Yatopia-Server
rm -rf Paper
echo "Cleaned build files"
;;
"f" | "fu" | "full" | "fullbuild")
(
echo "$JAVA_VERSION"
$scriptdir/initUpstream.sh "$basedir" || exit 1
basedir
$scriptdir/updateUpstream.sh "$basedir" || exit 1
set -e
$scriptdir/applyPatches.sh "$basedir" || exit 1
basedir
$mvncmd -N install surefire-report:report
cd ${FORK_NAME}-API
($mvncmd -e clean install && (cd ../Tuinity/Paper/Paper-MojangAPI && $mvncmd -e clean install) && cd ../${FORK_NAME}-Server && $mvncmd -e clean install surefire-report:report) || exit 1
$scriptdir/installLauncher.sh "$basedir" || exit 1
) || failed=1
;;
"e" | "edit")
case "$2" in
"s" | "server")
export Yatopia_LAST_EDIT="$basedir/Yatopia-Server"
cd "$basedir/Yatopia-Server"
(
set -e
gitstash
cd "$basedir/Paper/Paper-Server"
$gitcmd fetch --all
# Create the upstream branch in Paper project with current state
$gitcmd checkout master # possibly already in
$gitcmd branch -D upstream || true
$gitcmd branch -f upstream HEAD
cd "$basedir/Yatopia-Server"
$gitcmd rebase -i upstream/upstream
gitunstash
)
;;
"a" | "api")
export Yatopia_LAST_EDIT="$basedir/Yatopia-API"
cd "$basedir/Yatopia-API"
(
set -e
gitstash
cd "$basedir/Paper/Paper-API"
$gitcmd fetch --all
# Create the upstream branch in Paper project with current state
$gitcmd checkout master # possibly already in
$gitcmd branch -D upstream || true
$gitcmd branch -f upstream HEAD
cd "$basedir/Yatopia-API"
$gitcmd rebase -i upstream/upstream
gitunstash
)
;;
"c" | "continue")
cd "$Yatopia_LAST_EDIT"
unset Yatopia_LAST_EDIT
(
set -e
$gitcmd add .
$gitcmd commit --amend
$gitcmd rebase --continue
basedir
$scriptdir/rebuildPatches.sh "$basedir"
)
;;
*)
echo "You must edit either the api or server."
;;
esac
;;
"setup")
if [[ -f ~/.bashrc ]] ; then
NAME="Yatopia"
if [[ ! -z "${2+x}" ]] ; then
NAME="$2"
fi
(grep "alias $NAME=" ~/.bashrc > /dev/null) && (sed -i "s|alias $NAME=.*|alias $NAME='. $SOURCE'|g" ~/.bashrc) || (echo "alias $NAME='. $SOURCE'" >> ~/.bashrc)
alias "$NAME=. $SOURCE"
echo "You can now just type '$NAME' at any time to access the Yatopia tool."
fi
;;
*)
echo "Yatopia build tool command. This provides a variety of commands to build and manage the Yatopia build"
echo "environment. For all of the functionality of this command to be available, you must first run the"
echo "'setup' command. View below for details. For essential building and patching, you do not need to do the setup."
echo ""
echo " Normal commands:"
echo " * r, rebuild | Rebuild patches, can be called from anywhere."
echo " * p, patch | Apply all patches to top of Paper without building it. Can be run from anywhere."
echo " * u, update | Update and patch the Paper submodule. Can be run from anywhere."
echo " * b, build | Build the projects, including the API and the Server. Can be ran anywhere."
echo " * j, jar | Build the projects and build the launcher jar. Can be ran anywhere."
echo " * d, deploy | Build the projects and deploy through Maven. Can be ran anywhere."
echo ""
echo " These commands require the setup command before use:"
echo " * r, root | Change directory to the root of the project."
echo " * a. api | Move to the Yatopia-API directory."
echo " * s, server | Move to the Yatopia-Server directory."
echo " * e, edit | Use to edit a specific patch, give it the argument \"server\" or \"api\""
echo " | respectively to edit the correct project. Use the argument \"continue\" after"
echo " | the changes have been made to finish and rebuild patches. Can be called from anywhere."
echo ""
echo " * setup | Add an alias to .bashrc to allow full functionality of this script. Run as:"
echo " | . ./Yatopia setup"
echo " | After you run this command you'll be able to just run 'Yatopia' from anywhere."
echo " | The default name for the resulting alias is 'Yatopia', you can give an argument to override"
echo " | this default, such as:"
echo " | . ./Yatopia setup example"
echo " | Which will allow you to run 'example' instead."
;;
esac
unset RCPATH
unset SOURCE
unset basedir
unset -f color
unset -f colorend
unset -f gitstash
unset -f gitunstash
if [[ "$failed" == "1" ]]; then
unset failed
false
else
unset failed
true
fi