diff --git a/gradle.properties b/gradle.properties index bc39dcdf4..cbc9baf3a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.purpurmc.purpur version = 1.19-R0.1-SNAPSHOT -paperCommit = ee7d16111dea48b3e244343031649639a8e218a5 +paperCommit = 55201f00e8926d17b23fdacdf4d13a12610a3da1 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 28c7a9325..ed1d3aa14 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -2395,10 +2395,10 @@ index 59acbf6249f8f5285504c0ddea448a3433d1d68d..378cc1f9e19eb9b18037ab8af92f6589 private void getFullChunk(long pos, Consumer chunkConsumer) { diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 946cde51334568c62d9546254a8d4e5d46d95324..9539470e037ec6461413455ded1dd69074051ba2 100644 +index 3b144c820531122eb37d41be06c182b5f5dc0724..1eb912ad97f9663bf6bd336ad739f2552b0a5c9b 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -159,6 +159,7 @@ public class ServerEntity { +@@ -165,6 +165,7 @@ public class ServerEntity { boolean flag4 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L; if (!flag4 && this.teleportDelay <= 400 && !this.wasRiding && this.wasOnGround == this.entity.isOnGround() && !(io.papermc.paper.configuration.GlobalConfiguration.get().collisions.sendFullPosForHardCollidingEntities && this.entity.hardCollides())) { // Paper - send full pos for hard colliding entities to prevent collision problems due to desync @@ -2406,7 +2406,7 @@ index 946cde51334568c62d9546254a8d4e5d46d95324..9539470e037ec6461413455ded1dd690 if ((!flag2 || !flag3) && !(this.entity instanceof AbstractArrow)) { if (flag2) { packet1 = new ClientboundMoveEntityPacket.Pos(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), this.entity.isOnGround()); -@@ -168,6 +169,7 @@ public class ServerEntity { +@@ -174,6 +175,7 @@ public class ServerEntity { } else { packet1 = new ClientboundMoveEntityPacket.PosRot(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), (byte) i, (byte) j, this.entity.isOnGround()); } @@ -2472,7 +2472,7 @@ index aaa7ad2a14389dc0dbc0d0fa3fb5ea16ec4172f6..f492833ff7b7162638777f0777366cfc this.getRandomBlockPosition(j, 0, k, 15, blockposition); int normalY = chunk.getHeight(Heightmap.Types.MOTION_BLOCKING, blockposition.getX() & 15, blockposition.getZ() & 15) + 1; diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 03507b5ac5908962e9ebc4b98f53f23110573baa..01ecd6548c57bd24b3c3e1ad0640062f4b781bbe 100644 +index 0f2279d5fbe1e3457137839ff297f956be5e4cab..e1e1118dbbdb6dc032eda50dfdc953a80c2aca46 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1149,6 +1149,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -2596,7 +2596,7 @@ index 540bc9500c35c0db719b00aa26f6fb3a1b08ed9f..806cb760822a99316b08ad95ff8922df int LARGE_MAX_STACK_SIZE = 64; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ade1e37d20ef3021f73da6d1905cea76d3ff0aa7..fa3263bffcfe042c2f210f85c6868fff08132a7c 100644 +index 89cecb3603b41ae22efc54a9f2858a6f60e52148..4d57f2b8d08a83e404f0b81321b18c83a47ddb4e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -286,7 +286,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 15f57d07c..c0ec214b9 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -66,7 +66,7 @@ index 070b7d49b46e6e23b4baf33ac045582194579137..f4b33e5788665eefef35e701ed99d58d 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 cf36af454fb82ecd34af2c468a209f6f3fd0e067..3b7427d6d59006c84fbd8d16d4446e7670761e66 100644 +index 82f82de601565c2f760abd86a15424a67bf81e71..af72fade3d009c8b7f6ac587cd8eb0cb4aca8da3 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2660,6 +2660,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -79,7 +79,7 @@ index cf36af454fb82ecd34af2c468a209f6f3fd0e067..3b7427d6d59006c84fbd8d16d4446e76 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)) { ServerGamePacketListenerImpl.this.send(new ClientboundAddEntityPacket(entity)); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2ec7eed33a322254ea9382554e0b7bfc558e0960..dd4f434d26814f46285f2bd23f8a4b53c89872d7 100644 +index cba8aec79f7f1664a1410646c733f57f3c39ca5e..e2b2be41e9981196650096dd9d468618a96cb28e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -356,7 +356,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -119,7 +119,7 @@ index 2ec7eed33a322254ea9382554e0b7bfc558e0960..dd4f434d26814f46285f2bd23f8a4b53 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4502,4 +4516,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4512,4 +4526,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return ((ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end diff --git a/patches/server/0021-Alternative-Keepalive-Handling.patch b/patches/server/0021-Alternative-Keepalive-Handling.patch index ae0b96c0f..a161b0eb5 100644 --- a/patches/server/0021-Alternative-Keepalive-Handling.patch +++ b/patches/server/0021-Alternative-Keepalive-Handling.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Alternative Keepalive Handling diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 487ce0230306fbfc78bc604e0a6ce202df628382..1f7dbc3c773179a21f8b11c455ef9f4fa1971048 100644 +index 6f5fb1ac8440f2174ce52f318b7d2345ce82ace6..bced7bd90f8bc4c7655b5f1fc2168486ee45352a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -245,6 +245,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -52,7 +52,7 @@ index 487ce0230306fbfc78bc604e0a6ce202df628382..1f7dbc3c773179a21f8b11c455ef9f4f + } + } else + // Purpur end - //PlayerConnectionUtils.ensureMainThread(packetplayinkeepalive, this, this.player.getWorldServer()); // CraftBukkit // Paper - This shouldn't be on the main thread + //PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel()); // CraftBukkit // Paper - This shouldn't be on the main thread if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int) (Util.getMillis() - this.keepAliveTime); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/server/0061-Add-canSaveToDisk-to-Entity.patch b/patches/server/0061-Add-canSaveToDisk-to-Entity.patch index 43280b41e..5e0eb2c99 100644 --- a/patches/server/0061-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0061-Add-canSaveToDisk-to-Entity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add canSaveToDisk to Entity diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2619685affa6a3fa8fee4fdc3047e44ab7e7042e..6b92be36b86ecc5a82b4ca70ba187c53ec102adc 100644 +index d032cd8054bcba9fd29ea62b234e6453e0a44adf..c5898834338046237d2690fd82443ac6844055a2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4557,5 +4557,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4567,5 +4567,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public boolean processClick(InteractionHand hand) { return false; } diff --git a/patches/server/0183-API-for-any-mob-to-burn-daylight.patch b/patches/server/0183-API-for-any-mob-to-burn-daylight.patch index f162e5813..fe8acd5f7 100644 --- a/patches/server/0183-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0183-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c988fc2d7fbd8db60ddcde8532dbdf3feda5bd48..e41a77c86d71f31ff36595b1daa2da1cd94e3a99 100644 +index 9a43dd908114f0bb087bf9a2230e4148390df6c0..a28365f60d379cc59edcbbd2c21cf43042bc9659 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4570,5 +4570,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4580,5 +4580,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public boolean canSaveToDisk() { return true; }