From 030cb9e4d31d47edd19ea690af60af1fe04e3db4 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 27 Jan 2024 21:56:50 -0800 Subject: [PATCH] Updated Upstream (Paper & Pufferfish) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@7f7d05a [ci skip] Remove IRC link from the README (#10194) PaperMC/Paper@ed130f1 [ci skip] clarify javadocs for Block#getDrops (#10153) PaperMC/Paper@4643b0d Shulker duplicate event (#10135) PaperMC/Paper@b333831 Make spawn egg colours visible (#10158) PaperMC/Paper@0cc3a7e Disable memory reserve allocating (#10180) PaperMC/Paper@3841722 Properly check if a loot table exists (#10190) PaperMC/Paper@b3c8108 [ci skip] Fix incorrect documentation for BlockDropItemEvent (#10175) Pufferfish Changes: pufferfish-gg/Pufferfish@3fc02bb Updated Upstream (Paper) pufferfish-gg/Pufferfish@f5fa99a Oops --- gradle.properties | 2 +- .../0001-Pufferfish-Server-Changes.patch | 88 +++++++++---------- patches/server/0002-Rebrand.patch | 16 ++-- .../server/0003-Fix-pufferfish-issues.patch | 10 ++- patches/server/0004-Purpur-config-files.patch | 6 +- .../0007-Component-related-conveniences.patch | 4 +- patches/server/0008-Ridables.patch | 16 ++-- .../server/0013-Bring-back-server-name.patch | 4 +- .../0014-Configurable-server-mod-name.patch | 8 +- patches/server/0016-Lagging-threshold.patch | 8 +- .../0046-Configurable-TPS-Catchup.patch | 4 +- ...urable-void-damage-height-and-damage.patch | 4 +- .../0055-Add-canSaveToDisk-to-Entity.patch | 4 +- ...0059-Add-5-second-tps-average-in-tps.patch | 10 +-- ...Stop-squids-floating-on-top-of-water.patch | 4 +- ...tities-can-use-portals-configuration.patch | 6 +- .../0096-Configurable-daylight-cycle.patch | 4 +- patches/server/0117-Implement-TPSBar.patch | 4 +- ...26-Movement-options-for-armor-stands.patch | 4 +- .../server/0127-Fix-stuck-in-portals.patch | 4 +- patches/server/0147-Drowning-Settings.patch | 4 +- ...173-API-for-any-mob-to-burn-daylight.patch | 4 +- ...ggle-for-end-portal-safe-teleporting.patch | 4 +- ...82-Shulker-spawn-from-bullet-options.patch | 6 +- .../server/0218-UPnP-Port-Forwarding.patch | 4 +- ...counts-in-beehives-to-Purpur-clients.patch | 4 +- ...0261-Add-toggle-for-RNG-manipulation.patch | 6 +- .../0263-Allow-custom-ChatDecorators.patch | 4 +- patches/server/0264-Remove-Timings.patch | 26 +++--- .../server/0265-Remove-Mojang-Profiler.patch | 76 ++++++++-------- ...0275-Add-item-packet-serialize-event.patch | 4 +- patches/server/0284-Fire-Immunity-API.patch | 16 ++-- ...leport-to-spawn-on-nether-ceiling-da.patch | 6 +- 33 files changed, 187 insertions(+), 187 deletions(-) diff --git a/gradle.properties b/gradle.properties index 87768be35..52c81fada 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 1ed50dade82437bf45fe74833d7e6ac2961842a2 +paperCommit = b3c81089ae26cc3ad2e7388c7b64457f3f83c98a 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 cf2e00d23..88e64874a 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -625,7 +625,7 @@ 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..ad368b58005b6b0453b709c2ef0ea23bca53d34a +index 0000000000000000000000000000000000000000..f6a3364175476c57a7763a087ff55e1689474800 --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -0,0 +1,301 @@ @@ -921,13 +921,13 @@ index 0000000000000000000000000000000000000000..ad368b58005b6b0453b709c2ef0ea23b + "the ender dragon whenever a player places an end crystal."); + } + -+ public static boolean disableMethodProfiler; ++ public static boolean disableMethodProfiler; + public static boolean disableOutOfOrderChat; -+ private static void miscSettings() { ++ private static void miscSettings() { + disableMethodProfiler = getBoolean("misc.disable-method-profiler", true); + disableOutOfOrderChat = getBoolean("misc.disable-out-of-order-chat", false); -+ setComment("misc", "Settings for things that don't belong elsewhere"); -+ } ++ setComment("misc", "Settings for things that don't belong elsewhere"); ++ } + +} diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishLogger.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishLogger.java @@ -1497,19 +1497,18 @@ index ba12919c3f9aec34a9e64993b143ae92be5eb172..9efeab9078e2d08903e482718b840797 } else { this.lastTimeStamp = body.timeStamp(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 90ae7e8c81f6a9ede8aeaeec3bf784023522cefc..f1944d77aa1d5901c563108099a196ec1e598128 100644 +index 90ae7e8c81f6a9ede8aeaeec3bf784023522cefc..1dc91ef47d336abe06be1cfd90e8164605e5f37e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -313,6 +313,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); - Thread thread = new io.papermc.paper.util.TickThread(() -> { // Paper - rewrite chunk system -@@ -1219,6 +1221,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop // Paper ++ return "Pufferfish"; // Pufferfish > // Paper } public SystemReport fillSystemReport(SystemReport details) { -@@ -2442,6 +2450,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop tag, double speed) { @@ -1983,7 +1979,7 @@ index 2c06f3ebf7e1069727387bfc60db30c958c14b5a..00b26925b9e0ef7290f904273da87560 double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -4419,14 +4433,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4419,14 +4430,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -2051,7 +2047,7 @@ index 2c06f3ebf7e1069727387bfc60db30c958c14b5a..00b26925b9e0ef7290f904273da87560 if (d2 >= axisalignedbb.minY) { flag1 = true; -@@ -4448,9 +4509,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4448,9 +4506,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // CraftBukkit end } } @@ -2262,7 +2258,7 @@ index 07519c817cc6de04a98198c43a0c2b02ba3141eb..ee66be6e5aa45ec8448b6d30785a6e71 this.blockPos = mutableBlockPos; this.mob.movingTarget = mutableBlockPos == BlockPos.ZERO ? null : mutableBlockPos.immutable(); // Paper diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index c8a80c1b2fedff22e8a877d466062375ffb2f0d7..3c4f4af85a3f2d4f9f52827164e63727b916c33a 100644 +index c8a80c1b2fedff22e8a877d466062375ffb2f0d7..931cbbe41905d7ed3fd46c53d3ddd06a6b9a7c8a 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java @@ -75,9 +75,18 @@ public class TargetingConditions { @@ -2281,7 +2277,7 @@ index c8a80c1b2fedff22e8a877d466062375ffb2f0d7..3c4f4af85a3f2d4f9f52827164e63727 + } + + double d = this.testInvisible ? targetEntity.getVisibilityPercent(baseEntity) : 1.0D; -+ double e = Math.max((followRangeRaw) * d, 2.0D); // Paper ++ double e = Math.max((followRangeRaw) * d, 2.0D); // Paper - Fix MC-145656 + // Pufferfish end if (f > e * e) { return false; @@ -2701,19 +2697,19 @@ index 27b0a79f7a7c47047216aae42944bac2a2151181..a097cfc528f709c80575f35483b68783 autorecipestackmanager.initialize(this); // Paper - better exact choice recipes int i = 0; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 8f437225d2a4e08ca47873cd42277d9f0f9f5529..c84adb9f9bb1d6a81d4007b1ab292b133fc34cfb 100644 +index 8f437225d2a4e08ca47873cd42277d9f0f9f5529..c10efc14ca83f07b27a2f12776ab2fd2a953c5a1 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -212,6 +212,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -211,6 +211,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + // Paper end - Use getChunkIfLoadedImmediately public abstract ResourceKey getTypeKey(); - ++ + protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter -+ + protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot - this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config -@@ -1313,13 +1315,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1313,14 +1315,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { try { tickConsumer.accept(entity); MinecraftServer.getServer().executeMidTickTasks(); // Paper - execute chunk tasks mid tick @@ -2725,10 +2721,12 @@ index 8f437225d2a4e08ca47873cd42277d9f0f9f5529..c84adb9f9bb1d6a81d4007b1ab292b13 MinecraftServer.LOGGER.error(msg, throwable); getCraftServer().getPluginManager().callEvent(new ServerExceptionEvent(new ServerInternalException(msg, throwable))); // Paper - ServerExceptionEvent - entity.discard(); +- // Paper end - Prevent block entity and entity crashes + entity.discard(); // Pufferfish - diff on change ServerLevel.tick - // Paper end - Prevent block entity and entity crashes ++ // Paper end } } + // Paper start - Option to prevent armor stands from doing entity lookups @@ -1793,6 +1795,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } @@ -3273,7 +3271,7 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index b83c2f1e0ea117eecda94cb51b0ea5bba4d7ab5e..325a097426bcc5e7024ee9559b14c337e35339e3 100644 +index 34cd96dba5f11e64d7c90f4246b513b0ea943aa6..8344f9f693879639c484edf575c7df14df616776 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -264,7 +264,7 @@ import javax.annotation.Nullable; // Paper @@ -3310,7 +3308,7 @@ index 96d772eb02f79f8c478f5e6f065e387aa7665b18..c5ce412f321b8b4f31cc042893659e21 } } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 4e1390b9244aeb745ffd3fd1257bc74248722515..e04d721765648a2b5f5bf1f2053e344bfb92f0f4 100644 +index ca5312febcdd467889ad725c0263367bc5fe69f6..91992a5e329ea335d9e60543f9636cb5c3620a0e 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -482,7 +482,7 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/patches/server/0002-Rebrand.patch b/patches/server/0002-Rebrand.patch index bdc15fe55..cc40cc85f 100644 --- a/patches/server/0002-Rebrand.patch +++ b/patches/server/0002-Rebrand.patch @@ -162,7 +162,7 @@ index c5d5648f4ca603ef2b1df723b58f9caf4dd3c722..3cb56595822799926a8141e60a42f5d1 .completer(new ConsoleCommandCompleter(this.server)) .option(LineReader.Option.COMPLETE_IN_WORD, true); diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java -index e047dee632022abfe05865d1e71838be8d5d053a..888e31a0454888c36cb27602a28619f1f6dbf2c0 100644 +index 99c5038672b09d0874125e3df280174c1e8151e6..f91ea723a1c85f6cf8c4f6dd7f182b948c2f2e81 100644 --- a/src/main/java/net/minecraft/CrashReport.java +++ b/src/main/java/net/minecraft/CrashReport.java @@ -125,6 +125,10 @@ public class CrashReport { @@ -177,10 +177,10 @@ index e047dee632022abfe05865d1e71838be8d5d053a..888e31a0454888c36cb27602a28619f1 stringbuilder.append(CrashReport.getErrorComment()); stringbuilder.append("\n\n"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f1944d77aa1d5901c563108099a196ec1e598128..31e640a78dc332a1645865d6619541c550d974f3 100644 +index 1dc91ef47d336abe06be1cfd90e8164605e5f37e..efebfd62ec415ca47cb116ab66a24478489fe080 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -954,7 +954,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop // Paper -+ return "Purpur"; // Purpur - Purpur > // Pufferfish - Pufferfish > // Paper +- return "Pufferfish"; // Pufferfish > // Paper ++ return "Purpur"; // Purpur - Purpur > // Pufferfish > // Paper } public SystemReport fillSystemReport(SystemReport details) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 325a097426bcc5e7024ee9559b14c337e35339e3..14332ca567a9cc6e781ed60b0cd068b084c16ef0 100644 +index 8344f9f693879639c484edf575c7df14df616776..09f976c3a98327d95515fce5f7881b826baa11a6 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -264,7 +264,7 @@ import javax.annotation.Nullable; // Paper @@ -265,7 +265,7 @@ index e85b9bb3f9c225d289a4959921970b9963881199..c1e2d3a75b9d4710ab6d8b5c62af4bc1 // (async tasks must live with race-conditions if they attempt to cancel between these few lines of code) } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index e04d721765648a2b5f5bf1f2053e344bfb92f0f4..fda1016052dfbedcc5486d716fa2fb13d14af2df 100644 +index 91992a5e329ea335d9e60543f9636cb5c3620a0e..dd9ae7cc51386550ec2c30698b55babd87615a9b 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -482,7 +482,7 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/patches/server/0003-Fix-pufferfish-issues.patch b/patches/server/0003-Fix-pufferfish-issues.patch index d921ef9d2..62a4b4ae2 100644 --- a/patches/server/0003-Fix-pufferfish-issues.patch +++ b/patches/server/0003-Fix-pufferfish-issues.patch @@ -18,7 +18,7 @@ index f253b340d75302fda8e59a2ad113f652c2417869..0c92d10f334f82d196e065c0811d0c1f + jvmArgs("-DPaper.isRunDev=true") } diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index ad368b58005b6b0453b709c2ef0ea23bca53d34a..2dac1ec1daf4084f33ead33d5128d2955da23ee2 100644 +index f6a3364175476c57a7763a087ff55e1689474800..5e01bfdad663656168604fc878a993dd910bf45b 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -232,7 +232,7 @@ public class PufferfishConfig { @@ -53,14 +53,16 @@ index dbe612427b894df9da1335b94163ba9b89b090c0..0982d44b9dd30c13d9d879095cc9a839 private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Pufferfish diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 763fe7d1e8334441a5db2285bd4424d165e1c945..b923bdd07d81e09d69f1cbd6f6389ab34e9c427d 100644 +index c10efc14ca83f07b27a2f12776ab2fd2a953c5a1..a0ef35bee70e6888879a8ede64c4cabad2be85ae 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -212,7 +212,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -211,8 +211,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + // Paper end - Use getChunkIfLoadedImmediately public abstract ResourceKey getTypeKey(); - +- - protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter ++ + //protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter // Purpur - dont break ABI protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch index 820762f80..22812af79 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -92,7 +92,7 @@ index c5f92c80d7ca1e1c7f5b9304a5a1173ebfd9c269..1fbfe61b3d7fc372f044d2e9f3500d66 io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // Paper - init PaperBrigadierProvider gg.pufferfish.pufferfish.PufferfishConfig.load(); // Pufferfish diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index b923bdd07d81e09d69f1cbd6f6389ab34e9c427d..5b4a47e3078a8bf0533228af14c1a1031ec3ae69 100644 +index a0ef35bee70e6888879a8ede64c4cabad2be85ae..9a8c80c256020cdbcd307e7032df4b47852e9f50 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -178,6 +178,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -112,7 +112,7 @@ index b923bdd07d81e09d69f1cbd6f6389ab34e9c427d..5b4a47e3078a8bf0533228af14c1a103 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index b8e578330ad7953f013767c7ff040fee468ce5a5..f4452341be3572129dc8c59bb511ef199ff31938 100644 +index 09f976c3a98327d95515fce5f7881b826baa11a6..2f0b2807b35c4d3a172e85fb8b60ef8b764ca48e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1037,6 +1037,7 @@ public final class CraftServer implements Server { @@ -139,7 +139,7 @@ index b8e578330ad7953f013767c7ff040fee468ce5a5..f4452341be3572129dc8c59bb511ef19 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -3003,6 +3006,18 @@ public final class CraftServer implements Server { +@@ -3001,6 +3004,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } diff --git a/patches/server/0007-Component-related-conveniences.patch b/patches/server/0007-Component-related-conveniences.patch index 8cf5ac0c6..272e93f77 100644 --- a/patches/server/0007-Component-related-conveniences.patch +++ b/patches/server/0007-Component-related-conveniences.patch @@ -81,10 +81,10 @@ index fc6903b20a6e084729306fc960a6fc80e094f76c..dad8d358e60902eb186cbc5686219f66 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 00b26925b9e0ef7290f904273da875603b6ce11b..b8236e91b4bf204e728cba13c95292329f0058e9 100644 +index 1d9331fe9ce7308eda2e7da2ae726810d455f090..2323f36e011b375204fc792a7091c85c801344d0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4136,6 +4136,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4133,6 +4133,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return SlotAccess.NULL; } diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 51d7de108..3b6e68cce 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -22,10 +22,10 @@ index e17fa30966dea2836fb791becd032fc7d5cc2611..dd06323731533fb9b1b25a56844a4e39 super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 31e640a78dc332a1645865d6619541c550d974f3..e6e25ab0f2ec3fa0cfca945c578dfb170de3dc8a 100644 +index efebfd62ec415ca47cb116ab66a24478489fe080..bebb1f089783ee84faad3ed3b08c40b9fd2518c0 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1703,6 +1703,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - BlockPhysicsEvent net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent @@ -79,7 +79,7 @@ index dbcf025c07abafee639d8b94bf963962b5e85478..d9ebf31a51e25706b3964ffe1aa2834b if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b8236e91b4bf204e728cba13c95292329f0058e9..fcc95eaaa8f9160f8a3c2391f6d23c27266c3771 100644 +index 2323f36e011b375204fc792a7091c85c801344d0..48521627d1ba4003727c04f337e96e3a61f6b0c8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -378,7 +378,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -91,7 +91,7 @@ index b8236e91b4bf204e728cba13c95292329f0058e9..fcc95eaaa8f9160f8a3c2391f6d23c27 private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -3010,6 +3010,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3007,6 +3007,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index b8236e91b4bf204e728cba13c95292329f0058e9..fcc95eaaa8f9160f8a3c2391f6d23c27 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3049,6 +3056,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3046,6 +3053,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return false; } // CraftBukkit end @@ -120,7 +120,7 @@ index b8236e91b4bf204e728cba13c95292329f0058e9..fcc95eaaa8f9160f8a3c2391f6d23c27 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4987,4 +5002,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4984,4 +4999,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end - Expose entity id counter @@ -4140,7 +4140,7 @@ index 151acc43c96b4545ce92d3d559d8e1591874b4b5..73220bd6989855ac82420219c8414216 this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0D); } else { diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index b73dac8f68041f8a2e0752d70cc9d08b5cfd1cde..e78d869069bc018f29c5fbc6a7811806c4b2fb2f 100644 +index f3c2a2ffb74daa89a516db4c188ce675c79932bf..a695ac9b9e4c3e423d74d082e24928581333947e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -97,12 +97,31 @@ public class Shulker extends AbstractGolem implements VariantHolder // Pufferfish - Pufferfish > // Paper -+ return org.purpurmc.purpur.PurpurConfig.serverModName; // Purpur - Purpur > // Pufferfish - Pufferfish > // Paper +- return "Purpur"; // Purpur - Purpur > // Pufferfish > // Paper ++ return org.purpurmc.purpur.PurpurConfig.serverModName; // Purpur - Purpur > // Pufferfish > // Paper } public SystemReport fillSystemReport(SystemReport details) { diff --git a/patches/server/0016-Lagging-threshold.patch b/patches/server/0016-Lagging-threshold.patch index a65afc1cb..c8b015c33 100644 --- a/patches/server/0016-Lagging-threshold.patch +++ b/patches/server/0016-Lagging-threshold.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index b542683c65baf1a77fcc6c65b30b4181e2305c1c..f88e61e0017fe3748b29a89d6e6a5b15945a5f90 100644 +index bc90dd132e56dbc445261c27f4cd96a54d1ab8f1..c58a727c8bbff81e719ee2a3712dd3f397eee53e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -308,6 +308,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index cdf8c8a571edfa1a54bbcb2e11d69536e7df61bf..72a81ccb270e9cb23bd8324fe4f6d4cea22a0105 100644 +index 41a701ad5abf31b20b70e00122204ce4d7ee8200..6d81c3ea836be2fdbeaeaf7f46674708ee279ac5 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1876,7 +1876,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1873,7 +1873,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return this.isInWater() || flag; } diff --git a/patches/server/0127-Fix-stuck-in-portals.patch b/patches/server/0127-Fix-stuck-in-portals.patch index 79e9ab4bb..e6d5490c4 100644 --- a/patches/server/0127-Fix-stuck-in-portals.patch +++ b/patches/server/0127-Fix-stuck-in-portals.patch @@ -17,10 +17,10 @@ index 485fa2fecb3d83635757319d70cd8e90f95807c0..3c41a23964b115145d6b14930444f16c // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 72a81ccb270e9cb23bd8324fe4f6d4cea22a0105..dcbb4d08a365ac5a697d6d69984b916fbc5abcd9 100644 +index 6d81c3ea836be2fdbeaeaf7f46674708ee279ac5..e2a11e9928e2ad39ce2dca85ada1108884cad568 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3147,12 +3147,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3144,12 +3144,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0147-Drowning-Settings.patch b/patches/server/0147-Drowning-Settings.patch index 8bfe24259..0f8a82597 100644 --- a/patches/server/0147-Drowning-Settings.patch +++ b/patches/server/0147-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index dcbb4d08a365ac5a697d6d69984b916fbc5abcd9..ae97146bf8e86a4be1b5d33f2956b28a2ed50359 100644 +index e2a11e9928e2ad39ce2dca85ada1108884cad568..6e397dddf129f0e2c598145c0d39f093e7671143 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3396,7 +3396,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3393,7 +3393,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public int getMaxAirSupply() { diff --git a/patches/server/0173-API-for-any-mob-to-burn-daylight.patch b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch index 21898e1dd..27575a477 100644 --- a/patches/server/0173-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0173-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 ae97146bf8e86a4be1b5d33f2956b28a2ed50359..db3bdc0699143b9634226c1c371955ec4ac735c8 100644 +index 6e397dddf129f0e2c598145c0d39f093e7671143..fce22f388cae1e125528004457e917e3cbc86d38 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -564,6 +564,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -561,6 +561,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return true; } diff --git a/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch index 0c65cd3e4..872c0b2c9 100644 --- a/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0177-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index db3bdc0699143b9634226c1c371955ec4ac735c8..5bdafc37deac75cf6e332ba1094e375031713ca4 100644 +index fce22f388cae1e125528004457e917e3cbc86d38..31f692bbb67af911dd0563c171ed48ee510fe5bf 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3221,7 +3221,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3218,7 +3218,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.processPortalCooldown(); diff --git a/patches/server/0182-Shulker-spawn-from-bullet-options.patch b/patches/server/0182-Shulker-spawn-from-bullet-options.patch index 19399ff6d..a19c75bc6 100644 --- a/patches/server/0182-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0182-Shulker-spawn-from-bullet-options.patch @@ -13,7 +13,7 @@ Subject: [PATCH] Shulker spawn from bullet options (7 - 1) / 5.0 = 1.2 1.0 - 1.2 = -0.2 0% (6 other shulkers) diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index ea09f65e89b2c683c1549146948ff4f5b5073500..bf3c02e78df66ca57773d667350197220df5d2d1 100644 +index 31284660a9718503a1ce474c56d993de3126a1ea..df944e733ca589d407af3709e0ff025f568600b7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -503,12 +503,21 @@ public class Shulker extends AbstractGolem implements VariantHolder getVariant() { @@ -68,7 +68,7 @@ index 88e1c2431d51d8cdc3d555b711e506648225d289..ac8735cc9d127fc1f867b40d4000c033 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d1d7e18bde867b53d61350d8503f1f15b7913527..3cdd1f0fa067160f879fb617b81f42678270cde6 100644 +index 79a93bb2ce4a86586bfac8635706a4c2d1d1f407..1225ffe648086a279c084ce2f18e5f2126660b7c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1917,6 +1917,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0218-UPnP-Port-Forwarding.patch b/patches/server/0218-UPnP-Port-Forwarding.patch index 233be1fc8..a80c60b8c 100644 --- a/patches/server/0218-UPnP-Port-Forwarding.patch +++ b/patches/server/0218-UPnP-Port-Forwarding.patch @@ -5,7 +5,7 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1e3a1792927f42e7597e4cb2067844f45a3f0bfb..4abb9ecea550d3b01520c914fa06d0608862d694 100644 +index f12f3ce7a5f8c5d3fffcf317e4e27ddef3f31c48..fcafebea3eeee4800e7a695d6d704d2a5e353a8b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -310,6 +310,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -129,7 +129,7 @@ index f52cb2a78e1fc7fb0c9a08b51474c747feea3c65..331df0f5e5ffcc5d82d712b48b47269a // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1685,21 +1685,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1573,7 +1573,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur @@ -244,7 +244,7 @@ index 331df0f5e5ffcc5d82d712b48b47269a20fea46f..c2efe364e3b7d87bb67e48d24c6bf039 try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1760,17 +1760,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2727,40 +2727,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1141,7 +1141,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1138,7 +1138,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity || this instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1134,7 +1134,7 @@ index e0929385a6b218ea654f552bed531f116d629274..b60796b736d2992a192b58b98a2becbf return; } // Paper end -@@ -1162,8 +1162,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1159,8 +1159,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1145,7 +1145,7 @@ index e0929385a6b218ea654f552bed531f116d629274..b60796b736d2992a192b58b98a2becbf boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1182,7 +1182,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1179,7 +1179,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1154,7 +1154,7 @@ index e0929385a6b218ea654f552bed531f116d629274..b60796b736d2992a192b58b98a2becbf } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1320,7 +1320,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1317,7 +1317,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1163,7 +1163,7 @@ index e0929385a6b218ea654f552bed531f116d629274..b60796b736d2992a192b58b98a2becbf } } // Paper start - detailed watchdog information -@@ -3188,7 +3188,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3185,7 +3185,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit @@ -1172,7 +1172,7 @@ index e0929385a6b218ea654f552bed531f116d629274..b60796b736d2992a192b58b98a2becbf this.portalTime = i; // Paper start - Add EntityPortalReadyEvent io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -3206,7 +3206,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3203,7 +3203,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } // Paper - Add EntityPortalReadyEvent // CraftBukkit end @@ -1181,7 +1181,7 @@ index e0929385a6b218ea654f552bed531f116d629274..b60796b736d2992a192b58b98a2becbf } this.isInsidePortal = false; -@@ -3681,14 +3681,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3678,14 +3678,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } // Paper end - Fix item duplication and teleport issues if (this.level() instanceof ServerLevel && !this.isRemoved()) { @@ -1198,7 +1198,7 @@ index e0929385a6b218ea654f552bed531f116d629274..b60796b736d2992a192b58b98a2becbf PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit if (shapedetectorshape == null) { -@@ -3727,7 +3727,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3724,7 +3724,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.unRide(); // CraftBukkit end @@ -1207,7 +1207,7 @@ index e0929385a6b218ea654f552bed531f116d629274..b60796b736d2992a192b58b98a2becbf // Paper start - Fix item duplication and teleport issues if (this instanceof Mob) { ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3754,10 +3754,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3751,10 +3751,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.removeAfterChangingDimensions(); @@ -1821,7 +1821,7 @@ index 28ef910885dbd48965fba6f08cec412697b1b7f0..02dae407069a0200e271cc9c6f3ec6ff if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 2ab6a1bedcdbdb6adc6030ea863bde85ec297e89..0510ab6d164eacb8cede544b98713a132f83002d 100644 +index 81a38b3384f6c0111d3e10397d21aba3f2d57325..c37b1fb81e6e8a8af5d17420892ee930b31ca019 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1310,9 +1310,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0275-Add-item-packet-serialize-event.patch b/patches/server/0275-Add-item-packet-serialize-event.patch index 7a1494d4d..71883b70e 100644 --- a/patches/server/0275-Add-item-packet-serialize-event.patch +++ b/patches/server/0275-Add-item-packet-serialize-event.patch @@ -36,10 +36,10 @@ index b863249ff7e13cf4939c8961601f0564c62fd661..bdcfd80f937c34956911373905d66424 this.writeId(BuiltInRegistries.ITEM, item); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c2efe364e3b7d87bb67e48d24c6bf039691c3094..ac6aec92248aebe3371a72ffd36fc6e784a52c44 100644 +index 1c416ff1bb7cdbf361c096987705bc55e9837dab..0dc5b32fbd3b3d9bb1189f46aab32057f30b18d1 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1722,6 +1722,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -17,7 +17,7 @@ index a0281bf4610452b54ca01dc31be01367efc54c76..e3322c3263280a8e206af7a84db3518e } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 92d16b3c5f2170c30019c093ca81aa85c92d0828..029e989caeb427997821216d14ef03b2099bcd58 100644 +index 17894a054e67173e138cff2190c77c0dad94ef32..c620601e8c6b9cc6a82011a61ce2fcedda94dac4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -417,6 +417,7 @@ public class PurpurWorldConfig {