diff --git a/gradle.properties b/gradle.properties index d90308912..d54587e35 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 = 0c8882f7f9a39cadb6e3ca8b94bed7ab9b41c710 +paperCommit = 0c0a480d82132dca0e4bb7a2275c9363430e544b 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 7bc152f7e..176573ded 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -616,10 +616,10 @@ index 0000000000000000000000000000000000000000..020368da69b9a492155f6de6297f7473 +} diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..95d1a8a5b349f7849c040026bfa3469d03d92bfd +index 0000000000000000000000000000000000000000..3d4bb28fe686a9ad2e4c0f75f21e6289c2ea5cf9 --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -@@ -0,0 +1,295 @@ +@@ -0,0 +1,296 @@ +package gg.pufferfish.pufferfish; + +import gg.pufferfish.pufferfish.simd.SIMDDetection; @@ -904,6 +904,7 @@ index 0000000000000000000000000000000000000000..95d1a8a5b349f7849c040026bfa3469d + "the ender dragon whenever a player places an end crystal."); + } + ++ + public static boolean disableMethodProfiler; + public static boolean disableOutOfOrderChat; + public static boolean suppressNullIdDisconnections; @@ -1572,19 +1573,19 @@ index 65d947df910d60f478e7a449eb161e5105e2c0c9..3770ced0b227f7eea1f04d6afd5c1433 return this.scaledRange(i); } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index acbcdc8cb1523044b1657e03a141fae6389a3686..ef6c98c7949d2feb3ec2a0b2be161978989b6771 100644 +index acbcdc8cb1523044b1657e03a141fae6389a3686..fe1a9c646b09d11e7fa2186afbeb70b680ad2b57 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -77,6 +77,9 @@ public class ServerChunkCache extends ChunkSource { +@@ -76,6 +76,9 @@ public class ServerChunkCache extends ChunkSource { + final it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap loadedChunkMap = new it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap<>(8192, 0.5f); private final LevelChunk[] lastLoadedChunks = new LevelChunk[4 * 4]; - ++ + public boolean firstRunSpawnCounts = true; // Pufferfish + public final java.util.concurrent.atomic.AtomicBoolean _pufferfish_spawnCountsReady = new java.util.concurrent.atomic.AtomicBoolean(false); // Pufferfish - optimize countmobs -+ + private static int getChunkCacheKey(int x, int z) { return x & 3 | ((z & 3) << 2); - } @@ -553,6 +556,7 @@ public class ServerChunkCache extends ChunkSource { ProfilerFiller gameprofilerfiller = this.level.getProfiler(); @@ -1622,9 +1623,9 @@ index acbcdc8cb1523044b1657e03a141fae6389a3686..ef6c98c7949d2feb3ec2a0b2be161978 } - player.mobBackoffCounts[ii] = newBackoff; + // Paper end - per player mob spawning backoff -+ lastSpawnState = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, null, true); } - // Paper end - per player mob spawning backoff ++ lastSpawnState = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, null, true); } - spawnercreature_d = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, null, true); + // Pufferfish end @@ -1654,15 +1655,25 @@ index acbcdc8cb1523044b1657e03a141fae6389a3686..ef6c98c7949d2feb3ec2a0b2be161978 } if (true || this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { // Paper - the chunk is known ticking -@@ -685,6 +696,30 @@ public class ServerChunkCache extends ChunkSource { +@@ -685,6 +696,40 @@ public class ServerChunkCache extends ChunkSource { } // Paper end - controlled flush for entity tracker packets } -+ ++ + // Pufferfish start - optimize mob spawning + if (gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning) { + for (ServerPlayer player : this.level.players) { -+ Arrays.fill(player.mobCounts, 0); ++ // Paper start - per player mob spawning backoff ++ for (int ii = 0; ii < ServerPlayer.MOBCATEGORY_TOTAL_ENUMS; ii++) { ++ player.mobCounts[ii] = 0; ++ ++ int newBackoff = player.mobBackoffCounts[ii] - 1; // TODO make configurable bleed // TODO use nonlinear algorithm? ++ if (newBackoff < 0) { ++ newBackoff = 0; ++ } ++ player.mobBackoffCounts[ii] = newBackoff; ++ } ++ // Paper end - per player mob spawning backoff + } + if (firstRunSpawnCounts) { + firstRunSpawnCounts = false; @@ -1772,42 +1783,6 @@ 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 161c40692e8d469fad4169908b9353be0f85d0d8..271de9d39dd765e4b4153670daa5cf6a4df22456 100644 ---- a/src/main/java/net/minecraft/server/level/ServerPlayer.java -+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1246,6 +1246,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); -@@ -1908,6 +1909,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 -@@ -2144,6 +2146,7 @@ public class ServerPlayer extends Player { - - this.connection.send(new ClientboundSetCameraPacket(this.camera)); - this.connection.resetPosition(); -+ this.mainSupportingBlockPos = Optional.empty(); // Pufferfish - Fix paper 9372 - } - } - -@@ -2596,6 +2599,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 3c0651fa5a5db880202c9a3805a6455269c5f16d..776c7df81d2b71a5610fe90475f4e8044850beab 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2746,7 +2721,7 @@ index 272095d7a09ab41227d741172735f66fd2798ce1..47692d6db44b58bb724c87128279bd0d } diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -index ca1edc083847b47bb450b291723aca778a5912dc..dc695c518beed770e787d61bcda7e1cd28bc43eb 100644 +index 5a19875cbc603acea95193d969d2e1dc1e0bfd78..3688e9f8c6c6d1239095e3a87060ccca90386d0c 100644 --- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java +++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java @@ -55,7 +55,7 @@ public class EndCrystalItem extends Item { @@ -2755,7 +2730,7 @@ index ca1edc083847b47bb450b291723aca778a5912dc..dc695c518beed770e787d61bcda7e1cd - if (enderdragonbattle != null) { + if (enderdragonbattle != null && gg.pufferfish.pufferfish.PufferfishConfig.allowEndCrystalRespawn) { // Pufferfish - enderdragonbattle.tryRespawn(); + enderdragonbattle.tryRespawn(aboveBlockPosition); // Paper - pass placed end crystal position to pre-check proximity to portal } } diff --git a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java diff --git a/patches/server/0007-Component-related-conveniences.patch b/patches/server/0007-Component-related-conveniences.patch index dc1ccbe05..a2f21c219 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 5787e59a7ce1aedbe655928fa2e283823a450343..bf88c86deaf677a10f2f8b67fe48a199e625fea9 100644 +index 0c3da427151d9a2ce1ca69acff283a153bd758f7..944866d42dbb4732f669c8c697934fdf0c212978 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1776,6 +1776,26 @@ public class ServerPlayer extends Player { +@@ -1780,6 +1780,26 @@ public class ServerPlayer extends Player { this.lastSentExp = -1; // CraftBukkit - Added to reset } diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index 8f682c13a..e85d268a3 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 3aff5f410220c2f3dee7acfa4339b9b5d0a5e7dd..262cec70db50c8692d518f0f87eac39d7cb45b6d 100644 +index 33d13eaa0edef9e1e6652affbc8e04fa51c31df1..f9571a379214d24a24e0b6b6277636666c1661f1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2119,8 +2119,68 @@ public class ServerPlayer extends Player { +@@ -2122,8 +2122,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 264908477..df1e66750 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 262cec70db50c8692d518f0f87eac39d7cb45b6d..0b7ee1cbe2917dc81d6a740ec09e7aee9ff598cf 100644 +index f9571a379214d24a24e0b6b6277636666c1661f1..ffc10f3cb841eafbf90b7f26b485991ced31d4d1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -279,6 +279,7 @@ public class ServerPlayer extends Player { @@ -46,7 +46,7 @@ index 262cec70db50c8692d518f0f87eac39d7cb45b6d..0b7ee1cbe2917dc81d6a740ec09e7aee return false; } else { Entity entity = source.getEntity(); -@@ -1287,6 +1295,7 @@ public class ServerPlayer extends Player { +@@ -1286,6 +1294,7 @@ public class ServerPlayer extends Player { } // Paper end @@ -54,7 +54,7 @@ index 262cec70db50c8692d518f0f87eac39d7cb45b6d..0b7ee1cbe2917dc81d6a740ec09e7aee return this; } } -@@ -2105,6 +2114,7 @@ public class ServerPlayer extends Player { +@@ -2108,6 +2117,7 @@ public class ServerPlayer extends Player { } public void sendTexturePack(String url, String hash, boolean required, @Nullable Component resourcePackPrompt) { @@ -62,7 +62,7 @@ index 262cec70db50c8692d518f0f87eac39d7cb45b6d..0b7ee1cbe2917dc81d6a740ec09e7aee this.connection.send(new ClientboundResourcePackPacket(url, hash, required, resourcePackPrompt)); } -@@ -2694,9 +2704,17 @@ public class ServerPlayer extends Player { +@@ -2695,9 +2705,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 ecbe6f6d9..8917f03b5 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 e5291d794f2abb719a574afef2b27d4df05d881f..8ed1a18cd1b33e1776dbf3b2294ab633f243daae 100644 +index 03b19d56e4f75d71f592f400f59c9becd39c4d4f..459f8bcf13ed759c40eff1ade5d9011ede8547c3 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2763,4 +2763,26 @@ public class ServerPlayer extends Player { +@@ -2764,4 +2764,26 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/patches/server/0118-Implement-TPSBar.patch b/patches/server/0118-Implement-TPSBar.patch index cd6da7ad4..c994c098e 100644 --- a/patches/server/0118-Implement-TPSBar.patch +++ b/patches/server/0118-Implement-TPSBar.patch @@ -41,7 +41,7 @@ index cf7c7b3cd4081e1be059647dca237ffd72c374df..012c990efb2647b0a3e983b23fed98c6 } } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 8419775b8c2c6c8d246d0011d81f540cd09cb403..de7c199c0df87a1c1a0157328fa52351f74a0d3d 100644 +index b72790d23165073cd7529262577cd89ce9e518dd..2e04d1b93dc0ca8b83697d5743250c47c98b81f5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -280,6 +280,7 @@ public class ServerPlayer extends Player { @@ -68,7 +68,7 @@ index 8419775b8c2c6c8d246d0011d81f540cd09cb403..de7c199c0df87a1c1a0157328fa52351 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2793,5 +2796,13 @@ public class ServerPlayer extends Player { +@@ -2794,5 +2797,13 @@ public class ServerPlayer extends Player { this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); } } diff --git a/patches/server/0136-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0136-Config-to-ignore-nearby-mobs-when-sleeping.patch index cfbad9547..28d309f07 100644 --- a/patches/server/0136-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0136-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 540c7b650deefa4a1a0e4f86650d9f3c56091566..ea7a533546c53539355ea1501b027399e6ba1bd8 100644 +index 08532053face8fcba4a808830d618d2e5f0da8ee..fe1591b8ae12eaffdd44b23c4c55f580512f293e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1431,7 +1431,7 @@ public class ServerPlayer extends Player { +@@ -1430,7 +1430,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); diff --git a/patches/server/0193-Customizable-sleeping-actionbar-messages.patch b/patches/server/0193-Customizable-sleeping-actionbar-messages.patch index 442414f09..b0b4fd253 100644 --- a/patches/server/0193-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0193-Customizable-sleeping-actionbar-messages.patch @@ -38,10 +38,10 @@ index fea5481c98e4cbcaecb9f4adef35b7340ad0c9b8..df8efd93ad6ab30974e3025187cd234b } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 784634596696521cfbd58e85392183dd96b843b0..b724a6fd90e6774db1f64090dc4854b6de4a9f44 100644 +index b760d9352d85cd5494009a2388a425b85f8daec4..3edbc1da87608090aa3e764736716cebbfe0c3dd 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1472,7 +1472,19 @@ public class ServerPlayer extends Player { +@@ -1471,7 +1471,19 @@ public class ServerPlayer extends Player { }); if (!this.serverLevel().canSleepThroughNights()) { @@ -63,7 +63,7 @@ index 784634596696521cfbd58e85392183dd96b843b0..b724a6fd90e6774db1f64090dc4854b6 ((ServerLevel) this.level()).updateSleepingPlayerList(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f5a5cc0f954f33f75b542c33d8385076a8aad163..fe0f582291d61b1fd6f1916a39d62bfaf5abfa49 100644 +index c33c31956de911ff03f4782ab811a84ba18241c9..9a9c4826dab3de9e63ba984f8b2e1b3b7aa5a98b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -186,6 +186,9 @@ public class PurpurConfig { diff --git a/patches/server/0198-Add-compass-command.patch b/patches/server/0198-Add-compass-command.patch index 7ded39319..1bb3742d8 100644 --- a/patches/server/0198-Add-compass-command.patch +++ b/patches/server/0198-Add-compass-command.patch @@ -17,7 +17,7 @@ index 7aae9e3c60ba15b8dcd8174a4d70866edebb6cca..5f6cc8b16af6dce3b74f0c2c662b0ecf if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index b724a6fd90e6774db1f64090dc4854b6de4a9f44..6045da26c79bbb1c96319b6582bacef836024dec 100644 +index 3edbc1da87608090aa3e764736716cebbfe0c3dd..cc313235863910b4978f96d594abff0a20c13e18 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -281,6 +281,7 @@ public class ServerPlayer extends Player { @@ -44,7 +44,7 @@ index b724a6fd90e6774db1f64090dc4854b6de4a9f44..6045da26c79bbb1c96319b6582bacef8 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2818,5 +2821,13 @@ public class ServerPlayer extends Player { +@@ -2819,5 +2822,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } @@ -59,7 +59,7 @@ index b724a6fd90e6774db1f64090dc4854b6de4a9f44..6045da26c79bbb1c96319b6582bacef8 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index fe0f582291d61b1fd6f1916a39d62bfaf5abfa49..853cf54077d760f1118ce494b401d286d789e5fc 100644 +index 9a9c4826dab3de9e63ba984f8b2e1b3b7aa5a98b..62fa79eccbb6f679c0460a6dfd457c405b3a8e67 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -255,6 +255,11 @@ public class PurpurConfig { diff --git a/patches/server/0225-Signs-allow-color-codes.patch b/patches/server/0225-Signs-allow-color-codes.patch index a6f78e7cb..7729e5626 100644 --- a/patches/server/0225-Signs-allow-color-codes.patch +++ b/patches/server/0225-Signs-allow-color-codes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 6045da26c79bbb1c96319b6582bacef836024dec..81f6cbff68fb1c0be0a702ac09004275316256dc 100644 +index cc313235863910b4978f96d594abff0a20c13e18..01f001c39581c4af5765548e221e254465fe0195 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1584,6 +1584,7 @@ public class ServerPlayer extends Player { +@@ -1583,6 +1583,7 @@ public class ServerPlayer extends Player { @Override public void openTextEdit(SignBlockEntity sign, boolean front) { diff --git a/patches/server/0269-Remove-Mojang-Profiler.patch b/patches/server/0269-Remove-Mojang-Profiler.patch index 9dab17e2a..013e2c596 100644 --- a/patches/server/0269-Remove-Mojang-Profiler.patch +++ b/patches/server/0269-Remove-Mojang-Profiler.patch @@ -418,7 +418,7 @@ index f4e1fc878ecf72dafade1c72869c9656a0c5b8aa..319c469c20f3cb4f6d61425bfa6d98b5 public boolean hasWork() { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 2b13f177d154ff322837e055e15fcb55941a2306..ed64df7ccfc7af16af9102b01519b3c01551bd8e 100644 +index 14613af193b178133fd688f26a766b36fa969590..2d5b0f293bb30243e774bfb62b8100c01e7eb383 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -280,16 +280,16 @@ public class ServerChunkCache extends ChunkSource { @@ -546,7 +546,7 @@ index 2b13f177d154ff322837e055e15fcb55941a2306..ed64df7ccfc7af16af9102b01519b3c0 // Paper end - use set of chunks requiring updates, rather than iterating every single one loaded // Paper start - controlled flush for entity tracker packets List disabledFlushes = new java.util.ArrayList<>(this.level.players.size()); -@@ -890,7 +890,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -900,7 +900,7 @@ public class ServerChunkCache extends ChunkSource { @Override protected void doRunTask(Runnable task) { @@ -768,7 +768,7 @@ index 5b7507db055d7be59b369f66e659e128c9c7e00b..221d1d0e1b4b46de6ebca5faac09bbda while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 3a51e711eb66fa1ac48a0c0d4f237e24af5f5e69..3d128b69ab5cc2ec75819ca8c88c5551d07e78f6 100644 +index 01f001c39581c4af5765548e221e254465fe0195..2f013c3365d065325d645d43f7c5137f942b06df 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1241,7 +1241,7 @@ public class ServerPlayer extends Player { @@ -791,9 +791,9 @@ index 3a51e711eb66fa1ac48a0c0d4f237e24af5f5e69..3d128b69ab5cc2ec75819ca8c88c5551 if (true) { // CraftBukkit this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds -@@ -1284,7 +1284,7 @@ public class ServerPlayer extends Player { +@@ -1283,7 +1283,7 @@ public class ServerPlayer extends Player { + 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(); + //worldserver1.getProfiler().pop(); // Purpur @@ -1598,10 +1598,10 @@ index 0f8af63a88e425e5e66f68133b6c604caefc6977..31cfc2c8c5188a266c9e9993e5cf322e } diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index 3ab900c53469327b8d686da81ed5b4aaaddb7440..14df8a4e0c1a1dcfbbd2f4fdfd865bd77bb02325 100644 +index fbc08af025e1f53696093c459656a753f8f89ebe..552777d7ef6a1190a3b84bdf2f130f735c61d275 100644 --- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -@@ -519,11 +519,11 @@ public class Sniffer extends Animal { +@@ -520,11 +520,11 @@ public class Sniffer extends Animal { @Override protected void customServerAiStep() { diff --git a/patches/server/0278-Implement-ram-and-rambar-commands.patch b/patches/server/0278-Implement-ram-and-rambar-commands.patch index bebd9d0d4..a2e8c3bcf 100644 --- a/patches/server/0278-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0278-Implement-ram-and-rambar-commands.patch @@ -18,7 +18,7 @@ index 52b06c34d9d3ffb8844556e7b0eaed5a7f03da0c..5c0085589b08f199c75ceeab8d0cf25e if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 4942f4b1a54f6583a9d627a0b0513d36c6f81a7a..9c729910a39b010bf2123517c0bffc5a8993e6d1 100644 +index 2f013c3365d065325d645d43f7c5137f942b06df..0249eeb3937cf48cea13846a7e39b248947e21a4 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -280,6 +280,7 @@ public class ServerPlayer extends Player { @@ -45,7 +45,7 @@ index 4942f4b1a54f6583a9d627a0b0513d36c6f81a7a..9c729910a39b010bf2123517c0bffc5a nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -2815,6 +2818,14 @@ public class ServerPlayer extends Player { +@@ -2816,6 +2819,14 @@ public class ServerPlayer extends Player { } } @@ -61,7 +61,7 @@ index 4942f4b1a54f6583a9d627a0b0513d36c6f81a7a..9c729910a39b010bf2123517c0bffc5a return this.tpsBar; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 6191efac8add7d45747036e07c7e895a70f6ff7b..77d927a28eb01aae3a49be3e7b7a5fe219b7739d 100644 +index ed9b2f0b55229848894d9d6b401d050cb031b893..568bb53e91dda4804cd328a81ba12ce735c52603 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -182,6 +182,8 @@ public class PurpurConfig { diff --git a/patches/server/0307-place-end-crystal-on-any-block.patch b/patches/server/0307-place-end-crystal-on-any-block.patch index 4f6079a7a..40cf9aa56 100644 --- a/patches/server/0307-place-end-crystal-on-any-block.patch +++ b/patches/server/0307-place-end-crystal-on-any-block.patch @@ -5,7 +5,7 @@ Subject: [PATCH] place end crystal on any block diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -index dc695c518beed770e787d61bcda7e1cd28bc43eb..528f836dfc220dc4b929c321dafc6a78b54d899b 100644 +index 3688e9f8c6c6d1239095e3a87060ccca90386d0c..34254eec36d34ae343733fa1abbaaba60be41a3b 100644 --- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java +++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java @@ -26,7 +26,7 @@ public class EndCrystalItem extends Item { @@ -16,7 +16,7 @@ index dc695c518beed770e787d61bcda7e1cd28bc43eb..528f836dfc220dc4b929c321dafc6a78 + if (!world.purpurConfig.endCrystalPlaceAnywhere && !iblockdata.is(Blocks.OBSIDIAN) && !iblockdata.is(Blocks.BEDROCK)) { return InteractionResult.FAIL; } else { - BlockPos blockposition1 = blockposition.above(); + BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index ec6c29638935835d590823c5cc35141a7f4d32f2..078102e636803f38facc049952813ff2f8b63594 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java