mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-25 08:38:45 +01:00
Setup for patch remapping, along with documentation on how to do it
This commit is contained in:
parent
0dedcd630d
commit
d73d550293
3 changed files with 107 additions and 67 deletions
170
README.md
170
README.md
|
@ -1,76 +1,114 @@
|
||||||
Paper ![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/PaperMC/Paper/Build%20Paper/master)
|
Remapping Fork Patches
|
||||||
===========
|
======================
|
||||||
|
|
||||||
High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.
|
This repo is based on Paper 1.16.5. It can be used to remap patches of Paper forks.
|
||||||
|
|
||||||
|
This branch is specifically and only for fork remapping. This is not for Paper development or for general use. It
|
||||||
|
requires special steps and special set up. Follow the instructions in this readme, don't ask for help if you haven't
|
||||||
|
read this entire readme and followed all of these steps.
|
||||||
|
|
||||||
**Support and Project Discussion:**
|
Remapping patches requires knowledge of how to fix issues when patches don't or can't apply correctly. Patches not
|
||||||
- [IRC](https://webchat.esper.net/?channels=paper) or [Discord](https://discord.gg/papermc)
|
applying correctly is not an issue with this repo or paperweight. You must fix them and continue the process manually
|
||||||
|
yourself. This is identical to any other upstream update.
|
||||||
|
|
||||||
How To (Server Admins)
|
Setup
|
||||||
------
|
-----
|
||||||
Paperclip is a jar file that you can download and run just like a normal jar file.
|
|
||||||
|
|
||||||
Download Paper from our [downloads page](https://papermc.io/downloads).
|
Paper's unmapped 1.16.5 patches are in [`patches/server-unmapped/0001`](https://github.com/PaperMC/Paper/tree/mappings/mojang/base/patches/server-unmapped/0001).
|
||||||
|
Place the patches you want to remap in `0002`. Paperweight will only remap patches placed in the last directory - for
|
||||||
|
example if there are directories `0001`, `0002`, and `0003`, only the patches in `0003` will be remapped.
|
||||||
|
|
||||||
Run the Paperclip jar directly from your server. Just like old times
|
If you are remapping patches for a fork of a fork, place you other upstream patches in `0002`, and your patches in `0003`.
|
||||||
|
|
||||||
* Documentation on using Paper: [paper.readthedocs.io](https://paper.readthedocs.io/)
|
Pre-remapping
|
||||||
* For a sneak peak on upcoming features, [see here](https://github.com/PaperMC/Paper/projects)
|
|
||||||
|
|
||||||
How To (Plugin Developers)
|
|
||||||
------
|
|
||||||
* See our API patches [here](Spigot-API-Patches)
|
|
||||||
* See upcoming, pending, and recently added API [here](https://github.com/PaperMC/Paper/projects/6)
|
|
||||||
* Paper API javadocs here: [papermc.io/javadocs](https://papermc.io/javadocs/)
|
|
||||||
* Maven Repo (for paper-api):
|
|
||||||
```xml
|
|
||||||
<repository>
|
|
||||||
<id>papermc</id>
|
|
||||||
<url>https://papermc.io/repo/repository/maven-public/</url>
|
|
||||||
</repository>
|
|
||||||
```
|
|
||||||
* Artifact Information:
|
|
||||||
```xml
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.destroystokyo.paper</groupId>
|
|
||||||
<artifactId>paper-api</artifactId>
|
|
||||||
<version>1.16.5-R0.1-SNAPSHOT</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
```
|
|
||||||
|
|
||||||
**Or alternatively, with Gradle:**
|
|
||||||
|
|
||||||
* Repository:
|
|
||||||
```groovy
|
|
||||||
repositories {
|
|
||||||
maven {
|
|
||||||
url 'https://papermc.io/repo/repository/maven-public/'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
* Artifact:
|
|
||||||
```groovy
|
|
||||||
dependencies {
|
|
||||||
compileOnly 'com.destroystokyo.paper:paper-api:1.16.5-R0.1-SNAPSHOT'
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
How To (Compiling Jar From Source)
|
|
||||||
------
|
|
||||||
To compile Paper, you need JDK 8, maven, and an internet connection.
|
|
||||||
|
|
||||||
Clone this repo, run `./paper jar` from *bash*, get files.
|
|
||||||
|
|
||||||
How To (Pull Request)
|
|
||||||
------
|
|
||||||
See [Contributing](CONTRIBUTING.md)
|
|
||||||
|
|
||||||
Special Thanks To:
|
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
![YourKit-Logo](https://www.yourkit.com/images/yklogo.png)
|
The patch remap task has no registered inputs, to make working with it repeated easier. That means if you run the task
|
||||||
|
by itself, it will fail.
|
||||||
|
|
||||||
[YourKit](https://www.yourkit.com/), makers of the outstanding java profiler, support open source projects of all kinds with their full featured [Java](https://www.yourkit.com/java/profiler) and [.NET](https://www.yourkit.com/.net/profiler) application profilers. We thank them for granting Paper an OSS license so that we can make our software the best it can be.
|
Before you start remapping patches, you must first set up the patch environment by running:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./gradlew applyPatches
|
||||||
|
```
|
||||||
|
|
||||||
|
You will only need to do this once to set up the environment before you start remapping.
|
||||||
|
|
||||||
|
Remapping
|
||||||
|
---------
|
||||||
|
|
||||||
|
To start remapping patches, run the `remapPatches` task:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./gradlew remapPatches
|
||||||
|
```
|
||||||
|
|
||||||
|
This can take a very long time, hours even, as patch remapping is a very complex and CPU & disk intensive task. How long
|
||||||
|
it takes depends entirely on how many patches there are to be remapped, and how powerful your computer is.
|
||||||
|
|
||||||
|
That said, while you may need to walk away during the process, the remapping process does require some amount of
|
||||||
|
hands-on work to get it to complete. If you leave for a while and come back to a patch failure, you'll need to fix the
|
||||||
|
issue and restart paperweight to pick up from where it left off, explained below.
|
||||||
|
|
||||||
|
### Fixing patch application issues
|
||||||
|
|
||||||
|
It is pretty unlikely that patch remapping will succeed first try. Paper's patches have already been fixed to apply
|
||||||
|
correctly on this branch, but either your patches or your upstream patches are likely to fail in one way or another due
|
||||||
|
to minor differences in tooling, setup, etc. Again, it is your responsibility to handle patch application issues as they
|
||||||
|
come up just like any other upstream update.
|
||||||
|
|
||||||
|
While the process of fixing issues with patch application is the same, how to resume and complete the process is
|
||||||
|
different, as it hopefully goes without saying that patch remapping is a more complex process which requires extra work
|
||||||
|
vs just a simple patch update.
|
||||||
|
|
||||||
|
### Patch remap working directory setup
|
||||||
|
|
||||||
|
There are a variety of files and directories that paperweight uses during patch remap, but only one directory that you
|
||||||
|
need to worry about. This is the directory where patches are applied, and code is remapped.
|
||||||
|
|
||||||
|
```
|
||||||
|
<project_root>/.gradle/caches/paperweight/patch-remap-input
|
||||||
|
```
|
||||||
|
|
||||||
|
That directory contains what would be the `Paper-Server` directory during the patch remapping process.
|
||||||
|
|
||||||
|
### Apply patch fixes
|
||||||
|
|
||||||
|
If a patch fails to apply, go to the `patch-remap-input` directory to fix the issue, like you normally would. This repo
|
||||||
|
contains the `apatch.sh` script in the `scripts` directory if you want to use it.
|
||||||
|
|
||||||
|
Once you have fixed the issues in patch application, and are ready to continue, run `am --continue` in the
|
||||||
|
`patch-remap-input` directory:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
git am --continue
|
||||||
|
```
|
||||||
|
|
||||||
|
Each patch is applied in its own `am` session, so this won't cause any of the other patches to incidentally apply. After
|
||||||
|
the `am` command in the above `patch-remap-input` directory is completed, continue the remapping process with:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./gradlew remapPatches --continue-remap
|
||||||
|
```
|
||||||
|
|
||||||
|
Due to the `--continue-remap` flag paperweight will pick up where it left off. If the patch that failed is in a
|
||||||
|
pre-remap upstream patch set, it will simply continue applying the other patches. If the patch is in the remap patch
|
||||||
|
set, paperweight will record the patch, remap it, and re-apply it on the remap branch as it normally would, then
|
||||||
|
continue applying the rest of the patches from there.
|
||||||
|
|
||||||
|
### Completed patch remap
|
||||||
|
|
||||||
|
After the process is complete and all patches have been remapped, the new remapped patches (only including the remap
|
||||||
|
patch set explained above) will be generated into `patches/server-remapped`.
|
||||||
|
|
||||||
|
Help, something went wrong
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
If something goes wrong, it's almost certainly a patch application issue discussed above. We will not support or help
|
||||||
|
you work through these kinds of issues. Dealing with patch breakages is part of the process of maintaining a fork, so if
|
||||||
|
you don't already know what to do, don't expect us to teach you how to do it.
|
||||||
|
|
||||||
|
If there is an error in paperweight that is causing some issue other than patch application, then we can look into
|
||||||
|
figuring out what's wrong and fixing it. Please, *please*, read through everything here first and follow the
|
||||||
|
instructions word for word. Do not try to simplify the process. Do not make up your own steps. If you do, again, we will
|
||||||
|
absolutely not help you.
|
||||||
|
|
|
@ -4,7 +4,7 @@ import io.papermc.paperweight.util.set
|
||||||
plugins {
|
plugins {
|
||||||
java
|
java
|
||||||
id("com.github.johnrengelman.shadow") version "7.0.0" apply false
|
id("com.github.johnrengelman.shadow") version "7.0.0" apply false
|
||||||
id("io.papermc.paperweight.core") version "1.1.8"
|
id("io.papermc.paperweight.core") version "1.1.9-SNAPSHOT"
|
||||||
}
|
}
|
||||||
|
|
||||||
subprojects {
|
subprojects {
|
||||||
|
|
|
@ -3,3 +3,5 @@ version = 1.16.5-R0.1-SNAPSHOT
|
||||||
|
|
||||||
mcVersion = 1.16.5
|
mcVersion = 1.16.5
|
||||||
packageVersion = 1_16_R3
|
packageVersion = 1_16_R3
|
||||||
|
|
||||||
|
org.gradle.jvmargs=-Xmx4G
|
||||||
|
|
Loading…
Reference in a new issue