Patches are very simple, but center around the directory Starlight-Patched
Assuming you already have forked the repository:
- Pull the latest changes from the main repository
- Type
./build.sh patch
in git bash to apply the changes from upstream - cd into corresponding directories for changes
These directories aren't git repositories in the traditional sense:
- Every single commit is a patch.
- 'origin/master' points to upstream
- Typing
git status
should show that we are 10 or 11 commits ahead of master, meaning we have 10 or 11 patches that doesn't- If it says something like
212 commits ahead, 207 commits behind
, then typegit fetch
to update
- If it says something like
Adding patches is very simple:
- Make changes
cd
into the directory you want to add a patch to- Type
git add .
to add your changes - Run
git commit
with the desired patch message cd ../
to get back to the project root- Run
./build.sh rebuild
in the main directory to convert your commit into a new patch - PR your patches back to this repository
Your commit will be converted into a patch that you can then PR back to this repository.
Modifying previous patches is a bit more complex:
This method works by temporarily resetting HEAD to the desired commit to edit using rebase.
- If you have changes you are working on type
git stash
to store them for later.- Later you can type
git stash pop
to get them back.
- Later you can type
- Type
git rebase -i upstream/upstream
- It should show something like this.
- Replace
pick
withedit
for the commit/patch you want to modify, and "save" the changes.- Only do this for one commit at a time.
- Make the changes you want to make to the patch.
- Type
git add .
to add your changes. - Type
git commit --amend
to commit.- MAKE SURE TO ADD
--amend
or else a new patch will be created. - You can also modify the commit message here.
- MAKE SURE TO ADD
- Type
git rebase --continue
to finish rebasing. - Type
./build.sh rebuild
in the main directory.- This will modify the appropriate patches based on your commits.
- PR your modifications back to this project.
If you are simply editing a more recent commit or your change is small, simply making the change at HEAD and then moving the commit after you have tested it may be easier.
This method has the benefit of being able to compile to test your change without messing with your API HEAD.
- Make your change while at HEAD
- Make a temporary commit. You don't need to make a message for this.
- Type
git rebase -i upstream/upstream
, move (cut) your temporary commit and move it under the line of the patch you wish to modify. - Change the
pick
withf
(fixup) ors
(squash) if you need to edit the commit message - Type
./build.sh rebuild
in the main directory- This will modify the appropriate patches based on your commits
- PR your modifications back to this project.
Steps to rebase a PR to include the latest changes from master
.
These steps assume the origin
remote is your fork of this repository and upstream
is the upstream repository.
- Pull latest changes from upstream's master:
git checkout master && git pull upstream master
. - Checkout feature/fix branch and rebase on master:
git checkout patch-branch && git rebase master
. - Apply updated patches:
./build.sh patch
. - If there are conflicts, fix them.
- If your PR creates new patches instead of modifying exist ones, ensure your newly-created patch is the last commit by either:
- Renaming the patch file with a large 4 digit number in front (e.g. 9999-Patch-to-add-some-new-stuff.patch)
- Run
git rebase -i upstream/upstream
and move the commits to the end.
- Rebuild patches:
./build.sh rebuild
. - Force push changes:
git push --force
.
When submitting patches, we may ask you to add notes to the patch header. While we do not require it for all changes, you should add patch notes when the changes you're making are technical or complex. It is very likely that your patch will remain long after we've all forgotten about the details of your PR, patch notes will help us maintain it without having to dig back through GitHub history looking for your PR.
These notes should express the intent of your patch, as well as any pertinent technical details we should keep in mind long-term. Ultimately, they exist to make it easier for us to maintain the patch across major version changes.
If you add a long message to your commit in the corresponding directory, the command will handle these patch notes automatically as part of generating the patch file. Otherwise, if you're careful they can be added by hand (though you should be careful when doing this, and run it through a patch and rebuild cycle once or twice).
From 02abc033533f70ef3165a97bfda3f5c2fa58633a Mon Sep 17 00:00:00 2001
From: Shane Freeder <theboyetronic@gmail.com>
Date: Sun, 15 Oct 2017 00:29:07 +0100
Subject: [PATCH] revert serverside behavior of keepalives
This patch intends to bump up the time that a client has to reply to the
server back to 30 seconds as per pre 1.12.2, which allowed clients
more than enough time to reply potentially allowing them to be less
tempermental due to lag spikes on the network thread, e.g. that caused
by plugins that are interacting with netty.
We also add a system property to allow people to tweak how long the server
will wait for a reply. There is a compromise here between lower and higher
values, lower values will mean that dead connections can be closed sooner,
whereas higher values will make this less sensitive to issues such as spikes
from networking or during connections flood of chunk packets on slower clients,
at the cost of dead connections being kept open for longer.
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index a92bf8967..d0ab87d0f 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java