diff --git a/README.md b/README.md
index 9660ba25e..ddc75549f 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@
## Purpur
[](LICENSE)
-[](https://purpurmc.org/downloads/)
+[](https://purpurmc.org/downloads/)
[](https://www.codefactor.io/repository/github/PurpurMC/Purpur)
[](https://purpurmc.org/discord)
@@ -27,7 +27,7 @@ Join us on Discord:
## Downloads
Downloads can be obtained from the [downloads page](https://purpurmc.org/downloads/) or the [downloads API](https://api.purpurmc.org).
-[](https://purpurmc.org/downloads/)
+[](https://purpurmc.org/downloads/)
Downloads API endpoints:
* List versions of Minecraft with builds available:
@@ -67,7 +67,7 @@ Maven
org.purpurmc.purpur
purpur-api
- 1.20-R0.1-SNAPSHOT
+ 1.20.1-R0.1-SNAPSHOT
provided
```
@@ -80,7 +80,7 @@ repositories {
```
```kotlin
dependencies {
- compileOnly("org.purpurmc.purpur:purpur-api:1.20-R0.1-SNAPSHOT")
+ compileOnly("org.purpurmc.purpur:purpur-api:1.20.1-R0.1-SNAPSHOT")
}
```
diff --git a/gradle.properties b/gradle.properties
index 07ca714c4..86ab27745 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,8 +1,8 @@
group = org.purpurmc.purpur
-version = 1.20-R0.1-SNAPSHOT
+version = 1.20.1-R0.1-SNAPSHOT
-mcVersion = 1.20
-paperCommit = f4dfdcbb5b287b1f42b31cb3a2ddada9bbf81703
+mcVersion = 1.20.1
+paperCommit = 2e363c73ba3c0a7b3d5138ec55a6e93c7befb5bb
org.gradle.caching = true
org.gradle.parallel = true
diff --git a/patches/api/0002-Purpur-config-files.patch b/patches/api/0002-Purpur-config-files.patch
index a993285a1..bb15b08cb 100644
--- a/patches/api/0002-Purpur-config-files.patch
+++ b/patches/api/0002-Purpur-config-files.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Purpur config files
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index 1d1a1d087dabc9794e0062a064da2cced4062309..9fac86bb13066ff685378ef601857730bd74964b 100644
+index 5b225bbb128893d67251a96ab318035802a0cf76..861e193e7c1fe1b8e69e22b5c80f391701446bc5 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
-@@ -1994,6 +1994,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
+@@ -2007,6 +2007,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
}
// Paper end
diff --git a/patches/api/0003-Purpur-client-support.patch b/patches/api/0003-Purpur-client-support.patch
index 5198d9964..1a7f3b708 100644
--- a/patches/api/0003-Purpur-client-support.patch
+++ b/patches/api/0003-Purpur-client-support.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 997afb6739c72529ea8226228a9905d72f77c89a..dbc4ce2bd8b48f6af6f33d75100f089bc110f657 100644
+index 4ee0eb177f6b5765a9d7263576bb36c8a8366979..c3035f43078146875474c7f77cb7afd37fae3ff7 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -3074,4 +3074,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -3087,4 +3087,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@Override
Spigot spigot();
// Spigot end
diff --git a/patches/api/0008-AFK-API.patch b/patches/api/0008-AFK-API.patch
index 214ff4691..b6105e104 100644
--- a/patches/api/0008-AFK-API.patch
+++ b/patches/api/0008-AFK-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] AFK API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index dbc4ce2bd8b48f6af6f33d75100f089bc110f657..5a303d33de32ce3c7480ab866703f70d1968b84b 100644
+index c3035f43078146875474c7f77cb7afd37fae3ff7..169a523eb11b899bd4a227c788750e4b226163c6 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -3082,5 +3082,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -3095,5 +3095,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @return True if Player uses Purpur Client
*/
public boolean usesPurpurClient();
diff --git a/patches/api/0009-Bring-back-server-name.patch b/patches/api/0009-Bring-back-server-name.patch
index fbee56e54..088077355 100644
--- a/patches/api/0009-Bring-back-server-name.patch
+++ b/patches/api/0009-Bring-back-server-name.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index b0bc2df41506770e2854a287813f1c53f003eda1..f30ddfb1a5800542d456597b93d4ee66c7f1d2ee 100644
+index ef36d793ab77c7b7208f8f5994815599cff470d1..68b218e991c9d73f4ec52a1d5c6bba9140427472 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
-@@ -2483,4 +2483,15 @@ public final class Bukkit {
+@@ -2500,4 +2500,15 @@ public final class Bukkit {
public static Server.Spigot spigot() {
return server.spigot();
}
@@ -25,10 +25,10 @@ index b0bc2df41506770e2854a287813f1c53f003eda1..f30ddfb1a5800542d456597b93d4ee66
+ // Purpur end
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index 9fac86bb13066ff685378ef601857730bd74964b..4dcfe692385cdeb75309bdff4bd90fa6036b36c2 100644
+index 861e193e7c1fe1b8e69e22b5c80f391701446bc5..5a59443e3f8fce692af148bf01dd59cddcbe683a 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
-@@ -2174,4 +2174,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
+@@ -2187,4 +2187,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
*/
@NotNull org.bukkit.potion.PotionBrewer getPotionBrewer();
// Paper end
diff --git a/patches/api/0012-Lagging-threshold.patch b/patches/api/0012-Lagging-threshold.patch
index 1d930098e..08dbd889f 100644
--- a/patches/api/0012-Lagging-threshold.patch
+++ b/patches/api/0012-Lagging-threshold.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Lagging threshold
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index f30ddfb1a5800542d456597b93d4ee66c7f1d2ee..e71744ac7b773cc9cd46fd82566782f7d204f5d6 100644
+index 68b218e991c9d73f4ec52a1d5c6bba9140427472..a522ff41b59b8c929d85736318f838f72873dfd9 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
-@@ -2493,5 +2493,14 @@ public final class Bukkit {
+@@ -2510,5 +2510,14 @@ public final class Bukkit {
public static String getServerName() {
return server.getServerName();
}
@@ -24,10 +24,10 @@ index f30ddfb1a5800542d456597b93d4ee66c7f1d2ee..e71744ac7b773cc9cd46fd82566782f7
// Purpur end
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index 4dcfe692385cdeb75309bdff4bd90fa6036b36c2..d547a53c55b446b8c3389695123009f8a1d91192 100644
+index 5a59443e3f8fce692af148bf01dd59cddcbe683a..47d885c63af0339beb2e978ff2c1d91a19c70846 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
-@@ -2182,5 +2182,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
+@@ -2195,5 +2195,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
*/
@NotNull
String getServerName();
diff --git a/patches/api/0014-Player-invulnerabilities.patch b/patches/api/0014-Player-invulnerabilities.patch
index fc06b006d..d64c76b66 100644
--- a/patches/api/0014-Player-invulnerabilities.patch
+++ b/patches/api/0014-Player-invulnerabilities.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Player invulnerabilities
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 1e8bc00d487e20cd493b478a092e92bc1704e13e..a4d7e28302ffa2e2afa26caecf55d2be05c17382 100644
+index 169a523eb11b899bd4a227c788750e4b226163c6..da270c17ce413e6a75e1007b93dd013be38f0148 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -3101,5 +3101,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -3114,5 +3114,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* Reset the idle timer back to 0
*/
void resetIdleTimer();
diff --git a/patches/api/0035-Added-the-ability-to-add-combustible-items.patch b/patches/api/0035-Added-the-ability-to-add-combustible-items.patch
index 08c091662..bece07923 100644
--- a/patches/api/0035-Added-the-ability-to-add-combustible-items.patch
+++ b/patches/api/0035-Added-the-ability-to-add-combustible-items.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Added the ability to add combustible items
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index e71744ac7b773cc9cd46fd82566782f7d204f5d6..a4ecff25f1e43cc000751e41c73732d1130ded26 100644
+index a522ff41b59b8c929d85736318f838f72873dfd9..ad74599b144d0516eef8baccea3318e5d12913e7 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
-@@ -2502,5 +2502,24 @@ public final class Bukkit {
+@@ -2519,5 +2519,24 @@ public final class Bukkit {
public static boolean isLagging() {
return server.isLagging();
}
@@ -34,10 +34,10 @@ index e71744ac7b773cc9cd46fd82566782f7d204f5d6..a4ecff25f1e43cc000751e41c73732d1
// Purpur end
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index d547a53c55b446b8c3389695123009f8a1d91192..6082415b34fbaa49693e13c9605560f6495549c3 100644
+index 47d885c63af0339beb2e978ff2c1d91a19c70846..4e9305099595c251f5d432c415fe3b60d9335eff 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
-@@ -2189,5 +2189,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
+@@ -2202,5 +2202,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
* @return True if lagging
*/
boolean isLagging();
diff --git a/patches/api/0043-Debug-Marker-API.patch b/patches/api/0043-Debug-Marker-API.patch
index 9a3070294..60872770c 100644
--- a/patches/api/0043-Debug-Marker-API.patch
+++ b/patches/api/0043-Debug-Marker-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index a4ecff25f1e43cc000751e41c73732d1130ded26..a2f617537292e3bac52d665a6e51b7d4ce4a227e 100644
+index ad74599b144d0516eef8baccea3318e5d12913e7..7d759a4725dbea992f078b6c1a60d9822bb268a3 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
-@@ -2521,5 +2521,89 @@ public final class Bukkit {
+@@ -2538,5 +2538,89 @@ public final class Bukkit {
public static void removeFuel(@NotNull Material material) {
server.removeFuel(material);
}
@@ -99,10 +99,10 @@ index a4ecff25f1e43cc000751e41c73732d1130ded26..a2f617537292e3bac52d665a6e51b7d4
// Purpur end
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index 6082415b34fbaa49693e13c9605560f6495549c3..96160bced90bb4cd84e48c85c645cad0eb672b85 100644
+index 4e9305099595c251f5d432c415fe3b60d9335eff..15a0ae9744fa841e3e51e9e9a957cea8c71e68ad 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
-@@ -2204,5 +2204,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
+@@ -2217,5 +2217,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
* @param material The material that will no longer be a fuel
*/
public void removeFuel(@NotNull Material material);
@@ -260,10 +260,10 @@ index d07b6f40c111c9b131f2995e9796d66f5344c5df..adf8169d5baefa7a33c33ef066180a81
/**
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index a4d7e28302ffa2e2afa26caecf55d2be05c17382..ca7a9098db4eb7ddcb72f1e14a81626de2c75811 100644
+index da270c17ce413e6a75e1007b93dd013be38f0148..e9fe4a91f8d0e64dad18435c89c5cc53e21c0d97 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -3122,5 +3122,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -3135,5 +3135,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param invulnerableTicks Invulnerable ticks remaining
*/
void setSpawnInvulnerableTicks(int invulnerableTicks);
diff --git a/patches/api/0044-Add-death-screen-API.patch b/patches/api/0044-Add-death-screen-API.patch
index 48e824c37..e3d707e99 100644
--- a/patches/api/0044-Add-death-screen-API.patch
+++ b/patches/api/0044-Add-death-screen-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index ca7a9098db4eb7ddcb72f1e14a81626de2c75811..7d54129ef393583df2fb2a4af81649be82eebdbe 100644
+index e9fe4a91f8d0e64dad18435c89c5cc53e21c0d97..84bd594baa2d72033b08ca79309b004d3c6807a2 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -3192,5 +3192,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -3205,5 +3205,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* Clears all debug block highlights
*/
void clearBlockHighlights();
diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch
index 27748c56a..ddb65cbfb 100644
--- a/patches/server/0001-Rebrand.patch
+++ b/patches/server/0001-Rebrand.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand
diff --git a/build.gradle.kts b/build.gradle.kts
-index e7a03ea1dab56e7725f718da0b44c736018ac995..59b94c7a3ca821c90adea832f97ece8a32f65034 100644
+index a0c5592530d2a59bfde87d1e9eb3752e7d4694da..af58d80d3c031dc00f8ac0e17b6a862b17eab97d 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -7,8 +7,12 @@ plugins {
@@ -23,7 +23,7 @@ index e7a03ea1dab56e7725f718da0b44c736018ac995..59b94c7a3ca821c90adea832f97ece8a
// Paper start
implementation("org.jline:jline-terminal-jansi:3.21.0")
implementation("net.minecrell:terminalconsoleappender:1.3.0")
-@@ -38,6 +42,10 @@ dependencies {
+@@ -39,6 +43,10 @@ dependencies {
}
// Paper end
@@ -34,7 +34,7 @@ index e7a03ea1dab56e7725f718da0b44c736018ac995..59b94c7a3ca821c90adea832f97ece8a
runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.2")
runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.10")
runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.10")
-@@ -62,7 +70,7 @@ tasks.jar {
+@@ -63,7 +71,7 @@ tasks.jar {
attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main",
"Implementation-Title" to "CraftBukkit",
@@ -43,7 +43,7 @@ index e7a03ea1dab56e7725f718da0b44c736018ac995..59b94c7a3ca821c90adea832f97ece8a
"Implementation-Vendor" to date, // Paper
"Specification-Title" to "Bukkit",
"Specification-Version" to project.version,
-@@ -134,7 +142,7 @@ fun TaskContainer.registerRunTask(
+@@ -135,7 +143,7 @@ fun TaskContainer.registerRunTask(
name: String,
block: JavaExec.() -> Unit
): TaskProvider = register(name) {
@@ -175,10 +175,10 @@ 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 fb82bb52f219e7683fe1d3c0fb3acbe2251de8d4..7fe5d22b4c9eac832646780d4b5326edaca2979e 100644
+index 80cf4852e4010eeeadaf920ab927a40df0179b40..b5bf78380b6d3b93c5d4a0b94f4df6803a213f17 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -923,7 +923,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1));
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index ae82ab0e3d8e99f87ca8465fbcbb44b5ce18bf96..63d694edc25fcd33873fdbe7468a37b3be3f1b8d 100644
+index d9c2d06ae24dcf80a497e75f4c7f63d401b77f9b..ec3b1437d4bc8c21c596c53b665e3d8cb20f7f0e 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -3502,6 +3502,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3505,6 +3505,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
private static final ResourceLocation CUSTOM_UNREGISTER = new ResourceLocation("unregister");
private static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support
@@ -28,7 +28,7 @@ index ae82ab0e3d8e99f87ca8465fbcbb44b5ce18bf96..63d694edc25fcd33873fdbe7468a37b3
@Override
public void handleCustomPayload(ServerboundCustomPayloadPacket packet) {
-@@ -3526,6 +3527,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3529,6 +3530,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t unregister custom payload", ex);
this.disconnect("Invalid payload UNREGISTER!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause
}
@@ -43,10 +43,10 @@ index ae82ab0e3d8e99f87ca8465fbcbb44b5ce18bf96..63d694edc25fcd33873fdbe7468a37b3
try {
byte[] data = new byte[packet.data.readableBytes()];
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index e41f5417304f5b05fa7e2f6b6e1c0095e820f1cc..fb743a7ecd3e4b84ebee0c37894ccd46c3f7672f 100644
+index 03bb444705916ffe0b9eb4b7496524dc3459ebe0..9e7d5849489bbe6710681a61acb5fb28aea1187c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -3147,4 +3147,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -3138,4 +3138,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.spigot;
}
// Spigot end
diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch
index 30763c3a8..2370e062a 100644
--- a/patches/server/0006-Ridables.patch
+++ b/patches/server/0006-Ridables.patch
@@ -22,10 +22,10 @@ index 83cab746d1d6fe25c043c8aee28c39412b90c127..ec6b58dae525c81bbb1c0e2d96fbded6
super(x, y, z);
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 7fe5d22b4c9eac832646780d4b5326edaca2979e..1f08b8e81fd6dfa850ead13f2d45adb823a447ab 100644
+index b5bf78380b6d3b93c5d4a0b94f4df6803a213f17..3d2af8732f60b29619e3701acca9429c6d5a32f8 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1526,6 +1526,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper
net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper
worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper
@@ -46,7 +46,7 @@ index 18aac3da3c88f33b1a71a5920a8daa27e9723913..a6acc178949f45c18009b5da2b8998cb
final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date());
io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr);
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 15539499b5a0f16ad2d44c39c5b824876fdf0951..632af791c9c4c9d2fa84f46b0c28bb8089930ebe 100644
+index 41698264b3155f20f7a7d473a43aa2dab7ca61bb..77c38ea427dac0176941f8bc26ebe540c0dd4c02 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -751,6 +751,15 @@ public class ServerPlayer extends Player {
@@ -66,10 +66,10 @@ index 15539499b5a0f16ad2d44c39c5b824876fdf0951..632af791c9c4c9d2fa84f46b0c28bb80
public void doTick() {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 63d694edc25fcd33873fdbe7468a37b3be3f1b8d..c825027b644cbc70f5142c4c826eab6061ad4d41 100644
+index ec3b1437d4bc8c21c596c53b665e3d8cb20f7f0e..c7b9acaee1c14fde6d557c1068bf4544a282da24 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2805,6 +2805,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2808,6 +2808,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event);
@@ -79,7 +79,7 @@ index 63d694edc25fcd33873fdbe7468a37b3be3f1b8d..c825027b644cbc70f5142c4c826eab60
if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) {
entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it.
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index ac795034342cabd85ccb62faf0adb10ee4ac1c00..f5de46130df5b6057e8b3b8a46843428f600b9f1 100644
+index 6bd894fa4617d5132a735d90fed89fcd36d330fc..c07db4a711fd15a461f13226a54929cf5991b7b8 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -364,7 +364,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -191,7 +191,7 @@ index 759713f7c646aaf1a918c87a2834a1d405385dad..c6a06e07f0b4bb29b5f4c70dfa53ff6d
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 67627bbf84f5aab2872f636b1dcb6728c8494147..57317c6b848c598155928aa3ade9957201155787 100644
+index a189461330a4d427a7450d504ef13de3605497e3..dcf0a29c8736d9bc48e15f6cff84c45f8d2d2786 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -220,9 +220,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -224,7 +224,7 @@ index 67627bbf84f5aab2872f636b1dcb6728c8494147..57317c6b848c598155928aa3ade99572
@Override
protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) {
-@@ -2671,7 +2672,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -2674,7 +2675,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
protected long lastJumpTime = 0L; // Paper
@@ -233,7 +233,7 @@ index 67627bbf84f5aab2872f636b1dcb6728c8494147..57317c6b848c598155928aa3ade99572
Vec3 vec3d = this.getDeltaMovement();
// Paper start
long time = System.nanoTime();
-@@ -3443,8 +3444,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3446,8 +3447,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.pushEntities();
this.level().getProfiler().pop();
// Paper start
@@ -246,7 +246,7 @@ index 67627bbf84f5aab2872f636b1dcb6728c8494147..57317c6b848c598155928aa3ade99572
Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO);
Location to = new Location (this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone());
-@@ -3454,6 +3457,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3457,6 +3460,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch());
}
}
@@ -3429,7 +3429,7 @@ index 8f481e11815d7162dd62a2b850b3d2af6d904519..16486ece9fc415d875ff94d9b806b0b5
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D);
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-index 4616addb05fcc20b1ec6ca1dea01cbefed697acd..57637dd43b109ec26bddf389d16452c573aecc07 100644
+index 5519ccf558c09f32e19b35f4b403fc9ed966ed65..f05c8b8201e3ccc853080b1afd2eecf17ee4a8a2 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -92,9 +92,27 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -5142,10 +5142,10 @@ index cc0a3d9794d05b6bc6ab05f4f2ab8d83134b181d..e1f918d0bd2a70db1aba8bda8717149f
HitResult hitResult = world.clip(new ClipContext(pos, vec3, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, entity));
if (hitResult.getType() != HitResult.Type.MISS) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
-index ea056babe2f8123f20dc608d8a636da1de634b8c..a820a00440510d77fa1839eef485f8ea2de9ff84 100644
+index 733158b6f2c2bd03fbe798562ff7bc33280548dc..70a7beb4c6be6304f8174d7c4c8a7b8866844b87 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
-@@ -1442,4 +1442,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
+@@ -1435,4 +1435,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return !this.getHandle().level().noCollision(this.getHandle(), aabb);
}
// Paper End - Collision API
@@ -5174,7 +5174,7 @@ index ea056babe2f8123f20dc608d8a636da1de634b8c..a820a00440510d77fa1839eef485f8ea
+ // Purpur end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index a9a58f0bb19e034cffdafcc38fdc9003744a5d6c..be7e427deda9ac335b2b6ce5f8fbd036001b3468 100644
+index 32fe1e498ee988566213bfcf56bf98c92a3c9871..5374640d92cdf80eb1fdfc21c9076a988222c6d8 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -563,6 +563,15 @@ public class CraftEventFactory {
@@ -5209,7 +5209,7 @@ index a9a58f0bb19e034cffdafcc38fdc9003744a5d6c..be7e427deda9ac335b2b6ce5f8fbd036
return event;
}
-@@ -1173,6 +1184,7 @@ public class CraftEventFactory {
+@@ -1177,6 +1188,7 @@ public class CraftEventFactory {
EntityDamageEvent event;
if (damager != null) {
event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, modifiers, modifierFunctions, critical); // Paper - add critical damage API
diff --git a/patches/server/0008-Barrels-and-enderchests-6-rows.patch b/patches/server/0008-Barrels-and-enderchests-6-rows.patch
index 1d54666a1..0982c38ae 100644
--- a/patches/server/0008-Barrels-and-enderchests-6-rows.patch
+++ b/patches/server/0008-Barrels-and-enderchests-6-rows.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Barrels and enderchests 6 rows
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 01a550086f21672c7e2e51e304bf8fcffd6451f0..1ad17a1536540c393e52ec0b0fb4593cf4a16f3a 100644
+index c5cfc95df8cc8c1768457bc640d447148d0f6644..fbf9a5d7ef7b047984684079d68894d07f580b31 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1161,6 +1161,27 @@ public abstract class PlayerList {
@@ -223,18 +223,18 @@ index 3075ba5f6d66316f27e618d8b279252e9520b9cb..299a099ead00069cc275e1dc9a21742a
case DISPENSER:
case DROPPER:
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
-index 10844fecc01370dcd0cc36f83e166bacb48ded30..c5340c2ac5c6771ba5809c3ba0be8f4c2e6a15f7 100644
+index df254c42b73cdb56f71781473cbf9d0f28dcfb08..483cc1ff49b2a4fc62173e756e1cbe4789f3cd60 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
@@ -83,7 +83,7 @@ public class CraftInventory implements Inventory {
@Override
public void setContents(ItemStack[] items) {
-- if (this.getSize() < items.length) {
-+ if (false && this.getSize() < items.length) { // Purpur
- throw new IllegalArgumentException("Invalid inventory size; expected " + this.getSize() + " or less");
- }
+- Preconditions.checkArgument(items.length <= this.getSize(), "Invalid inventory size (%s); expected %s or less", items.length, this.getSize());
++ // Preconditions.checkArgument(items.length <= this.getSize(), "Invalid inventory size (%s); expected %s or less", items.length, this.getSize()); // Purpur
+ for (int i = 0; i < this.getSize(); i++) {
+ if (i >= items.length) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 0cab29584c4d5205950571660b6c271d34e403eb..e6a720f25266d793bec5f644dadacbf45aef23f5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
diff --git a/patches/server/0010-AFK-API.patch b/patches/server/0010-AFK-API.patch
index 3dd819ffb..dc5aeea46 100644
--- a/patches/server/0010-AFK-API.patch
+++ b/patches/server/0010-AFK-API.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] AFK API
Adds the option for display names to be used in the afk broadcast
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 632af791c9c4c9d2fa84f46b0c28bb8089930ebe..62fb638dc4d1f88ff6ddb48bad891b77baf5443c 100644
+index 77c38ea427dac0176941f8bc26ebe540c0dd4c02..e528d3bb75b892e1674e4c282b91a28128a387a7 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -2116,8 +2116,68 @@ public class ServerPlayer extends Player {
@@ -79,7 +79,7 @@ index 632af791c9c4c9d2fa84f46b0c28bb8089930ebe..62fb638dc4d1f88ff6ddb48bad891b77
return this.stats;
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index c825027b644cbc70f5142c4c826eab6061ad4d41..da209820b52dfef1756f72b3c5cc77fe1239bd6d 100644
+index c7b9acaee1c14fde6d557c1068bf4544a282da24..38f4baddd932c4af10e656c10f201ab1c3c67fa3 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -340,6 +340,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -134,7 +134,7 @@ index c825027b644cbc70f5142c4c826eab6061ad4d41..da209820b52dfef1756f72b3c5cc77fe
}
// Paper start - optimise out extra getCubes
-@@ -1597,6 +1619,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1600,6 +1622,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.lastYaw = to.getYaw();
this.lastPitch = to.getPitch();
@@ -224,10 +224,10 @@ index 3b959f42d958bf0f426853aee56753d6c455fcdb..d17abb283ea818244df0379d6b57fc63
if (range < 0.0D || d < range * range) {
return true;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index fb743a7ecd3e4b84ebee0c37894ccd46c3f7672f..c1d3d945aa5a140c22a27729b8942fdc0b9dc3ee 100644
+index 9e7d5849489bbe6710681a61acb5fb28aea1187c..b01952443b1e0e256fd6f4f7d6ccdb28559cd543 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -501,10 +501,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -498,10 +498,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setPlayerListName(String name) {
@@ -244,7 +244,7 @@ index fb743a7ecd3e4b84ebee0c37894ccd46c3f7672f..c1d3d945aa5a140c22a27729b8942fdc
for (ServerPlayer player : (List) server.getHandle().players) {
if (player.getBukkitEntity().canSee(this)) {
player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle()));
-@@ -3153,5 +3158,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -3144,5 +3149,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public boolean usesPurpurClient() {
return getHandle().purpurClient;
}
@@ -289,7 +289,7 @@ index e6a720f25266d793bec5f644dadacbf45aef23f5..6b768cff1318b4bcebeed95345f3cfdc
public static int barrelRows = 3;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d16e7c78f6da209a94ab0fd95fb8e178b1a61609..43a49703a2a17c1fa2b623930b901ce60e2549b6 100644
+index 049658a2c939255003a8b32a18b67bb153243b23..2596204f9b1d0b9fd54ac71f7cecc16935ac5595 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -92,6 +92,24 @@ public class PurpurWorldConfig {
@@ -318,7 +318,7 @@ index d16e7c78f6da209a94ab0fd95fb8e178b1a61609..43a49703a2a17c1fa2b623930b901ce6
public boolean untamedTamablesAreRidable = true;
public boolean useNightVisionWhenRiding = false;
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
-index d4da9ec6e00bb92b70598ee9a0d0ca5816562378..cd2ec0b11f74e2b17f74ebb83f4e8b183f5b890e 100644
+index eda7f0bb42f7269676d5d2193e1155912ede9920..2eb33bd133009447154c7f018e9300d509f20725 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -199,6 +199,7 @@ public class ActivationRange
diff --git a/patches/server/0011-Bring-back-server-name.patch b/patches/server/0011-Bring-back-server-name.patch
index f01feceea..06ac90d74 100644
--- a/patches/server/0011-Bring-back-server-name.patch
+++ b/patches/server/0011-Bring-back-server-name.patch
@@ -17,10 +17,10 @@ index 818289e831e3dad29345c43265e2efd7689bc500..1ea3012995c738c67b31e997c138f824
public final boolean spawnNpcs = this.get("spawn-npcs", true);
public final boolean pvp = this.get("pvp", true);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 81bfd0f9d297f22c24e5d23e4e63ca7e08a7c2d8..a11723890dccee913e3c50e46e18d04afe2966e6 100644
+index 4a00ab2a4b1d445c43d633c50c7ff66aa4034d60..90def71180c29c8a5226da5199d42ce2ab37269c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -2987,4 +2987,11 @@ public final class CraftServer implements Server {
+@@ -3004,4 +3004,11 @@ public final class CraftServer implements Server {
}
// Paper end
diff --git a/patches/server/0012-Configurable-server-mod-name.patch b/patches/server/0012-Configurable-server-mod-name.patch
index 019799630..ea03529a1 100644
--- a/patches/server/0012-Configurable-server-mod-name.patch
+++ b/patches/server/0012-Configurable-server-mod-name.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable server mod name
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 1f08b8e81fd6dfa850ead13f2d45adb823a447ab..b8ea1f9aa3a486033b6f3d0d150aa21ab6130d53 100644
+index 3d2af8732f60b29619e3701acca9429c6d5a32f8..39ab22e836a1e0d7ecb39389387466e889869bae 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1682,7 +1682,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info
-@@ -3487,6 +3503,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3490,6 +3506,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void handleKeepAlive(ServerboundKeepAlivePacket packet) {
diff --git a/patches/server/0040-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0040-Disable-loot-drops-on-death-by-cramming.patch
index 03d71c0b3..241f5c582 100644
--- a/patches/server/0040-Disable-loot-drops-on-death-by-cramming.patch
+++ b/patches/server/0040-Disable-loot-drops-on-death-by-cramming.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index bf3a3bd00260ba04c592c4313cde33e5d393d392..7d9ecae23415e8f06831bc5bf4fae9137d43eb12 100644
+index 584a15e2dc7a1ff2396084ff833c8022e6d2fd76..51b575b5f088b61ab061ce4245488ed7461210ee 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -1800,6 +1800,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1803,6 +1803,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.dropEquipment(); // CraftBukkit - from below
if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
@@ -16,7 +16,7 @@ index bf3a3bd00260ba04c592c4313cde33e5d393d392..7d9ecae23415e8f06831bc5bf4fae913
this.dropFromLootTable(source, flag);
// Paper start
final boolean prev = this.clearEquipmentSlots;
-@@ -1808,6 +1809,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1811,6 +1812,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
// Paper end
this.dropCustomDeathLoot(source, i, flag);
this.clearEquipmentSlots = prev; // Paper
@@ -25,7 +25,7 @@ index bf3a3bd00260ba04c592c4313cde33e5d393d392..7d9ecae23415e8f06831bc5bf4fae913
// CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment
org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops, () -> {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 60f5f27583e57105bbc95ce72138d2b530669c56..15231c9ef7787830b6639e8c4ce34d230ac6a304 100644
+index 245d262949eef0b819a367f2cf345070d52e588f..3aa38514024db3a725e195045d851c6db34d221e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -97,6 +97,11 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0045-Configurable-TPS-Catchup.patch b/patches/server/0045-Configurable-TPS-Catchup.patch
index 85b530b1f..95d608547 100644
--- a/patches/server/0045-Configurable-TPS-Catchup.patch
+++ b/patches/server/0045-Configurable-TPS-Catchup.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable TPS Catchup
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 75d15b7c157fea129a730a0f48ae9ea71f13d533..d9f3613381cf7166e0b504a4370420e1d0fadc4e 100644
+index 837338fb19e5506f01da687e603860b5eb3860f5..517a817050f9c2be21866811f44e87b04eb2eacd 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1175,7 +1175,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop new net.minecraft.world.item.crafting.Ingredient.ItemValue(CraftItemStack.asNMSCopy(mat))));
stack.exact = true;
diff --git a/patches/server/0096-Configurable-daylight-cycle.patch b/patches/server/0096-Configurable-daylight-cycle.patch
index 951568fcb..99ce89807 100644
--- a/patches/server/0096-Configurable-daylight-cycle.patch
+++ b/patches/server/0096-Configurable-daylight-cycle.patch
@@ -18,10 +18,10 @@ index 9ec6145fe04ec64bbee8ec6a837719caebdbc6f5..358d610ad020cada1bb83e393deeeaae
public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) {
this.gameTime = time;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 6e5bfabe11da547f28b1d56e5a279ae5d9bb3c54..12a5a8c06dc636fbd5008b8f71d05cfae00a52c2 100644
+index 2da0bb6f710562d9abd181c110b85e970285d446..6b7d87c337dc2cdbf1b7ad415a7ec0f709285ae3 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1519,7 +1519,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 0734602a64f169665ca416efa37aa52d649e900c..20fae6041a0a93c0de24f4e8bf0d2acf4b1bcced 100644
+index 23dd4900b64e8204870d5f1314bacc6d1f46a95c..c0c4c15e2bbdad8ee4cde98a971c3a1c3479c43f 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -478,6 +478,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -32,7 +32,7 @@ index 0734602a64f169665ca416efa37aa52d649e900c..20fae6041a0a93c0de24f4e8bf0d2acf
return this.hardCollides;
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index c31a33a22540dcaf854b3633686af969e77e0ad6..d4cdb88ca3247f3f9ea8f6797cc3b6ce0c7b5152 100644
+index 81133745db9362ceda55cc410ecd2c65df0fb7cc..ac9b48a59b197648a6781629c4409712d0af44ab 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -265,6 +265,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -63,7 +63,7 @@ index c31a33a22540dcaf854b3633686af969e77e0ad6..d4cdb88ca3247f3f9ea8f6797cc3b6ce
}
// CraftBukkit start
-@@ -3522,6 +3529,27 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3525,6 +3532,27 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.hurt(this.damageSources().drown(), 1.0F);
}
@@ -353,7 +353,7 @@ index a676d66dcb5ee72e6d8ffef4e210a3d2c8d605f2..0bc90b6d5c5a3cb3477d41336a9bb113
// Paper end
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
-index eed8be5d6f796450a99f8dd11c673780d8cb5411..ac6640c525df098e54181dd630f83fd0410ca47c 100644
+index 3985663536d17afe73ece47702bdc41dcfd46819..41089892e735eec7e3914084bbc278d67c4b6ea0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -209,6 +209,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -369,10 +369,10 @@ index eed8be5d6f796450a99f8dd11c673780d8cb5411..ac6640c525df098e54181dd630f83fd0
/*
* Order is *EXTREMELY* important -- keep it right! =D
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-index a6e30e77d335b74b47ae2dd5bd80a4bb0dc877e7..75b3bee5c0907d24c324ccdef8b6fcc46bd5971c 100644
+index 3ca4ba907b42dfddf24dbab56e4bdfbc8a60f72a..70830f57e3929bc37b20fd95fc4998c717e99706 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-@@ -1088,5 +1088,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
+@@ -1082,5 +1082,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
if (slot == null) return;
getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot));
}
diff --git a/patches/server/0189-Add-uptime-command.patch b/patches/server/0189-Add-uptime-command.patch
index 7b76a0de1..4ac071ef6 100644
--- a/patches/server/0189-Add-uptime-command.patch
+++ b/patches/server/0189-Add-uptime-command.patch
@@ -17,10 +17,10 @@ index 4e721dfca7559620d8ce65a6703f2089a839f4a0..7aae9e3c60ba15b8dcd8174a4d70866e
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 7b67bc1e7891a27125db560ad18a133096bb2468..f5e9a56f6f478e241a9ffcf703e4a54e8270eac9 100644
+index c89c7c78612cf86c2632832ab85ea8cdfb71c0ed..f29fa70f7497282efe14248de50eca44dd71118d 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -296,6 +296,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0.0F) {
this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F);
@@ -17,7 +17,7 @@ index d4cdb88ca3247f3f9ea8f6797cc3b6ce0c7b5152..48fa05e80483e470572ecc8b2f7feb58
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index daeed4659b16d6aa30e91776189f9989f71bff11..53f5a3496d09aaadb3ba7abc3e93f7206c3c060c 100644
+index 2edb74f618b1b9d5a299ba87bd663fb17495ff03..e6a26392252d70d842dfe1c9fb2d72132a1edef5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -184,12 +184,14 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0210-Extended-OfflinePlayer-API.patch b/patches/server/0210-Extended-OfflinePlayer-API.patch
index e57202851..0cdc50c73 100644
--- a/patches/server/0210-Extended-OfflinePlayer-API.patch
+++ b/patches/server/0210-Extended-OfflinePlayer-API.patch
@@ -223,10 +223,10 @@ index 714afc98b5150907b45a00060be4e41582333204..312a6d90c0a09570aef24c205dc2ff27
+ // Purpur end - OfflinePlayer API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index c7738ddd10dd4691ea446a46640dfce08a1fc9d5..62d9f24188a686229c450325dcd614a50fa470ce 100644
+index e0d08e583be5005e55fb79f6909170435774d6b6..839787ae6f2be0ba68fd9ac429c99d514004405b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2391,6 +2391,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2375,6 +2375,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().getAbilities().walkingSpeed * 2f;
}
@@ -253,5 +253,5 @@ index c7738ddd10dd4691ea446a46640dfce08a1fc9d5..62d9f24188a686229c450325dcd614a5
+ // Purpur end - OfflinePlayer API
+
private void validateSpeed(float value) {
- if (value < 0) {
- if (value < -1f) {
+ Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value);
+ }
diff --git a/patches/server/0211-Added-the-ability-to-add-combustible-items.patch b/patches/server/0211-Added-the-ability-to-add-combustible-items.patch
index 3734d6319..2650cac6d 100644
--- a/patches/server/0211-Added-the-ability-to-add-combustible-items.patch
+++ b/patches/server/0211-Added-the-ability-to-add-combustible-items.patch
@@ -51,10 +51,10 @@ index ca2052804ad829a1528a9c5a0a792275beead113..997d0fab71eacc6466ffe3bc8f6349e5
private int maxStack = MAX_STACK;
public List transaction = new java.util.ArrayList();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 7afc14b00a38bd83f5ec6dc12bf86bc7ee6574a2..00fe4b406eaec3e1bc02cb9bb35530d9c98743b0 100644
+index af64a42eba7b23e8a0f085d874a66dcbb060cb75..ac85de5112975097e20d319059deee42a3961fa2 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1447,6 +1447,19 @@ public final class CraftServer implements Server {
+@@ -1448,6 +1448,19 @@ public final class CraftServer implements Server {
return true;
}
@@ -73,4 +73,4 @@ index 7afc14b00a38bd83f5ec6dc12bf86bc7ee6574a2..00fe4b406eaec3e1bc02cb9bb35530d9
+
@Override
public List getRecipesFor(ItemStack result) {
- Validate.notNull(result, "Result cannot be null");
+ Preconditions.checkArgument(result != null, "ItemStack cannot be null");
diff --git a/patches/server/0214-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0214-Shift-right-click-to-use-exp-for-mending.patch
index a3a53026d..f6298201f 100644
--- a/patches/server/0214-Shift-right-click-to-use-exp-for-mending.patch
+++ b/patches/server/0214-Shift-right-click-to-use-exp-for-mending.patch
@@ -36,10 +36,10 @@ index 7ddc9a7ff7b1d6de234ea5b1c8f4246d6ba7976d..02f615e797ac22b8a6226233d815346c
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 9b59fc923c85af6daf07d7bcf0d30ad39bd0cd8e..c4d8ca22639f8ad5c4375927f8ce7afa856d1689 100644
+index 7f3b2ea667325fe66ba13c9babad4a3162ff425b..c0c515fb95813c5fb9482ac44cd2980d73a363a3 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2085,6 +2085,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2088,6 +2088,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
boolean cancelled;
if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) {
@@ -48,7 +48,7 @@ index 9b59fc923c85af6daf07d7bcf0d30ad39bd0cd8e..c4d8ca22639f8ad5c4375927f8ce7afa
cancelled = event.useItemInHand() == Event.Result.DENY;
} else {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index b1a41951a7822fc78cece7bb0863e5d69e0c9473..6406b1cd67ebd2d173a12a90ccc5dbbd388a4fb8 100644
+index dd0e9af64399c07b19d2f2afa4e67d082eadd365..dc7529035cb9624675aa50b4333a0c8f893204b4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -417,6 +417,7 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0220-UPnP-Port-Forwarding.patch b/patches/server/0220-UPnP-Port-Forwarding.patch
index fbc41706a..a86aaaf31 100644
--- a/patches/server/0220-UPnP-Port-Forwarding.patch
+++ b/patches/server/0220-UPnP-Port-Forwarding.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] UPnP Port Forwarding
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index f5e9a56f6f478e241a9ffcf703e4a54e8270eac9..c4a88ef1cc23b0f7b3fe50019441535bae1a1b64 100644
+index f29fa70f7497282efe14248de50eca44dd71118d..7fc8f42c315d1bc81585b0147d59d662e7941d8c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -311,6 +311,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getActivePotionEffects() {
List effects = new ArrayList();
for (MobEffectInstance handle : this.getHandle().activeEffects.values()) {
@@ -191,11 +191,11 @@ index 75b3bee5c0907d24c324ccdef8b6fcc46bd5971c..641caa0f74a40ea52f71f3150c016827
return effects;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java
-index 0d4348ce1c4ec9bb779eaebf8606ea578f17d2cb..486768894f130cd23905cc7a8be16ce705667bbb 100644
+index d94ab2607d1ab657a6b37924ce5ebcbbc3984011..f594596029513426f974ba820ed4702703b667a4 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java
-@@ -13,6 +13,7 @@ import net.minecraft.nbt.ListTag;
- import org.apache.commons.lang.Validate;
+@@ -13,6 +13,7 @@ import net.minecraft.nbt.CompoundTag;
+ import net.minecraft.nbt.ListTag;
import org.bukkit.Color;
import org.bukkit.Material;
+import org.bukkit.NamespacedKey;
@@ -210,7 +210,7 @@ index 0d4348ce1c4ec9bb779eaebf8606ea578f17d2cb..486768894f130cd23905cc7a8be16ce7
// Having an initial "state" in ItemMeta seems bit dirty but the UNCRAFTABLE potion type
// is treated as the empty form of the meta because it represents an empty potion with no effect
-@@ -92,7 +94,13 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
+@@ -91,7 +93,13 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
boolean ambient = effect.getBoolean(AMBIENT.NBT);
boolean particles = effect.contains(SHOW_PARTICLES.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(SHOW_PARTICLES.NBT) : true;
boolean icon = effect.contains(SHOW_ICON.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(SHOW_ICON.NBT) : particles;
@@ -225,7 +225,7 @@ index 0d4348ce1c4ec9bb779eaebf8606ea578f17d2cb..486768894f130cd23905cc7a8be16ce7
}
}
}
-@@ -141,6 +149,11 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
+@@ -138,6 +146,11 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
effectData.putBoolean(AMBIENT.NBT, effect.isAmbient());
effectData.putBoolean(SHOW_PARTICLES.NBT, effect.hasParticles());
effectData.putBoolean(SHOW_ICON.NBT, effect.hasIcon());
@@ -237,7 +237,7 @@ index 0d4348ce1c4ec9bb779eaebf8606ea578f17d2cb..486768894f130cd23905cc7a8be16ce7
effectList.add(effectData);
}
}
-@@ -202,7 +215,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
+@@ -199,7 +212,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
if (index != -1) {
if (overwrite) {
PotionEffect old = this.customEffects.get(index);
diff --git a/patches/server/0237-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0237-Give-bee-counts-in-beehives-to-Purpur-clients.patch
index af16352c9..a99da1fa8 100644
--- a/patches/server/0237-Give-bee-counts-in-beehives-to-Purpur-clients.patch
+++ b/patches/server/0237-Give-bee-counts-in-beehives-to-Purpur-clients.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Give bee counts in beehives to Purpur clients
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index c4a88ef1cc23b0f7b3fe50019441535bae1a1b64..1041e8e24e03ce46824f6b0f4fca6fc0e2264a98 100644
+index 7fc8f42c315d1bc81585b0147d59d662e7941d8c..462760b366697979e09ac65ee7787c2ab8338342 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1034,6 +1034,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> {
+@@ -576,11 +576,20 @@ public class Connection extends SimpleChannelInboundHandler> {
private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper
private static int joinAttemptsThisTick; // Paper
private static int currTick; // Paper
diff --git a/patches/server/0246-Lobotomize-stuck-villagers.patch b/patches/server/0246-Lobotomize-stuck-villagers.patch
index b5191a7ac..52434d26b 100644
--- a/patches/server/0246-Lobotomize-stuck-villagers.patch
+++ b/patches/server/0246-Lobotomize-stuck-villagers.patch
@@ -89,10 +89,10 @@ index 573d99bea295253804c9486a52ff724422fba432..43afded0ddd88094971ace2dd02d2aca
if (this.assignProfessionWhenSpawned) {
this.assignProfessionWhenSpawned = false;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
-index e986767316a717bdbdff7a9ccaaeba068ab2a6d8..4d0b37957eb02b5d48beb76295ebc7c419ae9ca6 100644
+index f21c715ea109164efa755cddb35ef656a9859759..0c9154d1d3c1534a25c08c75fab102b68958fab9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
-@@ -223,4 +223,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
+@@ -222,4 +222,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
getHandle().getGossips().gossips.clear();
}
// Paper end
diff --git a/patches/server/0249-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0249-Config-for-mob-last-hurt-by-player-time.patch
index 131ea57bd..cd4ea357f 100644
--- a/patches/server/0249-Config-for-mob-last-hurt-by-player-time.patch
+++ b/patches/server/0249-Config-for-mob-last-hurt-by-player-time.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Config for mob last hurt by player time
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index fd276495ddcf160660a725c721d3c3f1d6bdd72b..6e2412640d76c45158777136bc38cbe523440e69 100644
+index 93036336e221912507820acec5d4744aba9a6b68..ecaf3cc5abda30d2b13c92ebb9f31442894064d3 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1504,13 +1504,13 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -25,10 +25,10 @@ index fd276495ddcf160660a725c721d3c3f1d6bdd72b..6e2412640d76c45158777136bc38cbe5
if (entityliving2 instanceof net.minecraft.world.entity.player.Player) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-index 641caa0f74a40ea52f71f3150c0168272b378edf..d5ed0e06c13f6df41b073a8b90992a20d6b9fac6 100644
+index b4c50e181ca7485d73750333bbaaa1b1799ba7b0..0ea1f2a8f6cb019cebf9f9849f8ba00aa385b18e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-@@ -444,7 +444,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
+@@ -440,7 +440,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle();
getHandle().lastHurtByPlayer = entityPlayer;
getHandle().lastHurtByMob = entityPlayer;
@@ -38,7 +38,7 @@ index 641caa0f74a40ea52f71f3150c0168272b378edf..d5ed0e06c13f6df41b073a8b90992a20
// Paper end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index b1f3bc498678603e7a2e78708cb84cb351e373e4..301b8c0217eb8f7bddfcc7e25832b2994628ac75 100644
+index a14382cbf663839f1eaa162be231c95bab4041f8..b89da9fabbda3a5b02262b08aba180818f6b7ec7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -144,6 +144,7 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0251-Fix-legacy-colors-in-console.patch b/patches/server/0251-Fix-legacy-colors-in-console.patch
deleted file mode 100644
index 740e7d0b5..000000000
--- a/patches/server/0251-Fix-legacy-colors-in-console.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: BillyGalbreath
-Date: Sun, 13 Mar 2022 21:00:02 -0500
-Subject: [PATCH] Fix legacy colors in console
-
-
-diff --git a/src/main/java/io/papermc/paper/console/HexFormattingConverter.java b/src/main/java/io/papermc/paper/console/HexFormattingConverter.java
-index b9922b07cb105618390187d98acdf89e728e1f5a..6a1eda942aa33fc0802066416f8bc64f5f15d011 100644
---- a/src/main/java/io/papermc/paper/console/HexFormattingConverter.java
-+++ b/src/main/java/io/papermc/paper/console/HexFormattingConverter.java
-@@ -38,6 +38,7 @@ public final class HexFormattingConverter extends LogEventPatternConverter {
- private static final String ANSI_RESET = "\u001B[m";
-
- private static final char COLOR_CHAR = 0x7f;
-+ private static final char LEGACY_CHAR = 0xa7; // Purpur
- public static final LegacyComponentSerializer SERIALIZER = LegacyComponentSerializer.builder()
- .hexColors()
- .flattener(PaperAdventure.FLATTENER)
-@@ -49,6 +50,8 @@ public final class HexFormattingConverter extends LogEventPatternConverter {
- private static final String RESET_RGB_ANSI = ANSI_RESET + RGB_ANSI;
- private static final Pattern NAMED_PATTERN = Pattern.compile(COLOR_CHAR + "[0-9a-fk-orA-FK-OR]");
- private static final Pattern RGB_PATTERN = Pattern.compile(COLOR_CHAR + "#([0-9a-fA-F]){6}");
-+ private static final Pattern LEGACY_RGB_PATTERN = Pattern.compile(LEGACY_CHAR + "x((" + LEGACY_CHAR + "[0-9a-fA-F]){6})"); // Purpur
-+ private static final Pattern LEGACY_PATTERN = Pattern.compile(LEGACY_CHAR + "([0-9a-fk-orxA-FK-ORX])"); // Purpur
-
- private static final String[] RGB_ANSI_CODES = new String[]{
- formatHexAnsi(NamedTextColor.BLACK), // Black §0
-@@ -134,7 +137,21 @@ public final class HexFormattingConverter extends LogEventPatternConverter {
- }
-
- private static String convertRGBColors(final String input) {
-- return RGB_PATTERN.matcher(input).replaceAll(result -> {
-+ // Purpur start - lets just shove this back in place
-+ Matcher matcher = LEGACY_RGB_PATTERN.matcher(input);
-+ StringBuilder buffer = new StringBuilder();
-+ while (matcher.find()) {
-+ String s = matcher.group().replace(String.valueOf(LEGACY_CHAR), "").replace('x', '#');
-+ int hex = Integer.decode(s);
-+ int red = (hex >> 16) & 0xFF;
-+ int green = (hex >> 8) & 0xFF;
-+ int blue = hex & 0xFF;
-+ String replacement = String.format(RGB_ANSI, red, green, blue);
-+ matcher.appendReplacement(buffer, replacement);
-+ }
-+ matcher.appendTail(buffer);
-+ return RGB_PATTERN.matcher(buffer.toString()).replaceAll(result -> {
-+ // Purpur end
- final int hex = Integer.decode(result.group().substring(1));
- return formatHexAnsi(hex);
- });
-@@ -152,10 +169,11 @@ public final class HexFormattingConverter extends LogEventPatternConverter {
- }
-
- private static String stripRGBColors(final String input) {
-- return RGB_PATTERN.matcher(input).replaceAll("");
-+ return LEGACY_RGB_PATTERN.matcher(RGB_PATTERN.matcher(input).replaceAll("")).replaceAll(""); // Purpur
- }
-
- static void format(String content, StringBuilder result, int start, boolean ansi) {
-+ content = LEGACY_PATTERN.matcher(content).replaceAll(COLOR_CHAR + "$1"); // Purpur
- int next = content.indexOf(COLOR_CHAR);
- int last = content.length() - 1;
- if (next == -1 || next == last) {
diff --git a/patches/server/0252-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0251-Option-to-disable-turtle-egg-trampling-with-feather-.patch
similarity index 96%
rename from patches/server/0252-Option-to-disable-turtle-egg-trampling-with-feather-.patch
rename to patches/server/0251-Option-to-disable-turtle-egg-trampling-with-feather-.patch
index 930e5dd5b..0ab69d9c9 100644
--- a/patches/server/0252-Option-to-disable-turtle-egg-trampling-with-feather-.patch
+++ b/patches/server/0251-Option-to-disable-turtle-egg-trampling-with-feather-.patch
@@ -24,7 +24,7 @@ index 70997b83fd7631ebf3c5bda67ef77bef605eb464..a8c227e2cb62cfa8225798329cde9078
return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
// Purpur end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 39f0c7be1d0023178b34bc7699aa5c4445b02c13..c2deb96f15727460af72662b1ce4f81a58e9f3a6 100644
+index e7da44aae8a1f4c5c58e3b5b0086294adff7152d..7167d0d6c1f2ef666669dc4258bb54386692ec61 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1006,12 +1006,14 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0253-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0252-Add-toggle-for-enchant-level-clamping.patch
similarity index 100%
rename from patches/server/0253-Add-toggle-for-enchant-level-clamping.patch
rename to patches/server/0252-Add-toggle-for-enchant-level-clamping.patch
diff --git a/patches/server/0254-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0253-Skip-junit-tests-for-purpur-commands.patch
similarity index 100%
rename from patches/server/0254-Skip-junit-tests-for-purpur-commands.patch
rename to patches/server/0253-Skip-junit-tests-for-purpur-commands.patch
diff --git a/patches/server/0255-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0254-Implement-configurable-search-radius-for-villagers-t.patch
similarity index 100%
rename from patches/server/0255-Implement-configurable-search-radius-for-villagers-t.patch
rename to patches/server/0254-Implement-configurable-search-radius-for-villagers-t.patch
diff --git a/patches/server/0256-Stonecutter-damage.patch b/patches/server/0255-Stonecutter-damage.patch
similarity index 98%
rename from patches/server/0256-Stonecutter-damage.patch
rename to patches/server/0255-Stonecutter-damage.patch
index 958a2bccf..4504f0710 100644
--- a/patches/server/0256-Stonecutter-damage.patch
+++ b/patches/server/0255-Stonecutter-damage.patch
@@ -63,7 +63,7 @@ index 3de2e7a17e1234367e4ec6d944b1145781aefeba..15ed564a579237dd1f5d6ce56ccb473f
public static boolean advancementOnlyBroadcastToAffectedPlayer = false;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 52ce83ffceb8480812fe6176d46b803e4324d455..35c2c97b157cda8fd56e1778ea3d0ca6afb84e41 100644
+index 4740ae8bdd63566f484976264a1e5d93a585c928..2967a613750a56fe1a7d6f67a3b650c34bde0aaa 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1001,6 +1001,11 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0257-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0256-Configurable-damage-settings-for-magma-blocks.patch
similarity index 96%
rename from patches/server/0257-Configurable-damage-settings-for-magma-blocks.patch
rename to patches/server/0256-Configurable-damage-settings-for-magma-blocks.patch
index ca27e1d14..f59f5e8c8 100644
--- a/patches/server/0257-Configurable-damage-settings-for-magma-blocks.patch
+++ b/patches/server/0256-Configurable-damage-settings-for-magma-blocks.patch
@@ -18,7 +18,7 @@ index 1b766045687e4dcded5cbcc50b746c55b9a34e22..be365914856593bb3c4e1945cc990786
entity.hurt(world.damageSources().hotFloor(), 1.0F);
org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 35c2c97b157cda8fd56e1778ea3d0ca6afb84e41..77e57af5c11c5100241cc81f2ffa06d4539a6ecd 100644
+index 2967a613750a56fe1a7d6f67a3b650c34bde0aaa..c1234ab9a9420f62ae682b8ef82618c13add1421 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -934,6 +934,13 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0258-Add-config-for-snow-on-blue-ice.patch b/patches/server/0257-Add-config-for-snow-on-blue-ice.patch
similarity index 95%
rename from patches/server/0258-Add-config-for-snow-on-blue-ice.patch
rename to patches/server/0257-Add-config-for-snow-on-blue-ice.patch
index 58b40a0b7..7c65aa21c 100644
--- a/patches/server/0258-Add-config-for-snow-on-blue-ice.patch
+++ b/patches/server/0257-Add-config-for-snow-on-blue-ice.patch
@@ -22,7 +22,7 @@ index 14e00c7feb1c051d56a3d27cd00dcef072dd771a..4952fb1aaaafb55baa0fddb389f966a1
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 77e57af5c11c5100241cc81f2ffa06d4539a6ecd..af6276c368f40bc2dcc7f194f46707bd96997bae 100644
+index c1234ab9a9420f62ae682b8ef82618c13add1421..856c2ada861d87e53d49dc7f82d1707b946f7ba8 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -915,9 +915,11 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0259-Skeletons-eat-wither-roses.patch b/patches/server/0258-Skeletons-eat-wither-roses.patch
similarity index 100%
rename from patches/server/0259-Skeletons-eat-wither-roses.patch
rename to patches/server/0258-Skeletons-eat-wither-roses.patch
diff --git a/patches/server/0260-Enchantment-Table-Persists-Lapis.patch b/patches/server/0259-Enchantment-Table-Persists-Lapis.patch
similarity index 97%
rename from patches/server/0260-Enchantment-Table-Persists-Lapis.patch
rename to patches/server/0259-Enchantment-Table-Persists-Lapis.patch
index 5dcf66709..985002a55 100644
--- a/patches/server/0260-Enchantment-Table-Persists-Lapis.patch
+++ b/patches/server/0259-Enchantment-Table-Persists-Lapis.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Enchantment Table Persists Lapis
diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
-index 0c3c3902e84010684ef703545c1377d8a6f32580..dbf825836727a50a7b8dda48c97df8d846e4fd80 100644
+index 93e8316f9d64625dcc4df0644a2187bcc884ef65..1711406996ec4a9cb7b1838bd2446e5cf802e043 100644
--- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
@@ -38,6 +38,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent;
@@ -62,7 +62,7 @@ index 0c3c3902e84010684ef703545c1377d8a6f32580..dbf825836727a50a7b8dda48c97df8d8
int j;
for (j = 0; j < 3; ++j) {
-@@ -338,6 +371,7 @@ public class EnchantmentMenu extends AbstractContainerMenu {
+@@ -340,6 +373,7 @@ public class EnchantmentMenu extends AbstractContainerMenu {
public void removed(net.minecraft.world.entity.player.Player player) {
super.removed(player);
this.access.execute((world, blockposition) -> {
diff --git a/patches/server/0261-Spark-Profiler.patch b/patches/server/0260-Spark-Profiler.patch
similarity index 100%
rename from patches/server/0261-Spark-Profiler.patch
rename to patches/server/0260-Spark-Profiler.patch
diff --git a/patches/server/0262-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0261-Option-to-disable-kick-for-out-of-order-chat.patch
similarity index 92%
rename from patches/server/0262-Option-to-disable-kick-for-out-of-order-chat.patch
rename to patches/server/0261-Option-to-disable-kick-for-out-of-order-chat.patch
index 44249cb11..e96e70ee5 100644
--- a/patches/server/0262-Option-to-disable-kick-for-out-of-order-chat.patch
+++ b/patches/server/0261-Option-to-disable-kick-for-out-of-order-chat.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index c4d8ca22639f8ad5c4375927f8ce7afa856d1689..9add904665ae8aa5bb7f447bb8b84e4439be56ad 100644
+index c0c515fb95813c5fb9482ac44cd2980d73a363a3..5ab726833006672a5256c90f4d8d056511be5b5f 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2449,7 +2449,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2452,7 +2452,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
do {
instant1 = (Instant) this.lastChatTimeStamp.get();
if (timestamp.isBefore(instant1)) {
diff --git a/patches/server/0263-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0262-Config-for-sculk-shrieker-can_summon-state.patch
similarity index 95%
rename from patches/server/0263-Config-for-sculk-shrieker-can_summon-state.patch
rename to patches/server/0262-Config-for-sculk-shrieker-can_summon-state.patch
index 1e7c02741..48304bf3b 100644
--- a/patches/server/0263-Config-for-sculk-shrieker-can_summon-state.patch
+++ b/patches/server/0262-Config-for-sculk-shrieker-can_summon-state.patch
@@ -18,7 +18,7 @@ index 02d01eabb9606ae8c3b76ad9fa4bb9a525e247b1..ce51fec4a874f9466f9966684c535315
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index a96d897079107cc8582ca908a20027a52aa2b326..09deb7a2ad62e878c1b6ce7b315ec24cbd643807 100644
+index 549726970f64bbb3f6c9935698c3f290a8fb2fec..811e82c935e032db7a82c21fcf186c384be19ffb 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -979,6 +979,11 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0264-Config-to-not-let-coral-die.patch b/patches/server/0263-Config-to-not-let-coral-die.patch
similarity index 96%
rename from patches/server/0264-Config-to-not-let-coral-die.patch
rename to patches/server/0263-Config-to-not-let-coral-die.patch
index 3127bcbcf..367ace5a5 100644
--- a/patches/server/0264-Config-to-not-let-coral-die.patch
+++ b/patches/server/0263-Config-to-not-let-coral-die.patch
@@ -29,7 +29,7 @@ index 88faea00be60a519f56f975a5311df5e1eb3e6b8..cbb726ac367be81e27d3a86643baf7c4
int i = aenumdirection.length;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 09deb7a2ad62e878c1b6ce7b315ec24cbd643807..0474daca28a6449dbc7cb0b7562c0b6d55421e39 100644
+index 811e82c935e032db7a82c21fcf186c384be19ffb..c4a061e88ed7cdfb85e0b97e3d9ae6b1fe2a8bf5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -816,6 +816,11 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0265-Add-local-difficulty-api.patch b/patches/server/0264-Add-local-difficulty-api.patch
similarity index 85%
rename from patches/server/0265-Add-local-difficulty-api.patch
rename to patches/server/0264-Add-local-difficulty-api.patch
index e7e18c588..d8ae84c50 100644
--- a/patches/server/0265-Add-local-difficulty-api.patch
+++ b/patches/server/0264-Add-local-difficulty-api.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 89514af7f3771db496e7e2a40fa4e7fdf527f095..c62fb633f3d27edd6cbfe4221c164ee68f1df5ae 100644
+index 1a481fb4f4228f0fea8a7dc6132248c98b727c90..a3d28fffdfa4b3a4db3009395eb2842a53949d0d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -2283,6 +2283,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -2290,6 +2290,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight());
}
diff --git a/patches/server/0266-Add-toggle-for-RNG-manipulation.patch b/patches/server/0265-Add-toggle-for-RNG-manipulation.patch
similarity index 93%
rename from patches/server/0266-Add-toggle-for-RNG-manipulation.patch
rename to patches/server/0265-Add-toggle-for-RNG-manipulation.patch
index 79e02a5c1..a0faf4871 100644
--- a/patches/server/0266-Add-toggle-for-RNG-manipulation.patch
+++ b/patches/server/0265-Add-toggle-for-RNG-manipulation.patch
@@ -7,7 +7,7 @@ Paper patches RNG maniplulation by using a shared (and locked) random source.
This comes with a performance gain, but technical players may prefer the ability to manipulate RNG.
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index f8caeea9c1ecd3c5dfe0f0a1e8aec342ca21f251..7a955f3848fcea9a72e5b758165f7685e74436c2 100644
+index 44161f9333e043cbe7309a65ce9256687da5ae64..3fc1388cfadb401e16a7793428ac40c30a44a16e 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -575,7 +575,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -33,7 +33,7 @@ index beef2f6a42eebeaf5761bac841300f780bfdf4f2..41797940d89fec55cb7de4c63eb3ea5c
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 0474daca28a6449dbc7cb0b7562c0b6d55421e39..c703266f931ed02653f89b1aa943ec32a59826a0 100644
+index c4a061e88ed7cdfb85e0b97e3d9ae6b1fe2a8bf5..03b9f85261761cb03ebd902ba27e29b9b644d700 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -206,9 +206,11 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0267-Send-client-custom-name-of-BE.patch b/patches/server/0266-Send-client-custom-name-of-BE.patch
similarity index 100%
rename from patches/server/0267-Send-client-custom-name-of-BE.patch
rename to patches/server/0266-Send-client-custom-name-of-BE.patch
diff --git a/patches/server/0268-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch b/patches/server/0267-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch
similarity index 100%
rename from patches/server/0268-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch
rename to patches/server/0267-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch
diff --git a/patches/server/0269-Allow-custom-ChatDecorators.patch b/patches/server/0268-Allow-custom-ChatDecorators.patch
similarity index 90%
rename from patches/server/0269-Allow-custom-ChatDecorators.patch
rename to patches/server/0268-Allow-custom-ChatDecorators.patch
index 0a89f0825..14fb5d529 100644
--- a/patches/server/0269-Allow-custom-ChatDecorators.patch
+++ b/patches/server/0268-Allow-custom-ChatDecorators.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Allow custom ChatDecorators
Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 1041e8e24e03ce46824f6b0f4fca6fc0e2264a98..b0e0ff457c695aba58c208a678492a650a3834c8 100644
+index 462760b366697979e09ac65ee7787c2ab8338342..a556e23c774c107ab95400a73c9f6a7df6e1bb00 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -2657,6 +2657,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop
-Date: Fri, 22 Jul 2022 20:33:58 -0500
-Subject: [PATCH] Cache server motd
-
-Paper ported my patch in an odd way. Keeping my patch around to reduce logic on the motd getter
-
-diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index b0e0ff457c695aba58c208a678492a650a3834c8..6e63763205627a923563bf625b39e04ab436fea6 100644
---- a/src/main/java/net/minecraft/server/MinecraftServer.java
-+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -250,7 +250,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0;
try {
this.isSaving = true;
-@@ -1444,7 +1444,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper
worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur
@@ -192,7 +192,7 @@ index 7f25760aed007435f8a6728323cc566ad1da146e..af3ab7bebc69f0485ec2eb5550ad5217
try {
//worldserver.timings.doTick.startTiming(); // Spigot // Purpur
-@@ -1590,17 +1590,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop {
this.executeBlocking(() -> {
this.saveDebugReport(path.resolve("server"));
-@@ -2530,40 +2531,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop(this, Zombie.class, 8.0F, 0.5D, 0.5D));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 1e0336ade0d02005ffcc68326f386e65bd2f1700..3ffc72a4ad5e7c0a2c9a1ccaf23455613270328d 100644
+index 1b60a83873d999af6c8eecd4cc130a9c1a7290c2..c7470db94eb338466c7a822cfcc332e608435015 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -130,6 +130,7 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0289-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0287-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch
similarity index 100%
rename from patches/server/0289-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch
rename to patches/server/0287-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch
diff --git a/patches/server/0290-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0288-Add-log-suppression-for-LibraryLoader.patch
similarity index 100%
rename from patches/server/0290-Add-log-suppression-for-LibraryLoader.patch
rename to patches/server/0288-Add-log-suppression-for-LibraryLoader.patch
diff --git a/patches/server/0291-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0289-Add-option-to-allow-creeper-to-encircle-target-when-.patch
similarity index 100%
rename from patches/server/0291-Add-option-to-allow-creeper-to-encircle-target-when-.patch
rename to patches/server/0289-Add-option-to-allow-creeper-to-encircle-target-when-.patch
diff --git a/patches/server/0292-Fire-Immunity-API.patch b/patches/server/0290-Fire-Immunity-API.patch
similarity index 95%
rename from patches/server/0292-Fire-Immunity-API.patch
rename to patches/server/0290-Fire-Immunity-API.patch
index d97105d9c..6af42558a 100644
--- a/patches/server/0292-Fire-Immunity-API.patch
+++ b/patches/server/0290-Fire-Immunity-API.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 4dcb02a7326361ecef6fe3cc5cd426fc949f9fd8..4a2d517d1610d5a9a6c18a18886130005e6fa5bb 100644
+index 411abadee2e9b659c7022ad26e5f068276b0e450..fd42a9ab5d05a2abebd94b79dc7a8195e26b97d5 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -405,6 +405,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -50,7 +50,7 @@ index 4dcb02a7326361ecef6fe3cc5cd426fc949f9fd8..4a2d517d1610d5a9a6c18a1888613000
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT");
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
-index ac6640c525df098e54181dd630f83fd0410ca47c..36fb99920e96185ae2c9e758aa81759fdf508075 100644
+index 41089892e735eec7e3914084bbc278d67c4b6ea0..37739d0a58fa60f79462c577531d3e4b5e47b2ba 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -209,6 +209,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
diff --git a/patches/server/0293-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0291-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch
similarity index 93%
rename from patches/server/0293-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch
rename to patches/server/0291-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch
index c53924113..2e2d44697 100644
--- a/patches/server/0293-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch
+++ b/patches/server/0291-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 4a2d517d1610d5a9a6c18a18886130005e6fa5bb..6417fd26d7675c967986055067ce8876a1263e9f 100644
+index fd42a9ab5d05a2abebd94b79dc7a8195e26b97d5..a3305c9378bd7e4c24bc2e447cb1f47ccc0db0b4 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -891,6 +891,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -17,7 +17,7 @@ index 4a2d517d1610d5a9a6c18a18886130005e6fa5bb..6417fd26d7675c967986055067ce8876
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 41910eeaf38b4f6b31f7d6b4b2009063794bb80c..d45fabcece2313779731154caad94230203e77bc 100644
+index b9b405c05c74d59ae4e1a537ff51a66be8a5462a..35c6802aa0bc025fa3ef2002b32a70c7eef3c384 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -421,6 +421,7 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0294-Added-got-ram-event.patch b/patches/server/0292-Added-got-ram-event.patch
similarity index 100%
rename from patches/server/0294-Added-got-ram-event.patch
rename to patches/server/0292-Added-got-ram-event.patch
diff --git a/patches/server/0295-Log-skipped-entity-s-position.patch b/patches/server/0293-Log-skipped-entity-s-position.patch
similarity index 100%
rename from patches/server/0295-Log-skipped-entity-s-position.patch
rename to patches/server/0293-Log-skipped-entity-s-position.patch
diff --git a/patches/server/0296-End-Crystal-Cramming.patch b/patches/server/0294-End-Crystal-Cramming.patch
similarity index 96%
rename from patches/server/0296-End-Crystal-Cramming.patch
rename to patches/server/0294-End-Crystal-Cramming.patch
index bc0d5957e..bf38e3ea5 100644
--- a/patches/server/0296-End-Crystal-Cramming.patch
+++ b/patches/server/0294-End-Crystal-Cramming.patch
@@ -17,7 +17,7 @@ index ad0bf89f7aa3c71b683f8ade930a7b91df69b058..77ffceba328bb1d87ef755dd82b50d02
// Purpur start
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index d45fabcece2313779731154caad94230203e77bc..ec8673375f4fb63e79180680280b7dfcec2cbc3a 100644
+index 35c6802aa0bc025fa3ef2002b32a70c7eef3c384..b9726f571eefcf18215187881a5370926b98afc4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -859,6 +859,7 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0297-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0295-Option-to-allow-beacon-effects-when-covered-by-tinte.patch
similarity index 97%
rename from patches/server/0297-Option-to-allow-beacon-effects-when-covered-by-tinte.patch
rename to patches/server/0295-Option-to-allow-beacon-effects-when-covered-by-tinte.patch
index ad003f98b..e3283a4e3 100644
--- a/patches/server/0297-Option-to-allow-beacon-effects-when-covered-by-tinte.patch
+++ b/patches/server/0295-Option-to-allow-beacon-effects-when-covered-by-tinte.patch
@@ -36,7 +36,7 @@ index cc03c02f290ee8d58a2fea54b1f977f49a2cec6e..49a2308832b24dc1eb839af786dbec9f
BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index ec8673375f4fb63e79180680280b7dfcec2cbc3a..b9f91df268cc3bc0e43e483b1b9912ba1b39a679 100644
+index b9726f571eefcf18215187881a5370926b98afc4..60803fe07d0ccd8b563e1bef72af4e0b87121fd5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -758,11 +758,13 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0298-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0296-Add-attribute-clamping-and-armor-limit-config.patch
similarity index 100%
rename from patches/server/0298-Add-attribute-clamping-and-armor-limit-config.patch
rename to patches/server/0296-Add-attribute-clamping-and-armor-limit-config.patch
diff --git a/patches/server/0299-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0297-Config-to-remove-explosion-radius-clamp.patch
similarity index 96%
rename from patches/server/0299-Config-to-remove-explosion-radius-clamp.patch
rename to patches/server/0297-Config-to-remove-explosion-radius-clamp.patch
index cf61c5d14..0deecd18b 100644
--- a/patches/server/0299-Config-to-remove-explosion-radius-clamp.patch
+++ b/patches/server/0297-Config-to-remove-explosion-radius-clamp.patch
@@ -39,7 +39,7 @@ index e35ebb5b923c2f63e37e5dae006bc4a030e49bb7..dcc3b333f3647631e2fb695d0854036d
}
// CraftBukkit end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index b9f91df268cc3bc0e43e483b1b9912ba1b39a679..7f3d9800955ba5a2f8469f9915d9a92ab6e992e5 100644
+index 60803fe07d0ccd8b563e1bef72af4e0b87121fd5..ec8e54e3d1e98ba02733ece7d856d3fff39bdec3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -215,6 +215,11 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0300-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0298-bonemealable-sugarcane-cactus-and-netherwart.patch
similarity index 98%
rename from patches/server/0300-bonemealable-sugarcane-cactus-and-netherwart.patch
rename to patches/server/0298-bonemealable-sugarcane-cactus-and-netherwart.patch
index 0242540d7..62f777480 100644
--- a/patches/server/0300-bonemealable-sugarcane-cactus-and-netherwart.patch
+++ b/patches/server/0298-bonemealable-sugarcane-cactus-and-netherwart.patch
@@ -137,7 +137,7 @@ index c3f500580d257e1397f2eb7c47b063a6fe6bb405..0d5c6bdfd4aeda472804b493315bf21a
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index 7f3d9800955ba5a2f8469f9915d9a92ab6e992e5..b8f24554458a6aa0cbc9bbc93e0e2f6421a47f81 100644
+index ec8e54e3d1e98ba02733ece7d856d3fff39bdec3..f8492b62492025a73622c930aced76ee515df366 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -812,8 +812,20 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0301-Add-PreExplodeEvents.patch b/patches/server/0299-Add-PreExplodeEvents.patch
similarity index 100%
rename from patches/server/0301-Add-PreExplodeEvents.patch
rename to patches/server/0299-Add-PreExplodeEvents.patch
diff --git a/patches/server/0302-Improve-output-of-plugins-command.patch b/patches/server/0300-Improve-output-of-plugins-command.patch
similarity index 100%
rename from patches/server/0302-Improve-output-of-plugins-command.patch
rename to patches/server/0300-Improve-output-of-plugins-command.patch
diff --git a/patches/server/0304-Add-mending-multiplier.patch b/patches/server/0301-Add-mending-multiplier.patch
similarity index 96%
rename from patches/server/0304-Add-mending-multiplier.patch
rename to patches/server/0301-Add-mending-multiplier.patch
index 352c922e0..b34fdc9c9 100644
--- a/patches/server/0304-Add-mending-multiplier.patch
+++ b/patches/server/0301-Add-mending-multiplier.patch
@@ -27,7 +27,7 @@ index b2233635b6acc35ea3668c36c56e57f15420ac62..724bf857bf1b89cb0947b8a82e0ce09a
public int getValue() {
return this.value;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
-index b8f24554458a6aa0cbc9bbc93e0e2f6421a47f81..669ea831771c72d40591bdcb18a9d35d02f74273 100644
+index f8492b62492025a73622c930aced76ee515df366..a0f42ab3ce426ceffa1b60233d6418ff53349682 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -121,6 +121,7 @@ public class PurpurWorldConfig {
diff --git a/patches/server/0303-Make-GUI-Great-Again.patch b/patches/server/0302-Make-GUI-Great-Again.patch
similarity index 98%
rename from patches/server/0303-Make-GUI-Great-Again.patch
rename to patches/server/0302-Make-GUI-Great-Again.patch
index 670a7a196..86246ce2e 100644
--- a/patches/server/0303-Make-GUI-Great-Again.patch
+++ b/patches/server/0302-Make-GUI-Great-Again.patch
@@ -17,7 +17,7 @@ index f7238261f9797d127ff6e5dcdd62dd20bc65cdba..27dec01dbed8b1836ab5b5af579b9ed9
/*
jline.console.ConsoleReader bufferedreader = reader;
diff --git a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
-index c07918aa1ed2469ad7a76a0add60ab648ff7f421..56cf3d5b8e365ce6b1ec88464d9079d774206755 100644
+index dd9f611efc95f7d06fd3011fedd5d0317b1d0a85..be7b3fe2dc84493dcde9e185717b0b7c7c2e9822 100644
--- a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
+++ b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
@@ -43,6 +43,11 @@ public class MinecraftServerGui extends JComponent {
@@ -115,7 +115,7 @@ index c07918aa1ed2469ad7a76a0add60ab648ff7f421..56cf3d5b8e365ce6b1ec88464d9079d7
@@ -176,7 +214,7 @@ public class MinecraftServerGui extends JComponent {
}
- private static final java.util.regex.Pattern ANSI = java.util.regex.Pattern.compile("\\x1B\\[([0-9]{1,2}(;[0-9]{1,2})*)?[m|K]"); // CraftBukkit
+ private static final java.util.regex.Pattern ANSI = java.util.regex.Pattern.compile("\\e\\[[\\d;]*[^\\d;]"); // CraftBukkit // Paper
- public void print(JTextArea textArea, JScrollPane scrollPane, String message) {
+ public void print(org.purpurmc.purpur.gui.JColorTextPane textArea, JScrollPane scrollPane, String message) { // Purpur
if (!SwingUtilities.isEventDispatchThread()) {
@@ -389,7 +389,7 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a
+ }
+}
diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
-index 74ccc67e3c12dc5182602fb691ef3ddeb5b53280..52af11926a1f7973d70a1dae191d2e8138ec5c94 100644
+index 675cd61221e807aadf28322b46c3daa1370241b5..f0dc6d6dcbe22757e53c07240de65a97f4c70c94 100644
--- a/src/main/resources/log4j2.xml
+++ b/src/main/resources/log4j2.xml
@@ -2,7 +2,16 @@