diff --git a/gradle.properties b/gradle.properties index d1a7d59ff..c205e979f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.1-R0.1-SNAPSHOT mcVersion = 1.20.1 -paperCommit = b1696788d61ddc338bd2e61fac3b43ff60c432e1 +paperCommit = e8bec64217064476784a5c65a5060cfc0145fa98 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 deea2a29c..d2c121151 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1666,9 +1666,18 @@ index 488a253e218409b5f0b4a872cee0928578fa7582..6e3b2863f04419ee6914ac3fd4f12a4f 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 6670e657e08e130f7e0368f418379fd1ece00cdf..e921b6db8905a8676a45e36564d877075afb081f 100644 +index 6670e657e08e130f7e0368f418379fd1ece00cdf..4c5f90fdb534d8aeb7dd077a13b1ebed016e4947 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java +@@ -108,7 +108,7 @@ public class ServerEntity { + + Entity entity = this.entity; + +- if (entity instanceof ItemFrame) { ++ if (!this.trackedPlayers.isEmpty() && entity instanceof ItemFrame) { // Paper - Only tick item frames if players can see it + ItemFrame entityitemframe = (ItemFrame) entity; + + if (true || this.tickCount % 10 == 0) { // CraftBukkit - Moved below, should always enter this block @@ -180,7 +180,8 @@ public class ServerEntity { long i1 = this.positionCodec.encodeZ(vec3d); boolean flag6 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L; @@ -1752,6 +1761,42 @@ index 18aac3da3c88f33b1a71a5920a8daa27e9723913..eac31c3fcc9161711328588ac852fcae // Paper start - optimise chunk ticking 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/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java +index 9d46536f80b5b3e6641fd377c02166a431edfd77..8a1fde50b82a8b0718ae04124c2611b7cff4bcd6 100644 +--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java ++++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +@@ -1245,6 +1245,7 @@ public class ServerPlayer extends Player { + this.setServerLevel(worldserver); + this.connection.teleport(exit); // CraftBukkit - use internal teleport without event + this.connection.resetPosition(); ++ this.mainSupportingBlockPos = Optional.empty(); // Pufferfish - Fix paper 9372 + worldserver.addDuringPortalTeleport(this); + worldserver1.getProfiler().pop(); + this.triggerDimensionChangeTriggers(worldserver1); +@@ -1907,6 +1908,7 @@ public class ServerPlayer extends Player { + public void moveTo(double x, double y, double z) { + super.moveTo(x, y, z); + this.connection.resetPosition(); ++ this.mainSupportingBlockPos = Optional.empty(); // Pufferfish - Fix paper 9372 + } + + @Override +@@ -2143,6 +2145,7 @@ public class ServerPlayer extends Player { + + this.connection.send(new ClientboundSetCameraPacket(this.camera)); + this.connection.resetPosition(); ++ this.mainSupportingBlockPos = Optional.empty(); // Pufferfish - Fix paper 9372 + } + } + +@@ -2595,6 +2598,7 @@ public class ServerPlayer extends Player { + public void forceSetPositionRotation(double x, double y, double z, float yaw, float pitch) { + this.moveTo(x, y, z, yaw, pitch); + this.connection.resetPosition(); ++ this.mainSupportingBlockPos = Optional.empty(); // Pufferfish - Fix paper 9372 + } + + @Override diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java index 2a609e43370e68943c580083f7f7d8c9b0972955..309a3e42ec48a1a7684b62ea372bfa984df6a0fb 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1885,7 +1930,7 @@ index 04b1531572e8fff1e46fe1c94e7fc863841e0f66..47ddc42f2b63d9d3fae5ae6ea93d4183 int LARGE_MAX_STACK_SIZE = 64; int DEFAULT_DISTANCE_LIMIT = 8; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 513c34aa02d63f7e3c178eade818e156af4541db..641c4af6bd13c87c26f7932dd5f6f4d2ee20e3c0 100644 +index 513c34aa02d63f7e3c178eade818e156af4541db..1aa184cf7a97364d7b9e4d628c0a6c1dc769ba6e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -1958,19 +2003,19 @@ index 513c34aa02d63f7e3c178eade818e156af4541db..641c4af6bd13c87c26f7932dd5f6f4d2 return chunkMap.playerEntityTrackerTrackMaps[type.ordinal()].getObjectsInRange(MCUtil.getCoordinateKey(this)); } -@@ -810,6 +838,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - // CraftBukkit end +@@ -797,6 +825,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { + } - public void baseTick() { + public void tick() { + // Pufferfish start - entity TTL + if (type != EntityType.PLAYER && type.ttl >= 0 && this.tickCount >= type.ttl) { -+ remove(RemovalReason.DISCARDED); ++ discard(); + return; + } + // Pufferfish end - entity TTL - this.level().getProfiler().push("entityBaseTick"); - if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking - this.feetBlockState = null; + this.baseTick(); + } + @@ -4306,16 +4340,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } diff --git a/patches/server/0007-Component-related-conveniences.patch b/patches/server/0007-Component-related-conveniences.patch index 3237fd40a..10d963ee0 100644 --- a/patches/server/0007-Component-related-conveniences.patch +++ b/patches/server/0007-Component-related-conveniences.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 16b742fdaf5524b22cedb4d5ba047559e3ac8371..41698264b3155f20f7a7d473a43aa2dab7ca61bb 100644 +index d4e03454b07550621dd1a56e4eaa40f3b49d8c2f..a0577dcae567230c12b52ed02072745513c7a4d5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1774,6 +1774,26 @@ public class ServerPlayer extends Player { +@@ -1775,6 +1775,26 @@ public class ServerPlayer extends Player { this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -81,7 +81,7 @@ index 25a5a3b949a0eb632611355e74ccd4865be108ca..14fcfd7c1d3a62833978e163f4e0d6f9 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 641c4af6bd13c87c26f7932dd5f6f4d2ee20e3c0..4096eb61cbc70679ba15215c725b3262f428c03d 100644 +index 1aa184cf7a97364d7b9e4d628c0a6c1dc769ba6e..6f743a7dcb36eb8c638cd82f1e52c10215346b60 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4058,6 +4058,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index 5755b4640..8f72933e3 100644 --- a/patches/server/0012-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -6,10 +6,10 @@ 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 77c38ea427dac0176941f8bc26ebe540c0dd4c02..e528d3bb75b892e1674e4c282b91a28128a387a7 100644 +index 23235b98907ff26afb22d37326b072ba56728ddd..871c1c92cbabc6ecb432b5d1da441e02e08cd35a 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 { +@@ -2118,8 +2118,68 @@ public class ServerPlayer extends Player { public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); diff --git a/patches/server/0018-Player-invulnerabilities.patch b/patches/server/0018-Player-invulnerabilities.patch index c45ad30a9..4da0c65c5 100644 --- a/patches/server/0018-Player-invulnerabilities.patch +++ b/patches/server/0018-Player-invulnerabilities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Player invulnerabilities diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e528d3bb75b892e1674e4c282b91a28128a387a7..6838e85030667776c6b0534d0e92c9fbd68840da 100644 +index 871c1c92cbabc6ecb432b5d1da441e02e08cd35a..1d205ddc1c880f18534ccfd3699060a885ed9fd8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -278,6 +278,7 @@ public class ServerPlayer extends Player { @@ -46,7 +46,7 @@ index e528d3bb75b892e1674e4c282b91a28128a387a7..6838e85030667776c6b0534d0e92c9fb return false; } else { Entity entity = source.getEntity(); -@@ -1285,6 +1293,7 @@ public class ServerPlayer extends Player { +@@ -1286,6 +1294,7 @@ public class ServerPlayer extends Player { } // Paper end @@ -54,7 +54,7 @@ index e528d3bb75b892e1674e4c282b91a28128a387a7..6838e85030667776c6b0534d0e92c9fb return this; } } -@@ -2102,6 +2111,7 @@ public class ServerPlayer extends Player { +@@ -2104,6 +2113,7 @@ public class ServerPlayer extends Player { } public void sendTexturePack(String url, String hash, boolean required, @Nullable Component resourcePackPrompt) { @@ -62,7 +62,7 @@ index e528d3bb75b892e1674e4c282b91a28128a387a7..6838e85030667776c6b0534d0e92c9fb this.connection.send(new ClientboundResourcePackPacket(url, hash, required, resourcePackPrompt)); } -@@ -2689,9 +2699,17 @@ public class ServerPlayer extends Player { +@@ -2693,9 +2703,17 @@ public class ServerPlayer extends Player { @Override public boolean isImmobile() { diff --git a/patches/server/0074-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0074-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 633c6df61..a076623ee 100644 --- a/patches/server/0074-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0074-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index fa7c220057be4d233752d9022a934d03e5f3df59..421aaf1fd85da9807bfe1b193bc13c5f3de2f474 100644 +index 373f3f7643bd3ee49f3b10f9e963b39b28c39894..91df087b49d39b318af85dcbcf2db600e5c12222 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2758,4 +2758,26 @@ public class ServerPlayer extends Player { +@@ -2762,4 +2762,26 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/patches/server/0119-Implement-TPSBar.patch b/patches/server/0119-Implement-TPSBar.patch index 460801e4a..6b249f590 100644 --- a/patches/server/0119-Implement-TPSBar.patch +++ b/patches/server/0119-Implement-TPSBar.patch @@ -17,7 +17,7 @@ index e5b1b6ad32c48a4ba13b4930954fad18669677ad..4e721dfca7559620d8ce65a6703f2089 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a8ca0d0b4bb6474f20c448439f517e280a480f50..f69ea0d2137419079d8ee59e009fcebab8f3d7e6 100644 +index 33db30876d45adabec7e3535ddb688659eee8d6e..a507c1fe296039bcf07e8fd564c9a4ec9ffb0c25 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1023,6 +1023,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop