diff --git a/build.gradle.kts b/build.gradle.kts
index dfbedea5e..526c3b66f 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,8 +1,8 @@
plugins {
java
`maven-publish`
- id("com.github.johnrengelman.shadow") version "7.1.2" apply false
- id("io.papermc.paperweight.patcher") version "1.5.1"
+ id("com.github.johnrengelman.shadow") version "8.1.0" apply false
+ id("io.papermc.paperweight.patcher") version "1.5.2"
}
allprojects {
diff --git a/gradle.properties b/gradle.properties
index e7a95f2d5..ec99fd81b 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,7 +1,7 @@
group = org.purpurmc.purpur
version = 1.19.3-R0.1-SNAPSHOT
-paperCommit = ad3e1bc12104f1f8ea8bcf9248a606133bfc7780
+paperCommit = f408c253ecc8bf14afe72aa847bf8478465663c1
org.gradle.caching = true
org.gradle.parallel = true
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 943f0cbfa..ccebba771 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 f398c33c4..fc10b601f 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 65dcd68d6..79a61d421 100755
--- a/gradlew
+++ b/gradlew
@@ -144,7 +144,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC3045
+ # shellcheck disable=SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
@@ -152,7 +152,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC3045
+ # shellcheck disable=SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch
index 182499683..9678a64c6 100644
--- a/patches/server/0001-Pufferfish-Server-Changes.patch
+++ b/patches/server/0001-Pufferfish-Server-Changes.patch
@@ -20,7 +20,7 @@ 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 6a1853f3d988820f357c11371e32d50682e60401..d9ace6cd8e9cbf088e6664469fb94df0c964998f 100644
+index 4cc7d15f43b2547a723ea231bcf98bc13bdb85bf..af8a561e4d59d98ebb6d7a8fbcb072e361b10058 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -7,8 +7,12 @@ plugins {
@@ -2840,7 +2840,7 @@ index 663c1d8c1611af915a1bae733920dd75ad73feb1..c15e4d95baacd30f9614dc5526dc8fc1
final String id;
private final GameRules.Category category;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 3cbf801b2e5420c0e870f73788deb550e49ad54d..edd2c236ca7c37e1a3aec0048b8974f4cd62f2cc 100644
+index db971ca4136c7f922d630f38aa5c78cb04adbdfa..eb0a31c885ea64da00abcd5e67083392138b1ca0 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -270,6 +270,17 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -2967,7 +2967,7 @@ index 3cbf801b2e5420c0e870f73788deb550e49ad54d..edd2c236ca7c37e1a3aec0048b8974f4
public boolean isInWorldBounds(BlockPos pos) {
return pos.isInsideBuildHeightAndWorldBoundsHorizontal(this); // Paper - use better/optimized check
}
-@@ -917,13 +1020,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -919,13 +1022,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
try {
tickConsumer.accept(entity);
MinecraftServer.getServer().executeMidTickTasks(); // Paper - execute chunk tasks mid tick
@@ -2983,7 +2983,7 @@ index 3cbf801b2e5420c0e870f73788deb550e49ad54d..edd2c236ca7c37e1a3aec0048b8974f4
// Paper end
}
}
-@@ -1450,6 +1553,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1452,6 +1555,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
public ProfilerFiller getProfiler() {
diff --git a/patches/server/0073-Add-allow-water-in-end-world-option.patch b/patches/server/0073-Add-allow-water-in-end-world-option.patch
index cd9da4f66..6623811db 100644
--- a/patches/server/0073-Add-allow-water-in-end-world-option.patch
+++ b/patches/server/0073-Add-allow-water-in-end-world-option.patch
@@ -27,10 +27,10 @@ index 5c6aa9c464784ad5ee366412d080c72d3d22a76f..c03abc9589bf5f37abc1b0d355ed9784
return true;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 816f906f98adc180f37d2b216628e576ac837448..329e832cf3910a18158e841b39e59df519b83a53 100644
+index a8fe157c54b758db73639b21d7ef0fd646034af6..510ce1719082b7b5a77677d37ba78fed8d53008d 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -1638,4 +1638,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1640,4 +1640,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
return null;
}
// Paper end
diff --git a/patches/server/0278-Remove-Timings.patch b/patches/server/0278-Remove-Timings.patch
index 143a122c6..42b92db17 100644
--- a/patches/server/0278-Remove-Timings.patch
+++ b/patches/server/0278-Remove-Timings.patch
@@ -747,10 +747,10 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index f289d51d216dc503ffadd3210d7f781a4918ff08..8a9269c207c6b39d440d213679c31878bc689735 100644
+index 81533481aeeae1669fef821cf80b3d5ddc6afa3b..50c8910bca0bbf4177ed30985461fcd2f0ce82ea 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -1015,15 +1015,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1017,15 +1017,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
ProfilerFiller gameprofilerfiller = this.getProfiler();
gameprofilerfiller.push("blockEntities");
@@ -769,7 +769,7 @@ index f289d51d216dc503ffadd3210d7f781a4918ff08..8a9269c207c6b39d440d213679c31878
// Spigot start
// Iterator iterator = this.blockEntityTickers.iterator();
int tilesThisCycle = 0;
-@@ -1056,7 +1056,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1058,7 +1058,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
this.blockEntityTickers.removeAll(toRemove);
diff --git a/patches/server/0279-Remove-Mojang-Profiler.patch b/patches/server/0279-Remove-Mojang-Profiler.patch
index 0344e074f..736c35d72 100644
--- a/patches/server/0279-Remove-Mojang-Profiler.patch
+++ b/patches/server/0279-Remove-Mojang-Profiler.patch
@@ -1700,10 +1700,10 @@ index a213f4098859858a73ddd601bbe8c7511972e0d5..c0d39afe5b80159ed9aaca4ddd4763d7
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 8a9269c207c6b39d440d213679c31878bc689735..a9289072b048095330ea32d7c965e8dda61a36fc 100644
+index 50c8910bca0bbf4177ed30985461fcd2f0ce82ea..fef709fce7309795b6d62d33a220a2be2399efd3 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -711,9 +711,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -713,9 +713,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
BlockState iblockdata2 = this.getBlockState(pos);
if ((flags & 128) == 0 && iblockdata2 != iblockdata1 && (iblockdata2.getLightBlock(this, pos) != iblockdata1.getLightBlock(this, pos) || iblockdata2.getLightEmission() != iblockdata1.getLightEmission() || iblockdata2.useShapeForLightOcclusion() || iblockdata1.useShapeForLightOcclusion())) {
@@ -1715,7 +1715,7 @@ index 8a9269c207c6b39d440d213679c31878bc689735..a9289072b048095330ea32d7c965e8dd
}
/*
-@@ -1012,9 +1012,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1014,9 +1014,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
protected void tickBlockEntities() {
@@ -1727,7 +1727,7 @@ index 8a9269c207c6b39d440d213679c31878bc689735..a9289072b048095330ea32d7c965e8dd
//timings.tileEntityPending.startTiming(); // Spigot // Purpur
this.tickingBlockEntities = true;
if (!this.pendingBlockEntityTickers.isEmpty()) {
-@@ -1059,7 +1059,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1061,7 +1061,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
//timings.tileEntityTick.stopTiming(); // Spigot // Purpur
this.tickingBlockEntities = false;
co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper
@@ -1736,7 +1736,7 @@ index 8a9269c207c6b39d440d213679c31878bc689735..a9289072b048095330ea32d7c965e8dd
spigotConfig.currentPrimedTnt = 0; // Spigot
}
-@@ -1252,7 +1252,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1254,7 +1254,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@Override
public List getEntities(@Nullable Entity except, AABB box, Predicate super Entity> predicate) {
@@ -1745,7 +1745,7 @@ index 8a9269c207c6b39d440d213679c31878bc689735..a9289072b048095330ea32d7c965e8dd
List list = Lists.newArrayList();
((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call
return list;
-@@ -1271,7 +1271,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1273,7 +1273,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
public void getEntities(EntityTypeTest filter, AABB box, Predicate super T> predicate, List super T> result, int limit) {
@@ -1754,7 +1754,7 @@ index 8a9269c207c6b39d440d213679c31878bc689735..a9289072b048095330ea32d7c965e8dd
// Paper start - optimise this call
//TODO use limit
if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) {
-@@ -1600,7 +1600,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1602,7 +1602,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
public ProfilerFiller getProfiler() {
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 68b8bc8aa..9f01a48a4 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,5 +1,16 @@
import java.util.Locale
+pluginManagement {
+ repositories {
+ gradlePluginPortal()
+ maven("https://repo.papermc.io/repository/maven-public/")
+ }
+}
+
+plugins {
+ id("org.gradle.toolchains.foojay-resolver-convention") version "0.4.0"
+}
+
if (!file(".git").exists()) {
val errorText = """
@@ -20,13 +31,6 @@ if (!file(".git").exists()) {
error(errorText)
}
-pluginManagement {
- repositories {
- gradlePluginPortal()
- maven("https://repo.papermc.io/repository/maven-public/")
- }
-}
-
rootProject.name = "purpur"
for (name in listOf("Purpur-API", "Purpur-Server")) {