diff --git a/build.gradle.kts b/build.gradle.kts
index 1191453a7..be167cf13 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -2,7 +2,7 @@ plugins {
java
`maven-publish`
id("com.github.johnrengelman.shadow") version "7.1.2" apply false
- id("io.papermc.paperweight.patcher") version "1.3.8"
+ id("io.papermc.paperweight.patcher") version "1.3.9"
}
val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/"
@@ -47,7 +47,7 @@ repositories {
}
dependencies {
- remapper("net.fabricmc:tiny-remapper:0.8.2:fat")
+ remapper("net.fabricmc:tiny-remapper:0.8.6:fat")
decompiler("net.minecraftforge:forgeflower:1.5.605.7")
paperclip("io.papermc:paperclip:3.0.2")
}
diff --git a/gradle.properties b/gradle.properties
index fe3f8ba84..f34c28045 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,7 +1,7 @@
group = org.purpurmc.purpur
version = 1.19.2-R0.1-SNAPSHOT
-paperCommit = b3b04f2ca109979cd9aebd8e7859decbeeba10d4
+paperCommit = 4a9c9b3fb0bad179c338b086756385f06858f973
org.gradle.caching = true
org.gradle.parallel = true
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 41d9927a4..249e5832f 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index aa991fcea..ae04661ee 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 1b6c78733..a69d9cb6c 100755
--- a/gradlew
+++ b/gradlew
@@ -205,6 +205,12 @@ set -- \
org.gradle.wrapper.GradleWrapperMain \
"$@"
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
diff --git a/gradlew.bat b/gradlew.bat
index ac1b06f93..53a6b238d 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -14,7 +14,7 @@
@rem limitations under the License.
@rem
-@if "%DEBUG%" == "" @echo off
+@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -25,7 +25,7 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
+if "%DIRNAME%"=="" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
+if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -75,13 +75,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end
@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
+if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch
index ea123fb63..06ef197d6 100644
--- a/patches/server/0001-Pufferfish-Server-Changes.patch
+++ b/patches/server/0001-Pufferfish-Server-Changes.patch
@@ -20,10 +20,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
diff --git a/build.gradle.kts b/build.gradle.kts
-index 44e0f265432487fe5c3c00c5245041298ade16a0..e775602d55dc6eade0f90a96b5d84595bb9dfdb8 100644
+index b0e4f11e8af4b909a56bb5576d05ef0537fb25f7..9d4fc7b32e4b3f232748b7f6808c33f989649f5c 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -9,8 +9,12 @@ plugins {
+@@ -7,8 +7,12 @@ plugins {
}
dependencies {
@@ -38,7 +38,7 @@ index 44e0f265432487fe5c3c00c5245041298ade16a0..e775602d55dc6eade0f90a96b5d84595
// Paper start
implementation("org.jline:jline-terminal-jansi:3.21.0")
implementation("net.minecrell:terminalconsoleappender:1.3.0")
-@@ -44,6 +48,13 @@ dependencies {
+@@ -42,6 +46,13 @@ dependencies {
runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3")
runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3")
@@ -52,7 +52,7 @@ index 44e0f265432487fe5c3c00c5245041298ade16a0..e775602d55dc6eade0f90a96b5d84595
testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test
testImplementation("junit:junit:4.13.2")
testImplementation("org.hamcrest:hamcrest-library:1.3")
-@@ -52,6 +63,14 @@ dependencies {
+@@ -50,6 +61,14 @@ dependencies {
}
val craftbukkitPackageVersion = "1_19_R1" // Paper
@@ -67,7 +67,7 @@ index 44e0f265432487fe5c3c00c5245041298ade16a0..e775602d55dc6eade0f90a96b5d84595
tasks.jar {
archiveClassifier.set("dev")
-@@ -64,7 +83,7 @@ tasks.jar {
+@@ -62,7 +81,7 @@ tasks.jar {
attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main",
"Implementation-Title" to "CraftBukkit",
@@ -1881,7 +1881,7 @@ index 540bc9500c35c0db719b00aa26f6fb3a1b08ed9f..806cb760822a99316b08ad95ff8922df
int LARGE_MAX_STACK_SIZE = 64;
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index f2908cf61ff28bef44fcf46b15cf585e942fd7ce..23ef9124bada519ab5ea3869b97d96679ad8f689 100644
+index 6fa47becd0f83ac4273ef3a10c314aa27b08184b..26b42474a94ccabd8cfcca39e4c37fb14852cbb8 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -291,7 +291,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -1966,7 +1966,7 @@ index f2908cf61ff28bef44fcf46b15cf585e942fd7ce..23ef9124bada519ab5ea3869b97d9667
this.level.getProfiler().push("entityBaseTick");
if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking
this.feetBlockState = null;
-@@ -4015,16 +4048,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -4019,16 +4052,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) {
@@ -1992,7 +1992,7 @@ index f2908cf61ff28bef44fcf46b15cf585e942fd7ce..23ef9124bada519ab5ea3869b97d9667
double d1 = 0.0D;
boolean flag = this.isPushedByFluid();
boolean flag1 = false;
-@@ -4032,14 +4067,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -4036,14 +4071,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
int k1 = 0;
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
@@ -2060,7 +2060,7 @@ index f2908cf61ff28bef44fcf46b15cf585e942fd7ce..23ef9124bada519ab5ea3869b97d9667
if (d2 >= axisalignedbb.minY) {
flag1 = true;
-@@ -4061,9 +4143,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -4065,9 +4147,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
// CraftBukkit end
}
}
diff --git a/patches/server/0003-Rebrand.patch b/patches/server/0003-Rebrand.patch
index 068b1f37e..dd85cf109 100644
--- a/patches/server/0003-Rebrand.patch
+++ b/patches/server/0003-Rebrand.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Rebrand
diff --git a/build.gradle.kts b/build.gradle.kts
-index 692789a473665c1fc7be56b8913cd208ae27d2e5..4e4bc7e55a81dc44d7f6cfc6a8761141d0d3bb6c 100644
+index 9d4fc7b32e4b3f232748b7f6808c33f989649f5c..8ffc0d92ea29b95e5406ed81088ecf00e7679a97 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -9,7 +9,7 @@ plugins {
+@@ -7,7 +7,7 @@ plugins {
}
dependencies {
@@ -17,7 +17,7 @@ index 692789a473665c1fc7be56b8913cd208ae27d2e5..4e4bc7e55a81dc44d7f6cfc6a8761141
// Pufferfish start
implementation("io.papermc.paper:paper-mojangapi:1.19.2-R0.1-SNAPSHOT") {
exclude("io.papermc.paper", "paper-api")
-@@ -44,6 +44,9 @@ dependencies {
+@@ -42,6 +42,9 @@ dependencies {
runtimeOnly("mysql:mysql-connector-java:8.0.29")
runtimeOnly("com.lmax:disruptor:3.4.4") // Paper
@@ -27,7 +27,7 @@ index 692789a473665c1fc7be56b8913cd208ae27d2e5..4e4bc7e55a81dc44d7f6cfc6a8761141
runtimeOnly("org.apache.maven:maven-resolver-provider:3.8.5")
runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3")
runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3")
-@@ -83,7 +86,7 @@ tasks.jar {
+@@ -81,7 +84,7 @@ tasks.jar {
attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main",
"Implementation-Title" to "CraftBukkit",
@@ -36,7 +36,7 @@ index 692789a473665c1fc7be56b8913cd208ae27d2e5..4e4bc7e55a81dc44d7f6cfc6a8761141
"Implementation-Vendor" to date, // Paper
"Specification-Title" to "Bukkit",
"Specification-Version" to project.version,
-@@ -182,7 +185,7 @@ fun TaskContainer.registerRunTask(
+@@ -153,7 +156,7 @@ fun TaskContainer.registerRunTask(
name: String,
block: JavaExec.() -> Unit
): TaskProvider = register(name) {
@@ -168,7 +168,7 @@ index abe37c7c3c6f5ab73afd738ec78f06d7e4d2ed96..b5b6657e52e4f7a630229bd3ba433438
stringbuilder.append(CrashReport.getErrorComment());
stringbuilder.append("\n\n");
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index af9da39dffda01325af2ab3dd8b5e1efb18e013a..957587f5c3f9c26794c80146b4deb282af3469e8 100644
+index 409a544a8cefcfd139bff9b5016fb7a587568a70..0eb4a5b18dcaccd37c2b2c71dbc000aeba559a1a 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -298,7 +298,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 29974e78e864d19681a2eb4b35dad2063465acd4..ce844dfc6f01f3aa6463054174a41f6f3161ad7a 100644
+index b0a3d8f7b1b1ad02e11eede0dd4dd88c75ea93ca..cb51ff789d0de27a3cb81ccb863897e427475cd1 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -4634,5 +4634,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -4638,5 +4638,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
public boolean canSaveToDisk() {
return true;
}
diff --git a/patches/server/0288-Remove-Mojang-Profiler.patch b/patches/server/0288-Remove-Mojang-Profiler.patch
index 27ea3fdf1..2414789e1 100644
--- a/patches/server/0288-Remove-Mojang-Profiler.patch
+++ b/patches/server/0288-Remove-Mojang-Profiler.patch
@@ -1013,7 +1013,7 @@ index 5725c6593480fada65facc29664a00a8cc073512..ccb1f998ae3122d1856d77149ff7e7df
};
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index cd97d28e85a6795099ec314e9574aa413ff93156..30cbbdd312d7cc34db7b281524adb5aa7563746b 100644
+index 6019072c354220fb07e14e746d925956e1ed37f0..d266d35e3c975a843c3f4f6d6857249280dd2811 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -821,7 +821,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -1099,7 +1099,7 @@ index cd97d28e85a6795099ec314e9574aa413ff93156..30cbbdd312d7cc34db7b281524adb5aa
}
this.isInsidePortal = false;
-@@ -3388,14 +3388,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3392,14 +3392,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
// Paper end
if (this.level instanceof ServerLevel && !this.isRemoved()) {
@@ -1116,7 +1116,7 @@ index cd97d28e85a6795099ec314e9574aa413ff93156..30cbbdd312d7cc34db7b281524adb5aa
PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit
if (shapedetectorshape == null) {
-@@ -3429,7 +3429,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3433,7 +3433,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
this.unRide();
// CraftBukkit end
@@ -1125,7 +1125,7 @@ index cd97d28e85a6795099ec314e9574aa413ff93156..30cbbdd312d7cc34db7b281524adb5aa
// Paper start - Change lead drop timing to prevent dupe
if (this instanceof Mob) {
((Mob) this).dropLeash(true, true); // Paper drop lead
-@@ -3452,10 +3452,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3456,10 +3456,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
this.removeAfterChangingDimensions();