From 78531a54051323df68c4651729b9f2b4fbe3c31a Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Sun, 24 Sep 2023 16:02:41 -0400 Subject: [PATCH] Updated Upstream (Gale & Purpur & Dependencies) --- build.gradle.kts | 2 +- gradle.properties | 2 +- patches/api/0002-Pufferfish-Sentry.patch | 4 +- patches/api/0003-Purpur-API-Changes.patch | 16 +-- patches/api/0006-Bump-Dependencies.patch | 27 +++-- patches/api/0008-KeYi-Player-Skull-API.patch | 4 +- patches/api/0009-Slice-Smooth-Teleports.patch | 4 +- .../server/0009-Purpur-Server-Changes.patch | 106 +++++++++--------- patches/server/0010-Remove-Timings.patch | 34 +++--- patches/server/0012-Bump-Dependencies.patch | 16 ++- .../server/0026-Leaves-Jade-Protocol.patch | 10 +- .../0027-Leaves-Appleskin-Protocol.patch | 4 +- patches/server/0034-Fix-tracker-NPE.patch | 4 +- ...che-minecart-vehicle-collide-results.patch | 4 +- 14 files changed, 121 insertions(+), 116 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 455427a3..e86f4113 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.5" + id("io.papermc.paperweight.patcher") version "1.5.7-SNAPSHOT" } val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/" diff --git a/gradle.properties b/gradle.properties index f1a85844..a5e577a0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.dreeam.leaf version = 1.20.1-R0.1-SNAPSHOT -galeCommit = 91ba1633a96c8807aeb6c2371e0be5b464fcdaa8 +galeCommit = 973966c1e838c5ece2d0197db2216675b5cfad22 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0002-Pufferfish-Sentry.patch b/patches/api/0002-Pufferfish-Sentry.patch index ca1b98df..6948697b 100644 --- a/patches/api/0002-Pufferfish-Sentry.patch +++ b/patches/api/0002-Pufferfish-Sentry.patch @@ -7,14 +7,14 @@ Original license: GPL v3 Original project: https://github.com/pufferfish-gg/Pufferfish diff --git a/build.gradle.kts b/build.gradle.kts -index 2020f6a2487fe93e98ea0e7faa0995b56a43b174..63c267dca9a97b877fe9bab526f1461b8346b82d 100644 +index a2f7dbcd9ab971e5c4b809e7c9dd39e9b1077af6..2f8d0f4a592536ab8d3b5a95093d118137ba65de 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -46,6 +46,7 @@ dependencies { apiAndDocs("net.kyori:adventure-text-logger-slf4j") api("org.apache.logging.log4j:log4j-api:$log4jVersion") api("org.slf4j:slf4j-api:$slf4jVersion") -+ api("io.sentry:sentry:6.28.0") // Pufferfish ++ api("io.sentry:sentry:6.29.0") // Pufferfish implementation("org.ow2.asm:asm:9.4") implementation("org.ow2.asm:asm-commons:9.4") diff --git a/patches/api/0003-Purpur-API-Changes.patch b/patches/api/0003-Purpur-API-Changes.patch index b595aeea..325a7816 100644 --- a/patches/api/0003-Purpur-API-Changes.patch +++ b/patches/api/0003-Purpur-API-Changes.patch @@ -3,7 +3,7 @@ From: Github Actions Date: Fri, 16 Jun 2023 05:21:52 +0000 Subject: [PATCH] Purpur API Changes -Commit: fbedef8a1618a8d61d787b50a8acc752e3e2ca4c +Commit: f6fd5f6ba6e672bfdbc79def7e8598d984ec8b3c Patches below are removed in this patch: Build-System-Changes.patch @@ -574,10 +574,10 @@ index a5938b0a960121bd77a13e4c8fc8a053bea481c5..43a57c9e32e5a51140e784a4a5a44c0b + // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 6917931966377c51db88a3364997a110dd987970..bf39c6602cfca70a6352519fa26059cd79143cdd 100644 +index b8b97df069b28fa3cf32f1ad1f01f586a0cfbc78..63bf1d70cce9176f47a158a4a767b1bf38d60dbd 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -3992,6 +3992,86 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4008,6 +4008,86 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); @@ -1036,10 +1036,10 @@ index bc84b892cae5fe7019a3ad481e9da79956efa1fe..48eb5b00c460cccde29d327cef1d63fc + // Purpur end } diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 60df0fd1d3ef021cb6aecd8075a1ae87eac5d9eb..d1025b65d159ad3bf99157570b8b81fdb759ac34 100644 +index 2672072ccddaacfebeaea45de472c7420345cde7..877ed7bea937e0be1c404d5ab5cef8fce5e6ac17 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3283,4 +3283,143 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3285,4 +3285,143 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end @@ -1327,7 +1327,7 @@ index c60be4fd24c7fdf65251dd6169e5e1ac3b588d95..569deccd2f1cf21da9b5906433ac493c + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index d15a74c38576c49df61cfab02c70fc5d8c0dd5f7..64055402076b62d32ba947830d935b79bae12d95 100644 +index 0af73cc04edb93b9772136d4d808f657ea40e733..c733206b769d7a55076d863757fcac1a129033b7 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -17,6 +17,18 @@ import org.bukkit.inventory.meta.ItemMeta; @@ -1349,8 +1349,8 @@ index d15a74c38576c49df61cfab02c70fc5d8c0dd5f7..64055402076b62d32ba947830d935b79 /** * Represents a stack of items. -@@ -986,4 +998,626 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat - return livingEntity.damageItemStack(this, amount); +@@ -1005,4 +1017,626 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat + return type.isAir() || amount <= 0; } // Paper end + diff --git a/patches/api/0006-Bump-Dependencies.patch b/patches/api/0006-Bump-Dependencies.patch index c48ed672..d024189b 100644 --- a/patches/api/0006-Bump-Dependencies.patch +++ b/patches/api/0006-Bump-Dependencies.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Bump Dependencies diff --git a/build.gradle.kts b/build.gradle.kts -index 63c267dca9a97b877fe9bab526f1461b8346b82d..302cd023be8e961589110035a5303758bc8aa82d 100644 +index 2f8d0f4a592536ab8d3b5a95093d118137ba65de..d005dd963289cecad7fa072d2531165bd2fc9ef3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,8 +11,8 @@ java { @@ -40,9 +40,9 @@ index 63c267dca9a97b877fe9bab526f1461b8346b82d..302cd023be8e961589110035a5303758 apiAndDocs(platform("net.kyori:adventure-bom:$adventureVersion")) apiAndDocs("net.kyori:adventure-api") apiAndDocs("net.kyori:adventure-text-minimessage") -@@ -48,30 +48,33 @@ dependencies { +@@ -48,30 +48,32 @@ dependencies { api("org.slf4j:slf4j-api:$slf4jVersion") - api("io.sentry:sentry:6.28.0") // Pufferfish + api("io.sentry:sentry:6.29.0") // Pufferfish - implementation("org.ow2.asm:asm:9.4") - implementation("org.ow2.asm:asm-commons:9.4") @@ -70,22 +70,20 @@ index 63c267dca9a97b877fe9bab526f1461b8346b82d..302cd023be8e961589110035a5303758 compileOnlyApi(checkerQual) testCompileOnly(checkerQual) // Paper end -- testImplementation("org.mockito:mockito-core:4.9.0") // Paper - add mockito -+ testImplementation("org.mockito:mockito-core:5.5.0") // Paper - add mockito // Leaf - Bump Dependencies - testImplementation("org.apache.commons:commons-lang3:3.12.0") - testImplementation("junit:junit:4.13.2") - testImplementation("org.hamcrest:hamcrest-library:1.3") + testImplementation("org.apache.commons:commons-lang3:3.13.0") + testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.0") -+ + testImplementation("org.hamcrest:hamcrest:2.2") + testImplementation("org.mockito:mockito-core:5.5.0") testImplementation("org.ow2.asm:asm-tree:9.5") + // Leaf end } configure { -@@ -123,8 +126,8 @@ tasks.withType { +@@ -123,8 +125,8 @@ tasks.withType { options.use() options.isDocFilesSubDirs = true options.links( @@ -94,9 +92,18 @@ index 63c267dca9a97b877fe9bab526f1461b8346b82d..302cd023be8e961589110035a5303758 + "https://guava.dev/releases/32.1.2-jre/api/docs/", // Leaf - Bump Dependencies + "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/", // Leaf - Bump Dependencies "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", // Paper - we don't want Java 5 annotations - // Paper start - // "https://javadoc.io/doc/net.md-5/bungeecord-chat/$bungeeCordChatVersion/", // don't link to bungee chat -@@ -169,6 +172,9 @@ val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks. + // "https://javadoc.io/doc/net.md-5/bungeecord-chat/$bungeeCordChatVersion/", // Paper - don't link to bungee chat + // Paper start - add missing javadoc links +@@ -141,7 +143,7 @@ tasks.withType { + "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", + "https://javadoc.io/doc/org.apache.logging.log4j/log4j-api/$log4jVersion/", + // Paper end +- "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", // Paper ++ "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.9.15", // Paper // Leaf - Bump Dependencies + ) + options.tags("apiNote:a:API Note:") + +@@ -174,6 +176,9 @@ val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks. jarToScan.set(tasks.jar.flatMap { it.archiveFile }) classpath.from(configurations.compileClasspath) } diff --git a/patches/api/0008-KeYi-Player-Skull-API.patch b/patches/api/0008-KeYi-Player-Skull-API.patch index f30b5482..f5ceddb4 100644 --- a/patches/api/0008-KeYi-Player-Skull-API.patch +++ b/patches/api/0008-KeYi-Player-Skull-API.patch @@ -7,7 +7,7 @@ Original license: MIT Original project: https://github.com/KeYiMC/KeYi diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index d1025b65d159ad3bf99157570b8b81fdb759ac34..37668e737e7b507757c70e432a19647db6628b81 100644 +index 877ed7bea937e0be1c404d5ab5cef8fce5e6ac17..1be72e3f0dfb3a8f09af4d913cbe0dc87f30d232 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -8,8 +8,11 @@ import java.util.Collection; @@ -23,7 +23,7 @@ index d1025b65d159ad3bf99157570b8b81fdb759ac34..37668e737e7b507757c70e432a19647d import org.bukkit.DyeColor; import org.bukkit.Effect; import org.bukkit.GameMode; -@@ -3422,4 +3425,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3424,4 +3427,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM sendDeathScreen(message); } // Purpur end diff --git a/patches/api/0009-Slice-Smooth-Teleports.patch b/patches/api/0009-Slice-Smooth-Teleports.patch index 4ee66649..6cdfc877 100644 --- a/patches/api/0009-Slice-Smooth-Teleports.patch +++ b/patches/api/0009-Slice-Smooth-Teleports.patch @@ -7,10 +7,10 @@ Original license: MIT Original project: https://github.com/Cryptite/Slice diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 37668e737e7b507757c70e432a19647db6628b81..8c596943784070915675fd3dc6dcb22c5b2d1a09 100644 +index 1be72e3f0dfb3a8f09af4d913cbe0dc87f30d232..abcb9f86459395ba3ec7ac186079451951f6b52e 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3168,6 +3168,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3170,6 +3170,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM String getClientBrandName(); // Paper end diff --git a/patches/server/0009-Purpur-Server-Changes.patch b/patches/server/0009-Purpur-Server-Changes.patch index 7e1fe838..cd87cb71 100644 --- a/patches/server/0009-Purpur-Server-Changes.patch +++ b/patches/server/0009-Purpur-Server-Changes.patch @@ -3,7 +3,7 @@ From: Github Actions Date: Wed, 24 May 2023 06:00:03 +0800 Subject: [PATCH] Purpur Server Changes -Commit: fbedef8a1618a8d61d787b50a8acc752e3e2ca4c +Commit: f6fd5f6ba6e672bfdbc79def7e8598d984ec8b3c Patches below are removed in this patch: MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -26,7 +26,7 @@ Spark-Profiler.patch Halloween-options-and-optimizations.patch diff --git a/build.gradle.kts b/build.gradle.kts -index 6cdadedb459eacf4a84c0b846399eb06a48a7b7f..15ac7e418105f9c6780b28055edfba888156ed42 100644 +index 898aa6d1198da0c50a274ea0c26aaa4518f9395d..d490236de781f8e10058acc265d8c6032e7048a5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -54,6 +54,10 @@ dependencies { @@ -472,10 +472,10 @@ index d0a8092bf57a29ab7c00ec0ddf52a9fdb2a33267..defe5951938ce3a7b7f83017d4af36bb throw new IllegalStateException("Unable to get CCW facing of " + this); } diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -index 70aade6a8d36f8376cc567800258ea6fabb0607f..d44fde7e44cc862253fe577eb0753524ab7a39dc 100644 +index 8c2750de3be202122ccf9923a9fa32fcb8bdb743..7961a69d3e70a8ae1d74c732cd97a9cbd824a8d0 100644 --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -1186,6 +1186,23 @@ public interface DispenseItemBehavior { +@@ -1187,6 +1187,23 @@ public interface DispenseItemBehavior { } } }); @@ -1002,10 +1002,10 @@ index dd9f611efc95f7d06fd3011fedd5d0317b1d0a85..be7b3fe2dc84493dcde9e185717b0b7c + // Purpur end } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index bdaf3a157b9f9d8158d8112b0986c80f73b161a7..f192057ee342b9f09cc4ead1e605e1677b944ecd 100644 +index d9828fd85d39116867bdb7e4fbe899bae9fc0f2d..63bb216b13a7d9af34895005f699e897fe25d7ba 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1023,7 +1023,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1026,7 +1026,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return this.anyPlayerCloseEnoughForSpawning(this.getUpdatingChunkIfPresent(chunkcoordintpair.toLong()), chunkcoordintpair, reducedRange); } @@ -1606,7 +1606,7 @@ index 8e851f6f5d72f3d1d35d5e0a9bcabaf4f5a227a1..dc217ac3f405a7b86608e026ecf6f429 + // 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 8171385688405d9f3263c099177bd92e92d55c38..b959abd801fa2d0646375a388f1d9053fff88f29 100644 +index 4a5d64b0b5e176fa15981516ecf44fc46b8f0fd6..52fd7d53a26c37cc7ad768f0d35cd82667a4dba1 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -349,6 +349,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -1851,7 +1851,7 @@ index 8171385688405d9f3263c099177bd92e92d55c38..b959abd801fa2d0646375a388f1d9053 } } while (!this.lastChatTimeStamp.compareAndSet(instant1, timestamp)); -@@ -2896,6 +2972,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2875,6 +2951,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic AABB axisalignedbb = entity.getBoundingBox(); if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.getMaxInteractionDistanceSquared(this.player.level())) { // Gale - make max interaction distance configurable @@ -1859,7 +1859,7 @@ index 8171385688405d9f3263c099177bd92e92d55c38..b959abd801fa2d0646375a388f1d9053 packet.dispatch(new ServerboundInteractPacket.Handler() { private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand); -@@ -2909,6 +2986,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2888,6 +2965,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -1868,7 +1868,7 @@ index 8171385688405d9f3263c099177bd92e92d55c38..b959abd801fa2d0646375a388f1d9053 // Entity in bucket - SPIGOT-4048 and SPIGOT-6859a 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. -@@ -3489,6 +3568,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3468,6 +3547,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic } } } @@ -1881,7 +1881,7 @@ index 8171385688405d9f3263c099177bd92e92d55c38..b959abd801fa2d0646375a388f1d9053 boolean flag1 = packet.getSlotNum() >= 1 && packet.getSlotNum() <= 45; boolean flag2 = itemstack.isEmpty() || itemstack.getDamageValue() >= 0 && itemstack.getCount() <= 64 && !itemstack.isEmpty(); -@@ -3644,6 +3729,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3623,6 +3708,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 @@ -1889,7 +1889,7 @@ index 8171385688405d9f3263c099177bd92e92d55c38..b959abd801fa2d0646375a388f1d9053 @Override public void handleCustomPayload(ServerboundCustomPayloadPacket packet) { -@@ -3668,6 +3754,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3647,6 +3733,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 } @@ -3156,7 +3156,7 @@ index 75a06dec69ee79af5b321388b104bf1cb6acf83c..bef1b8cb3664d499fe45e6d60fe131a0 }); } diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 20e0e03efc8bc878bc4a1fe66d2d4027b381d7c4..b27b1df608bca3242bed8bc5b7603d0e88fa50bf 100644 +index 92a92c0f4a6bcecfecacd8e4a4ab8658124d9418..455a0a96ac6aa6106e9011cd41be228b5a880fe5 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -65,6 +65,7 @@ import net.minecraft.world.item.ProjectileWeaponItem; @@ -3252,7 +3252,7 @@ index 20e0e03efc8bc878bc4a1fe66d2d4027b381d7c4..b27b1df608bca3242bed8bc5b7603d0e Vec3i baseblockposition = this.getPickupReach(); List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); Iterator iterator = list.iterator(); -@@ -1142,6 +1171,12 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1149,6 +1178,12 @@ public abstract class Mob extends LivingEntity implements Targeting { } @@ -3265,7 +3265,7 @@ index 20e0e03efc8bc878bc4a1fe66d2d4027b381d7c4..b27b1df608bca3242bed8bc5b7603d0e @Nullable public static Item getEquipmentForSlot(EquipmentSlot equipmentSlot, int equipmentLevel) { switch (equipmentSlot) { -@@ -1236,7 +1271,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1243,7 +1278,7 @@ public abstract class Mob extends LivingEntity implements Targeting { RandomSource randomsource = world.getRandom(); this.getAttribute(Attributes.FOLLOW_RANGE).addPermanentModifier(new AttributeModifier("Random spawn bonus", randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.MULTIPLY_BASE)); @@ -3274,7 +3274,7 @@ index 20e0e03efc8bc878bc4a1fe66d2d4027b381d7c4..b27b1df608bca3242bed8bc5b7603d0e this.setLeftHanded(true); } else { this.setLeftHanded(false); -@@ -1284,6 +1319,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1291,6 +1326,7 @@ public abstract class Mob extends LivingEntity implements Targeting { if (!this.isAlive()) { return InteractionResult.PASS; } else if (this.getLeashHolder() == player) { @@ -3282,7 +3282,7 @@ index 20e0e03efc8bc878bc4a1fe66d2d4027b381d7c4..b27b1df608bca3242bed8bc5b7603d0e // CraftBukkit start - fire PlayerUnleashEntityEvent // Paper start - drop leash variable org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.getAbilities().instabuild); -@@ -1357,7 +1393,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1364,7 +1400,7 @@ public abstract class Mob extends LivingEntity implements Targeting { protected void onOffspringSpawnedFromEgg(Player player, Mob child) {} protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -3291,7 +3291,7 @@ index 20e0e03efc8bc878bc4a1fe66d2d4027b381d7c4..b27b1df608bca3242bed8bc5b7603d0e } public boolean isWithinRestriction() { -@@ -1662,6 +1698,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1669,6 +1705,7 @@ public abstract class Mob extends LivingEntity implements Targeting { this.setLastHurtMob(target); } @@ -3299,7 +3299,7 @@ index 20e0e03efc8bc878bc4a1fe66d2d4027b381d7c4..b27b1df608bca3242bed8bc5b7603d0e return flag; } -@@ -1677,34 +1714,8 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1684,34 +1721,8 @@ public abstract class Mob extends LivingEntity implements Targeting { } @@ -3335,7 +3335,7 @@ index 20e0e03efc8bc878bc4a1fe66d2d4027b381d7c4..b27b1df608bca3242bed8bc5b7603d0e } @Override -@@ -1751,4 +1762,56 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1758,4 +1769,56 @@ public abstract class Mob extends LivingEntity implements Targeting { return itemmonsteregg == null ? null : new ItemStack(itemmonsteregg); } @@ -8763,7 +8763,7 @@ index 4ce3e69970dd9eb251d0538a2d233ca30e9e5e47..afc65b8bb7e7f7f70a25f2d869412ed3 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 9ca1e9d95e62929c0015d5ca2c2f9c70e421842e..d96482dc1df0f9076951c745cc001e2eb300011a 100644 +index 26c7b2f18f21b04529f989b345c385693d98c903..7a030358459866c1c11fac8b81cb81ce50c29fb6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -66,16 +66,19 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -13115,10 +13115,10 @@ index 0bbe853f7df93f9dcd2b21d762939f8b6be069aa..7db9844083703944f59e112c6dc5e1a5 public void tick() { super.tick(); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index d598a99072bd8eb4a4ed151b9202237dd0c2af8c..5a40922128fc7722afd9e902c1502a038cb57a25 100644 +index e799b199bee08bfaf5575eb0c0d2194af495d43e..8aed5562f2ae4cd63894d3c488b3607a92884db8 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -328,6 +328,6 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -335,6 +335,6 @@ public abstract class Projectile extends Entity implements TraceableEntity { public boolean mayInteract(Level world, BlockPos pos) { Entity entity = this.getOwner(); @@ -13526,7 +13526,7 @@ index b16d9e2eaa589f19c563ee70b1a56d67dbcdecb0..71beab673f04cd051c46ea37f8c84731 public static final FoodProperties BAKED_POTATO = (new FoodProperties.Builder()).nutrition(5).saturationMod(0.6F).build(); public static final FoodProperties BEEF = (new FoodProperties.Builder()).nutrition(3).saturationMod(0.3F).meat().build(); diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java -index 71b7a091e56dd68da280d13318a393170967b042..9614a0b5b32d88a5b212e33af649ca1aa2a22dfd 100644 +index 7bba845462813615224f48322c51c7b480adcaa7..38d47fbcd49cc291040ea00470abeb982fe2714c 100644 --- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -76,6 +76,7 @@ public abstract class AbstractContainerMenu { @@ -13771,7 +13771,7 @@ index 0dbfd23bbfc6ad203f048142f8c90ef741849fe1..9a80427d2bb470b6b1638e59aba57216 return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, inventory, 6); } diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index 93e8316f9d64625dcc4df0644a2187bcc884ef65..1711406996ec4a9cb7b1838bd2446e5cf802e043 100644 +index 496c3fcf49043bba4d249e1c05aac7d7b4897ea8..f0a84889103cb605d3b1496f03d855848a5f5067 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; @@ -13837,7 +13837,7 @@ index 93e8316f9d64625dcc4df0644a2187bcc884ef65..1711406996ec4a9cb7b1838bd2446e5c }); } diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index b56766ff0e61691294b40ea8c2370940c0e8b640..23a8522b80475ad29ffb4afd2f4836acda2538e3 100644 +index a21eadcdfbdc4be803c5793bc97996db3e706071..3b721092a7a73472756064e0eb91d3220fdc4bc8 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -95,9 +95,11 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -13933,10 +13933,10 @@ index c549618421c5d077c3d977d8d2064eca2acc438a..5972fa434847d24fa98b7895fd8386d2 @Override diff --git a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java -index ff770b9ce68a62418de0c7ed389650626fa1dcb2..102739c0089ff3f6b3432f954304d43a3dfebc35 100644 +index c2cf5a8e788637c6264cf43d712a5be223ff1cc5..a578882b64c581ef4f47fa483a9f2988cfa4c8cf 100644 --- a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java -@@ -177,7 +177,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu { +@@ -178,7 +178,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu { return ItemStack.EMPTY; } @@ -14401,7 +14401,7 @@ index 180aec596110309aade13d2080f8824d152b07cb..552c31c0f3746dd35388395036e70a92 return InteractionResult.PASS; } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 0116eeff6de9948c398486c4f910d58862f88eb9..ff8059553976ec7ce1a977ec6e6c90731d405573 100644 +index 4250b65cca60a8e4f9ea52e216511fbc6ed7293a..c390a9494bcf9480a61ddbe75e6d5a943e5f9d22 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -113,6 +113,7 @@ import org.bukkit.event.world.StructureGrowEvent; @@ -14412,7 +14412,7 @@ index 0116eeff6de9948c398486c4f910d58862f88eb9..ff8059553976ec7ce1a977ec6e6c9073 public static final Codec CODEC = RecordCodecBuilder.create((instance) -> { return instance.group(BuiltInRegistries.ITEM.byNameCodec().fieldOf("id").forGetter(ItemStack::getItem), Codec.INT.fieldOf("Count").forGetter(ItemStack::getCount), CompoundTag.CODEC.optionalFieldOf("tag").forGetter((itemstack) -> { return Optional.ofNullable(itemstack.getTag()); -@@ -426,6 +427,7 @@ public final class ItemStack { +@@ -427,6 +428,7 @@ public final class ItemStack { world.preventPoiUpdated = true; // CraftBukkit - SPIGOT-5710 for (BlockState blockstate : blocks) { blockstate.update(true, false); @@ -14420,7 +14420,7 @@ index 0116eeff6de9948c398486c4f910d58862f88eb9..ff8059553976ec7ce1a977ec6e6c9073 } world.preventPoiUpdated = false; -@@ -455,6 +457,7 @@ public final class ItemStack { +@@ -456,6 +458,7 @@ public final class ItemStack { if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically block.getBlock().onPlace(block, world, newblockposition, oldBlock, true, context); // Paper - pass context } @@ -14428,7 +14428,7 @@ index 0116eeff6de9948c398486c4f910d58862f88eb9..ff8059553976ec7ce1a977ec6e6c9073 world.notifyAndUpdatePhysics(newblockposition, null, oldBlock, block, world.getBlockState(newblockposition), updateFlag, 512); // send null chunk as chunk.k() returns false by this point } -@@ -583,6 +586,16 @@ public final class ItemStack { +@@ -584,6 +587,16 @@ public final class ItemStack { return this.isDamageableItem() && this.getDamageValue() > 0; } @@ -14445,7 +14445,7 @@ index 0116eeff6de9948c398486c4f910d58862f88eb9..ff8059553976ec7ce1a977ec6e6c9073 public int getDamageValue() { return this.tag == null ? 0 : this.tag.getInt("Damage"); } -@@ -602,7 +615,7 @@ public final class ItemStack { +@@ -603,7 +616,7 @@ public final class ItemStack { int j; if (amount > 0) { @@ -14454,7 +14454,7 @@ index 0116eeff6de9948c398486c4f910d58862f88eb9..ff8059553976ec7ce1a977ec6e6c9073 int k = 0; for (int l = 0; j > 0 && l < amount; ++l) { -@@ -657,6 +670,12 @@ public final class ItemStack { +@@ -658,6 +671,12 @@ public final class ItemStack { if (this.hurt(amount, entity.getRandom(), entity /*instanceof ServerPlayer ? (ServerPlayer) entity : null*/)) { // Paper - pass LivingEntity for EntityItemDamageEvent breakCallback.accept(entity); Item item = this.getItem(); @@ -14467,7 +14467,7 @@ index 0116eeff6de9948c398486c4f910d58862f88eb9..ff8059553976ec7ce1a977ec6e6c9073 // CraftBukkit start - Check for item breaking if (this.count == 1 && entity instanceof net.minecraft.world.entity.player.Player) { org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent((net.minecraft.world.entity.player.Player) entity, this); -@@ -1183,7 +1202,7 @@ public final class ItemStack { +@@ -1184,7 +1203,7 @@ public final class ItemStack { ListTag nbttaglist = this.tag.getList("Enchantments", 10); @@ -14476,7 +14476,7 @@ index 0116eeff6de9948c398486c4f910d58862f88eb9..ff8059553976ec7ce1a977ec6e6c9073 processEnchantOrder(this.tag); // Paper } -@@ -1191,6 +1210,12 @@ public final class ItemStack { +@@ -1192,6 +1211,12 @@ public final class ItemStack { return this.tag != null && this.tag.contains("Enchantments", 9) ? !this.tag.getList("Enchantments", 10).isEmpty() : false; } @@ -14966,7 +14966,7 @@ index 2a7813209d664fd8c123488ce9c530b4440be163..63f397a5d90d7f05d17db2a5f57dbf1b Set set = Sets.newHashSet(); boolean flag = true; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index aaa83188bc5c9da1ab7a50bd3f97a420e242a714..a3ce11801710a1f87afeab5eafcced8ca98d2b31 100644 +index bf19dbc64090a14b30d47687c66bf92bf3417ac6..405fb93496113836b0d8328d631fdd07d6b14be7 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -175,6 +175,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -15036,8 +15036,8 @@ index aaa83188bc5c9da1ab7a50bd3f97a420e242a714..a3ce11801710a1f87afeab5eafcced8c this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); -@@ -1565,4 +1611,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - return null; +@@ -1576,4 +1622,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + } } // Paper end + @@ -16639,7 +16639,7 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2 @Override diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -index 3b866e2c20ee7bfc981ff09b29065530de993778..2e6220c5a6c871401ce9734adfab710dcf86ad44 100644 +index 5c951ef93fe4cf4f085df86b0cefc02bc2610ab9..2979c1eceaac79a82da19eba5d8fb1db6537ff45 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java @@ -84,6 +84,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name @@ -17536,7 +17536,7 @@ index c1b874cd6e0498fce3cd53fdbaca30d290e004d7..23087d511b609693f0bb06cbaac8b6cf + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index f44bb05c9478ec9a4d9c512fa1b6fc3a8acd5949..40ce72ac4ca4f262ad77cf5ba47b8f2c8d9055d2 100644 +index 0651aaa8abf43a94ed06e591fd082a961aabc01f..dfedd645cb6a521d6871f09a61371b0342a7e761 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -401,6 +401,20 @@ public final class CraftServer implements Server { @@ -17558,9 +17558,9 @@ index f44bb05c9478ec9a4d9c512fa1b6fc3a8acd5949..40ce72ac4ca4f262ad77cf5ba47b8f2c + }); + // Purpur end - // Register all the Enchantments and PotionTypes now so we can stop new registration immediately after - Enchantments.SHARPNESS.getClass(); -@@ -1062,6 +1076,7 @@ public final class CraftServer implements Server { + CraftRegistry.setMinecraftRegistry(console.registryAccess()); + +@@ -1042,6 +1056,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); this.console.galeConfigurations.reloadConfigs(this.console); // Gale - Gale configuration @@ -17568,7 +17568,7 @@ index f44bb05c9478ec9a4d9c512fa1b6fc3a8acd5949..40ce72ac4ca4f262ad77cf5ba47b8f2c for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1077,6 +1092,7 @@ public final class CraftServer implements Server { +@@ -1057,6 +1072,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -17576,7 +17576,7 @@ index f44bb05c9478ec9a4d9c512fa1b6fc3a8acd5949..40ce72ac4ca4f262ad77cf5ba47b8f2c } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1092,6 +1108,7 @@ public final class CraftServer implements Server { +@@ -1072,6 +1088,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -17584,7 +17584,7 @@ index f44bb05c9478ec9a4d9c512fa1b6fc3a8acd5949..40ce72ac4ca4f262ad77cf5ba47b8f2c this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1556,6 +1573,55 @@ public final class CraftServer implements Server { +@@ -1536,6 +1553,55 @@ public final class CraftServer implements Server { return true; } @@ -17640,7 +17640,7 @@ index f44bb05c9478ec9a4d9c512fa1b6fc3a8acd5949..40ce72ac4ca4f262ad77cf5ba47b8f2c @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2895,6 +2961,7 @@ public final class CraftServer implements Server { +@@ -2875,6 +2941,7 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { return new double[] { @@ -17648,7 +17648,7 @@ index f44bb05c9478ec9a4d9c512fa1b6fc3a8acd5949..40ce72ac4ca4f262ad77cf5ba47b8f2c net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -2987,6 +3054,18 @@ public final class CraftServer implements Server { +@@ -2967,6 +3034,18 @@ public final class CraftServer implements Server { } // Gale end - Gale configuration - API @@ -17667,7 +17667,7 @@ index f44bb05c9478ec9a4d9c512fa1b6fc3a8acd5949..40ce72ac4ca4f262ad77cf5ba47b8f2c @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -3218,4 +3297,15 @@ public final class CraftServer implements Server { +@@ -3198,4 +3277,15 @@ public final class CraftServer implements Server { } // Gale end - YAPFA - last tick time - API @@ -17737,7 +17737,7 @@ index a5a9c70c0d39ee36397790b2c7232ca13fff5a3a..781459eacba671bde24cc696598a7dbd public PersistentDataContainer getPersistentDataContainer() { return this.persistentDataContainer; diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 98eb3f64f9e057564ad041085d1676945a1ac182..89107a4aaecbb38fb061bc45d8a6d689a69c87fc 100644 +index 28d7bee4a69cb354dbe4d56c7ee9021b2e574b40..a0c9fb55dfe29e62550ea80c8556aeb08d0c4f3b 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -194,6 +194,20 @@ public class Main { @@ -17761,7 +17761,7 @@ index 98eb3f64f9e057564ad041085d1676945a1ac182..89107a4aaecbb38fb061bc45d8a6d689 // Paper start acceptsAll(asList("server-name"), "Name of the server") .withRequiredArg() -@@ -305,7 +319,7 @@ public class Main { +@@ -313,7 +327,7 @@ public class Main { System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } @@ -18169,7 +18169,7 @@ index 0ad16ee7b33582d214dab41eeee378d52c8e38ed..16bd1294c219f15ada653ef810bc2d74 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4e6fea7cf11b1e29ae7c7098a6f5d06bb5f93cc2..668d825a2469706e4de11629a0b41877de700ca6 100644 +index 3d5876cbadb5c8c02de751c3e15fc7f251ea7d35..720a81da72a8002ff02cc39e5fca42354519c742 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -517,10 +517,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0010-Remove-Timings.patch b/patches/server/0010-Remove-Timings.patch index d147faf0..4d408b3c 100644 --- a/patches/server/0010-Remove-Timings.patch +++ b/patches/server/0010-Remove-Timings.patch @@ -1183,7 +1183,7 @@ index 505386640a12219dd19e27e58691701b74b55a28..a572776603817fa4745b188651e3af61 // Paper start if (waitableArray[0] != null) { diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index f192057ee342b9f09cc4ead1e605e1677b944ecd..fd26d043747a9937078a25307248b7e8be017809 100644 +index 63bb216b13a7d9af34895005f699e897fe25d7ba..d6c089722bc4b40b9042607c465fe8e7e0a6683f 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -1,6 +1,5 @@ @@ -1193,7 +1193,7 @@ index f192057ee342b9f09cc4ead1e605e1677b944ecd..fd26d043747a9937078a25307248b7e8 import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList.Builder; import com.google.common.collect.Iterables; -@@ -637,13 +636,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -640,13 +639,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } protected void tick(BooleanSupplier shouldKeepTicking) { @@ -1207,7 +1207,7 @@ index f192057ee342b9f09cc4ead1e605e1677b944ecd..fd26d043747a9937078a25307248b7e8 } } -@@ -1263,25 +1258,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1266,25 +1261,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper start - optimised tracker private final void processTrackQueue() { @@ -1233,7 +1233,7 @@ index f192057ee342b9f09cc4ead1e605e1677b944ecd..fd26d043747a9937078a25307248b7e8 } // Paper end - optimised tracker -@@ -1295,7 +1279,6 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1298,7 +1282,6 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider List list = Lists.newArrayList(); List list1 = this.level.players(); ObjectIterator objectiterator = this.entityMap.values().iterator(); @@ -1241,7 +1241,7 @@ index f192057ee342b9f09cc4ead1e605e1677b944ecd..fd26d043747a9937078a25307248b7e8 ChunkMap.TrackedEntity playerchunkmap_entitytracker; -@@ -1320,17 +1303,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1323,17 +1306,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider playerchunkmap_entitytracker.serverEntity.sendChanges(); } } @@ -1540,18 +1540,18 @@ index b77a84a5ab85839e37aee24da0f4356be3f478e2..be7c1ecd78a169d2dc9f642fcddbf47c } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index b959abd801fa2d0646375a388f1d9053fff88f29..40f32af1976323fd5ffe9aef0725025284daffb3 100644 +index 52fd7d53a26c37cc7ad768f0d35cd82667a4dba1..89d40b2e1fbd0f0de03b90922c71e33db9efd3ae 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2673,7 +2673,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic - } - } - // Paper End +@@ -2652,7 +2652,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic + + public void handleCommand(String s) { // Paper - private -> public + org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher - co.aikar.timings.MinecraftTimings.playerCommandTimer.startTiming(); // Paper if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2683,7 +2682,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2662,7 +2661,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -1559,7 +1559,7 @@ index b959abd801fa2d0646375a388f1d9053fff88f29..40f32af1976323fd5ffe9aef07250252 return; } -@@ -2695,8 +2693,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2674,8 +2672,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic player.sendMessage(org.bukkit.ChatColor.RED + "An internal error occurred while attempting to perform this command"); java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; @@ -1735,7 +1735,7 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..4de18d00cc464313b777874430da3f55 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index a3ce11801710a1f87afeab5eafcced8ca98d2b31..7f7d5b9ac42bd510e29834d1df7f49d5659fbfa2 100644 +index 405fb93496113836b0d8328d631fdd07d6b14be7..78f2bea7ae34be7a2152d7c31e90a524eac1ddfe 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -176,7 +176,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -1878,10 +1878,10 @@ index 6530e172527ad4c42a65f03ce8d4847facf43b38..b0016f7ccc6225257f2bc893ffb1565c } } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 40ce72ac4ca4f262ad77cf5ba47b8f2c8d9055d2..b656114a0c2594c553e60b8a923a8a99c3b682c2 100644 +index dfedd645cb6a521d6871f09a61371b0342a7e761..62e4e6e840dd1d5dcbab14d2f5708839a08a8d4d 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -471,7 +471,6 @@ public final class CraftServer implements Server { +@@ -473,7 +473,6 @@ public final class CraftServer implements Server { this.saveCommandsConfig(); this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); @@ -1890,10 +1890,10 @@ index 40ce72ac4ca4f262ad77cf5ba47b8f2c8d9055d2..b656114a0c2594c553e60b8a923a8a99 console.autosavePeriod = this.configuration.getInt("ticks-per.autosave"); this.warningState = WarningState.value(this.configuration.getString("settings.deprecated-verbose")); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 89107a4aaecbb38fb061bc45d8a6d689a69c87fc..034b0ee29fc325c162e79b3d88570001a973e999 100644 +index a0c9fb55dfe29e62550ea80c8556aeb08d0c4f3b..ad58286ff6c82acdb611d94570eb3c54bb4058b1 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -369,8 +369,6 @@ public class Main { +@@ -377,8 +377,6 @@ public class Main { tryPreloadClass("org.jline.terminal.impl.MouseSupport"); tryPreloadClass("org.jline.terminal.impl.MouseSupport$1"); tryPreloadClass("org.jline.terminal.Terminal$MouseTracking"); diff --git a/patches/server/0012-Bump-Dependencies.patch b/patches/server/0012-Bump-Dependencies.patch index d847c49b..6da60c3c 100644 --- a/patches/server/0012-Bump-Dependencies.patch +++ b/patches/server/0012-Bump-Dependencies.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Bump Dependencies diff --git a/build.gradle.kts b/build.gradle.kts -index 15ac7e418105f9c6780b28055edfba888156ed42..4fb31ab18221f886220394ba80fec65e771e1851 100644 +index d490236de781f8e10058acc265d8c6032e7048a5..746a949cae23808e65220ad03d7a2e0534212e5c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -22,7 +22,7 @@ dependencies { @@ -29,16 +29,14 @@ index 15ac7e418105f9c6780b28055edfba888156ed42..4fb31ab18221f886220394ba80fec65e runtimeOnly(log4jPlugins.output) alsoShade(log4jPlugins.output) - implementation("io.netty:netty-codec-haproxy:4.1.87.Final") // Paper - Add support for proxy protocol -+ implementation("io.netty:netty-codec-haproxy:4.1.97.Final") // Paper - Add support for proxy protocol ++ implementation("io.netty:netty-codec-haproxy:4.1.98.Final") // Paper - Add support for proxy protocol // Paper end - implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion -- implementation("org.ow2.asm:asm:9.4") -- implementation("org.ow2.asm:asm-commons:9.4") // Paper - ASM event executor generation ++ implementation("org.apache.logging.log4j:log4j-iostreams:2.20.0") // Paper - remove exclusion + implementation("org.ow2.asm:asm:9.5") + implementation("org.ow2.asm:asm-commons:9.5") // Paper - ASM event executor generation - testImplementation("org.mockito:mockito-core:4.9.0") // Paper - switch to mockito - implementation("org.spongepowered:configurate-yaml:4.1.2") // Paper - config files -+ implementation("org.apache.logging.log4j:log4j-iostreams:2.20.0") // Paper - remove exclusion -+ implementation("org.ow2.asm:asm:9.5") -+ implementation("org.ow2.asm:asm-commons:9.5") // Paper - ASM event executor generation + testImplementation("org.mockito:mockito-core:5.5.0") // Paper - switch to mockito + implementation("org.spongepowered:configurate-yaml:4.2.0-SNAPSHOT") // Paper - config files implementation("commons-lang:commons-lang:2.6") @@ -86,12 +84,12 @@ index 15ac7e418105f9c6780b28055edfba888156ed42..4fb31ab18221f886220394ba80fec65e + testImplementation("org.hamcrest:hamcrest:2.2") - implementation("io.netty:netty-all:4.1.87.Final"); // Paper - Bump netty -+ implementation("io.netty:netty-all:4.1.97.Final"); // Paper - Bump netty ++ implementation("io.netty:netty-all:4.1.98.Final"); // Paper - Bump netty + // Leaf end } val craftbukkitPackageVersion = "1_20_R1" // Paper -@@ -260,3 +266,7 @@ sourceSets { +@@ -269,3 +275,7 @@ sourceSets { } } // Gale end - package license into jar diff --git a/patches/server/0026-Leaves-Jade-Protocol.patch b/patches/server/0026-Leaves-Jade-Protocol.patch index a9a66dea..3dca3459 100644 --- a/patches/server/0026-Leaves-Jade-Protocol.patch +++ b/patches/server/0026-Leaves-Jade-Protocol.patch @@ -9,7 +9,7 @@ Original project: https://github.com/LeavesMC/Leaves This patch is Powered by Jade(https://github.com/Snownee/Jade) diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 97958536a31f4a5f3b1935f5afeb9c81ecfa458b..223bb1f3e48cc073ef239a154966cab4e0b71059 100644 +index c373f084d846e12faa42455c76f580b67b634717..019d504909d6492500cca77fae0a1e675aa53c88 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -250,6 +250,7 @@ import org.bukkit.inventory.CraftingInventory; @@ -20,7 +20,7 @@ index 97958536a31f4a5f3b1935f5afeb9c81ecfa458b..223bb1f3e48cc073ef239a154966cab4 // CraftBukkit end public class ServerGamePacketListenerImpl implements ServerPlayerConnection, TickablePacketListener, ServerGamePacketListener { -@@ -3771,6 +3772,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3750,6 +3751,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic } // Paper end this.cserver.getMessenger().dispatchIncomingMessage(this.player.getBukkitEntity(), packet.identifier.toString(), data); @@ -57,10 +57,10 @@ index e91b4d63d42276f8a498cab7c439c785730f3f6f..a2d7c5008c6d6716d9530e00de0db027 } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index b656114a0c2594c553e60b8a923a8a99c3b682c2..9de1ba2ae71c65ad3262d445a89c1620d84d860c 100644 +index 62e4e6e840dd1d5dcbab14d2f5708839a08a8d4d..5c7264f1f1147d27b22164c905ebfaa1de438faf 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -483,6 +483,7 @@ public final class CraftServer implements Server { +@@ -485,6 +485,7 @@ public final class CraftServer implements Server { MapPalette.setMapColorCache(new CraftMapColorCache(this.logger)); } datapackManager = new io.papermc.paper.datapack.PaperDatapackManager(console.getPackRepository()); // Paper @@ -68,7 +68,7 @@ index b656114a0c2594c553e60b8a923a8a99c3b682c2..9de1ba2ae71c65ad3262d445a89c1620 } public boolean getCommandBlockOverride(String command) { -@@ -1076,6 +1077,11 @@ public final class CraftServer implements Server { +@@ -1056,6 +1057,11 @@ public final class CraftServer implements Server { this.console.paperConfigurations.reloadConfigs(this.console); this.console.galeConfigurations.reloadConfigs(this.console); // Gale - Gale configuration org.purpurmc.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur diff --git a/patches/server/0027-Leaves-Appleskin-Protocol.patch b/patches/server/0027-Leaves-Appleskin-Protocol.patch index ddfb5f85..164003b1 100644 --- a/patches/server/0027-Leaves-Appleskin-Protocol.patch +++ b/patches/server/0027-Leaves-Appleskin-Protocol.patch @@ -39,10 +39,10 @@ index ffc24a510d5557a31e9bea7bd51ee9ccb58ba633..7637dbf519568693fd1b707490d4cd8a org.purpurmc.purpur.task.BossBarTask.removeFromAll(entityplayer.getBukkitEntity()); // Purpur ServerLevel worldserver = entityplayer.serverLevel(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 9de1ba2ae71c65ad3262d445a89c1620d84d860c..f1210c93e4ca84ae45bf006ebcb37852a91e0352 100644 +index 5c7264f1f1147d27b22164c905ebfaa1de438faf..164f07df76b10521b0f946258d4667ac13220fa1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1082,6 +1082,13 @@ public final class CraftServer implements Server { +@@ -1062,6 +1062,13 @@ public final class CraftServer implements Server { top.leavesmc.leaves.protocol.JadeProtocol.enableAllPlayer(); } // Leaves end - Jade diff --git a/patches/server/0034-Fix-tracker-NPE.patch b/patches/server/0034-Fix-tracker-NPE.patch index 600f156d..b0b97c7f 100644 --- a/patches/server/0034-Fix-tracker-NPE.patch +++ b/patches/server/0034-Fix-tracker-NPE.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix tracker NPE diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index fd26d043747a9937078a25307248b7e8be017809..98bc16336ac3d308df82ffc474b55b5d4785fc29 100644 +index d6c089722bc4b40b9042607c465fe8e7e0a6683f..760ac820d7981e0c215b2ddb246cfab3ef5e59f3 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -114,8 +114,6 @@ import org.bukkit.craftbukkit.generator.CustomChunkGenerator; @@ -26,7 +26,7 @@ index fd26d043747a9937078a25307248b7e8be017809..98bc16336ac3d308df82ffc474b55b5d // Paper - rewrite chunk system // Paper start - optimise checkDespawn -@@ -1424,7 +1422,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1427,7 +1425,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider final Entity entity; private final int range; SectionPos lastSectionPos; diff --git a/patches/server/0035-Cache-minecart-vehicle-collide-results.patch b/patches/server/0035-Cache-minecart-vehicle-collide-results.patch index df3c1c53..b7ad4a55 100644 --- a/patches/server/0035-Cache-minecart-vehicle-collide-results.patch +++ b/patches/server/0035-Cache-minecart-vehicle-collide-results.patch @@ -8,7 +8,7 @@ Co-authored-by: MrHua269 Cache minecart vehicle collide results to prevent lag causing by massive stacked minecart diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index c9b7b12470afac45b0132858407aacb8f91aac68..615897305063c2daf42ec1ea3a7deb853b2852f7 100644 +index c9b7b12470afac45b0132858407aacb8f91aac68..3e26c1720b56aef9debba00295cc92a39840efc8 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java @@ -5,6 +5,8 @@ import com.google.common.collect.ImmutableMap; @@ -29,7 +29,7 @@ index c9b7b12470afac45b0132858407aacb8f91aac68..615897305063c2daf42ec1ea3a7deb85 + private List lastCollideCache2 = new ArrayList<>(); + + private void checkAndUpdateCache() { -+ if (this.getId() + this.tickCount % 5 == 0) { ++ if (this.getId() + this.tickCount % 10 == 0) { + if (this.getMinecartType() == AbstractMinecart.Type.RIDEABLE && this.getDeltaMovement().horizontalDistanceSqr() > 0.01D) { + this.lastCollideCache = this.level().getEntities((Entity) this, this.getBoundingBox().inflate(0.20000000298023224D, 0.0D, 0.20000000298023224D), EntitySelector.pushableBy(this)); + } else {