From 1ba98f853770305f2f3eeff7b6fefaba5f627d8c Mon Sep 17 00:00:00 2001 From: Ben Kerllenevich Date: Thu, 2 Jun 2022 10:10:09 -0400 Subject: [PATCH] Updated Upstream (Paper & Pufferfish) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@a90092e Updated Upstream (CraftBukkit/Spigot) (#7848) PaperMC/Paper@79e07f3 Fix addPassenger for Marker (#7762) PaperMC/Paper@182a609 Fix duplicate world keys via createWorld (#7614) PaperMC/Paper@b6a6544 Provide ComponentSerializer services (#7527) PaperMC/Paper@3f7fbe3 Fix cb's janky level name in WorldCreator (#7851) PaperMC/Paper@af3b377 Update ForgeFlower (#7857) PaperMC/Paper@9667181 Fix OfflinePlayer#getBedSpawnLocation (#7861) PaperMC/Paper@c123915 Fix FurnaceInventory for smokers and blast furnaces (#7249) PaperMC/Paper@f7382f5 Remove unneeded UOE when copying biome sources (#7629) PaperMC/Paper@6b035fd Update default vanilla command perms (#7386) PaperMC/Paper@f210f67 Update the rewriteForIde for new cb package version (#7242) PaperMC/Paper@3f7111d Fix EntityEquipment and related javadocs (#7380) PaperMC/Paper@78e6431 Add default kick msg component (#6886) PaperMC/Paper@04e1b07 Check HAProxyMessage type is PROXY (#7864) PaperMC/Paper@00c6ae8 Implement Translatable on CreativeCategory (#7587) PaperMC/Paper@7602dd2 Sanitize Sent BlockEntity NBT (#7010) PaperMC/Paper@2d17a50 Add translation keys to GameMode enum (#7081) PaperMC/Paper@c5caee3 Prevent entity loading causing async lookups (#7553) PaperMC/Paper@71fe3c6 Add numeric string completion suggestions as int suggestions (#6360) PaperMC/Paper@b1ac25f Respect x-ray permission in World#refreshChunk (#7214) Pufferfish Changes: pufferfish-gg/Pufferfish@6186c1f Updated Upstream (Paper) pufferfish-gg/Pufferfish@b235d83 Fix regression with SIMD vector sizes not matching 256-bits pufferfish-gg/Pufferfish@27cb1ac Updated Upstream (Paper) --- gradle.properties | 2 +- patches/api/0001-Pufferfish-API-Changes.patch | 74 ++++++++++------ patches/api/0005-Purpur-client-support.patch | 4 +- patches/api/0010-AFK-API.patch | 4 +- .../api/0017-Player-invulnerabilities.patch | 4 +- ...on-change-for-adventure-deprecations.patch | 88 +++++++++---------- patches/api/0036-Flying-Fall-Damage-API.patch | 4 +- .../0001-Pufferfish-Server-Changes.patch | 44 +++++----- patches/server/0002-Rebrand.patch | 16 ++-- patches/server/0003-Purpur-config-files.patch | 6 +- .../server/0004-Purpur-client-support.patch | 12 +-- .../0005-Component-related-conveniences.patch | 6 +- patches/server/0006-Ridables.patch | 14 +-- patches/server/0011-AFK-API.patch | 18 ++-- .../server/0012-Bring-back-server-name.patch | 4 +- patches/server/0015-Lagging-threshold.patch | 4 +- .../0018-Player-invulnerabilities.patch | 12 +-- .../0021-Alternative-Keepalive-Handling.patch | 4 +- patches/server/0022-Silk-touch-spawners.patch | 12 --- ...0049-Fix-the-dead-lagging-the-server.patch | 6 +- ...urable-void-damage-height-and-damage.patch | 6 +- .../0062-Add-canSaveToDisk-to-Entity.patch | 4 +- ...g-mends-most-damages-equipment-first.patch | 14 +-- ...0066-Add-5-second-tps-average-in-tps.patch | 4 +- ...ent-respawn-anchor-explosion-options.patch | 4 +- .../0078-Allow-color-codes-in-books.patch | 10 +-- patches/server/0079-Entity-lifespan.patch | 4 +- patches/server/0089-Allow-anvil-colors.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 4 +- ...tities-can-use-portals-configuration.patch | 6 +- patches/server/0104-Stonecutter-damage.patch | 4 +- ...ptimise-player-list-ticksSpread-out-.patch | 6 +- .../server/0129-PlayerBookTooLargeEvent.patch | 6 +- ...0131-Fix-rotating-UP-DOWN-CW-and-CCW.patch | 22 ++--- ...0134-Add-EntityTeleportHinderedEvent.patch | 4 +- ...36-Movement-options-for-armor-stands.patch | 4 +- .../server/0137-Fix-stuck-in-portals.patch | 4 +- .../server/0142-Dont-run-with-scissors.patch | 6 +- patches/server/0158-Drowning-Settings.patch | 4 +- ...Break-individual-slabs-when-sneaking.patch | 6 +- ...ble-damage-settings-for-magma-blocks.patch | 4 +- .../0171-Gamemode-extra-permissions.patch | 8 +- ...85-ShulkerBox-allow-oversized-stacks.patch | 8 +- ...187-API-for-any-mob-to-burn-daylight.patch | 4 +- ...ggle-for-end-portal-safe-teleporting.patch | 4 +- .../server/0192-Flying-Fall-Damage-API.patch | 4 +- ...layer-join-full-server-by-permission.patch | 4 +- .../0227-Extended-OfflinePlayer-API.patch | 8 +- ...the-ability-to-add-combustible-items.patch | 4 +- ...t-right-click-to-use-exp-for-mending.patch | 4 +- ...ent-BlockEntity-Lore-and-DisplayName.patch | 9 +- .../server/0242-Signs-allow-color-codes.patch | 10 +-- ...t-spiders-from-climbing-world-border.patch | 4 +- ...dd-toggle-for-enchant-level-clamping.patch | 4 +- 54 files changed, 275 insertions(+), 270 deletions(-) diff --git a/gradle.properties b/gradle.properties index 50ddccb38..f7c2cc029 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.purpurmc.purpur version = 1.18.2-R0.1-SNAPSHOT -paperCommit = 31ccc579b5cab625b8e0c4ee4d521ffb6bf984b2 +paperCommit = b1ac25fdb8e2c011cc0b006d0b478e11879a29d8 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0001-Pufferfish-API-Changes.patch b/patches/api/0001-Pufferfish-API-Changes.patch index facb61f47..1473bd727 100644 --- a/patches/api/0001-Pufferfish-API-Changes.patch +++ b/patches/api/0001-Pufferfish-API-Changes.patch @@ -214,13 +214,17 @@ index 0000000000000000000000000000000000000000..10310fdd53de28efb8a8250f6d3b0c8e +} diff --git a/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java new file mode 100644 -index 0000000000000000000000000000000000000000..66244a98901fff4479c50ce955502e2975f804c6 +index 0000000000000000000000000000000000000000..93f5d7ca36e043e6c0f959450d38e6946b348eaf --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java -@@ -0,0 +1,30 @@ +@@ -0,0 +1,40 @@ +package gg.pufferfish.pufferfish.simd; + ++import java.util.logging.Level; ++import java.util.logging.Logger; ++import jdk.incubator.vector.FloatVector; +import jdk.incubator.vector.IntVector; ++import jdk.incubator.vector.VectorSpecies; + +/** + * Basically, java is annoying and we have to push this out to its own class. @@ -229,19 +233,25 @@ index 0000000000000000000000000000000000000000..66244a98901fff4479c50ce955502e29 +public class SIMDChecker { + + @Deprecated -+ public static boolean canEnable() { ++ public static boolean canEnable(Logger logger) { + try { + if (SIMDDetection.getJavaVersion() != 17 && SIMDDetection.getJavaVersion() != 18) { + return false; + } else { + SIMDDetection.testRun = true; -+ IntVector oneVector = IntVector.broadcast(IntVector.SPECIES_256, 1); -+ IntVector twoVector = IntVector.broadcast(IntVector.SPECIES_256, 2); -+ IntVector result = oneVector.add(twoVector); -+ if (result.toArray()[0] == 3) { -+ // Vectorization works! Let's enable it! -+ return true; ++ ++ VectorSpecies ISPEC = IntVector.SPECIES_PREFERRED; ++ VectorSpecies FSPEC = FloatVector.SPECIES_PREFERRED; ++ ++ logger.log(Level.INFO, "Max SIMD vector size on this system is " + ISPEC.vectorBitSize() + " bits (int)"); ++ logger.log(Level.INFO, "Max SIMD vector size on this system is " + FSPEC.vectorBitSize() + " bits (float)"); ++ ++ if (ISPEC.elementSize() < 2 || FSPEC.elementSize() < 2) { ++ logger.log(Level.WARNING, "SIMD is not properly supported on this system!"); ++ return false; + } ++ ++ return true; + } + } catch (NoClassDefFoundError | Exception ignored) {} // Basically, we don't do anything. This lets us detect if it's not functional and disable it. + return false; @@ -250,12 +260,14 @@ index 0000000000000000000000000000000000000000..66244a98901fff4479c50ce955502e29 +} diff --git a/src/main/java/gg/pufferfish/pufferfish/simd/SIMDDetection.java b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDDetection.java new file mode 100644 -index 0000000000000000000000000000000000000000..d5ee3dfde2fed1f1bec49df22ba37ce725de4c2c +index 0000000000000000000000000000000000000000..a84889d3e9cfc4d7ab5f867820a6484c6070711b --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDDetection.java -@@ -0,0 +1,33 @@ +@@ -0,0 +1,35 @@ +package gg.pufferfish.pufferfish.simd; + ++import java.util.logging.Logger; ++ +@Deprecated +public class SIMDDetection { + @@ -264,9 +276,9 @@ index 0000000000000000000000000000000000000000..d5ee3dfde2fed1f1bec49df22ba37ce7 + public static boolean testRun = false; + + @Deprecated -+ public static boolean canEnable() { ++ public static boolean canEnable(Logger logger) { + try { -+ return SIMDChecker.canEnable(); ++ return SIMDChecker.canEnable(logger); + } catch (NoClassDefFoundError | Exception ignored) { + return false; + } @@ -289,24 +301,28 @@ index 0000000000000000000000000000000000000000..d5ee3dfde2fed1f1bec49df22ba37ce7 +} diff --git a/src/main/java/gg/pufferfish/pufferfish/simd/VectorMapPalette.java b/src/main/java/gg/pufferfish/pufferfish/simd/VectorMapPalette.java new file mode 100644 -index 0000000000000000000000000000000000000000..2341b564b6383d5eca5fafe80273e046bfea070e +index 0000000000000000000000000000000000000000..ae2464920c9412ac90b819a540ee58be0741465f --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/simd/VectorMapPalette.java -@@ -0,0 +1,79 @@ +@@ -0,0 +1,83 @@ +package gg.pufferfish.pufferfish.simd; + +import java.awt.Color; +import jdk.incubator.vector.FloatVector; +import jdk.incubator.vector.IntVector; +import jdk.incubator.vector.VectorMask; ++import jdk.incubator.vector.VectorSpecies; +import org.bukkit.map.MapPalette; + +@Deprecated +public class VectorMapPalette { + ++ private static final VectorSpecies I_SPEC = IntVector.SPECIES_PREFERRED; ++ private static final VectorSpecies F_SPEC = FloatVector.SPECIES_PREFERRED; ++ + @Deprecated + public static void matchColorVectorized(int[] in, byte[] out) { -+ int speciesLength = IntVector.SPECIES_256.length(); ++ int speciesLength = I_SPEC.length(); + int i; + for (i = 0; i < in.length - speciesLength; i += speciesLength) { + float[] redsArr = new float[speciesLength]; @@ -321,22 +337,22 @@ index 0000000000000000000000000000000000000000..2341b564b6383d5eca5fafe80273e046 + bluesArr[j] = (in[i + j] >> 0) & 0xFF; + } + -+ IntVector alphas = IntVector.fromArray(IntVector.SPECIES_256, alphasArr, 0); -+ FloatVector reds = FloatVector.fromArray(FloatVector.SPECIES_256, redsArr, 0); -+ FloatVector greens = FloatVector.fromArray(FloatVector.SPECIES_256, greensArr, 0); -+ FloatVector blues = FloatVector.fromArray(FloatVector.SPECIES_256, bluesArr, 0); -+ IntVector resultIndex = IntVector.zero(IntVector.SPECIES_256); -+ VectorMask modificationMask = VectorMask.fromLong(IntVector.SPECIES_256, 0b11111111); ++ IntVector alphas = IntVector.fromArray(I_SPEC, alphasArr, 0); ++ FloatVector reds = FloatVector.fromArray(F_SPEC, redsArr, 0); ++ FloatVector greens = FloatVector.fromArray(F_SPEC, greensArr, 0); ++ FloatVector blues = FloatVector.fromArray(F_SPEC, bluesArr, 0); ++ IntVector resultIndex = IntVector.zero(I_SPEC); ++ VectorMask modificationMask = VectorMask.fromLong(I_SPEC, 0xffffffff); + + modificationMask = modificationMask.and(alphas.lt(128).not()); -+ FloatVector bestDistances = FloatVector.broadcast(FloatVector.SPECIES_256, Float.MAX_VALUE); ++ FloatVector bestDistances = FloatVector.broadcast(F_SPEC, Float.MAX_VALUE); + + for (int c = 4; c < MapPalette.colors.length; c++) { + // We're using 32-bit floats here because it's 2x faster and nobody will know the difference. + // For correctness, the original algorithm uses 64-bit floats instead. Completely unnecessary. -+ FloatVector compReds = FloatVector.broadcast(FloatVector.SPECIES_256, MapPalette.colors[c].getRed()); -+ FloatVector compGreens = FloatVector.broadcast(FloatVector.SPECIES_256, MapPalette.colors[c].getGreen()); -+ FloatVector compBlues = FloatVector.broadcast(FloatVector.SPECIES_256, MapPalette.colors[c].getBlue()); ++ FloatVector compReds = FloatVector.broadcast(F_SPEC, MapPalette.colors[c].getRed()); ++ FloatVector compGreens = FloatVector.broadcast(F_SPEC, MapPalette.colors[c].getGreen()); ++ FloatVector compBlues = FloatVector.broadcast(F_SPEC, MapPalette.colors[c].getBlue()); + + FloatVector rMean = reds.add(compReds).div(2.0f); + FloatVector rDiff = reds.sub(compReds); @@ -344,8 +360,8 @@ index 0000000000000000000000000000000000000000..2341b564b6383d5eca5fafe80273e046 + FloatVector bDiff = blues.sub(compBlues); + + FloatVector weightR = rMean.div(256.0f).add(2); -+ FloatVector weightG = FloatVector.broadcast(FloatVector.SPECIES_256, 4.0f); -+ FloatVector weightB = FloatVector.broadcast(FloatVector.SPECIES_256, 255.0f).sub(rMean).div(256.0f).add(2.0f); ++ FloatVector weightG = FloatVector.broadcast(F_SPEC, 4.0f); ++ FloatVector weightB = FloatVector.broadcast(F_SPEC, 255.0f).sub(rMean).div(256.0f).add(2.0f); + + FloatVector distance = weightR.mul(rDiff).mul(rDiff).add(weightG.mul(gDiff).mul(gDiff)).add(weightB.mul(bDiff).mul(bDiff)); + @@ -356,7 +372,7 @@ index 0000000000000000000000000000000000000000..2341b564b6383d5eca5fafe80273e046 + + // Update the result array + // We also AND with the modification mask because we don't want to interfere if the alpha value isn't large enough. -+ resultIndex = resultIndex.blend(c, bestDistanceMask.cast(IntVector.SPECIES_256).and(modificationMask)); // Update the results ++ resultIndex = resultIndex.blend(c, bestDistanceMask.cast(I_SPEC).and(modificationMask)); // Update the results + } + + for (int j = 0; j < speciesLength; j++) { diff --git a/patches/api/0005-Purpur-client-support.patch b/patches/api/0005-Purpur-client-support.patch index ea21d7d32..a1938c652 100644 --- a/patches/api/0005-Purpur-client-support.patch +++ b/patches/api/0005-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index e65dc831974ca501f69d2cc43858b838e8866676..65424451fb7fd05d37beb70cb7023b0a5f27dc8b 100644 +index 6cd0b10d1dc4506cfb1e4db5e1260cb705566cec..81d8afa7b7ac9b65e3ea2a5e69e7ec5dc7b812b7 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -2693,4 +2693,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -2698,4 +2698,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0010-AFK-API.patch b/patches/api/0010-AFK-API.patch index ecc989194..6d70cd767 100644 --- a/patches/api/0010-AFK-API.patch +++ b/patches/api/0010-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 65424451fb7fd05d37beb70cb7023b0a5f27dc8b..24eb17f307c8c6523cd804e8b330c7ae7dfc6404 100644 +index 81d8afa7b7ac9b65e3ea2a5e69e7ec5dc7b812b7..a569decc40fff08d0675ffa4ee9e6f54f115ad97 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -2701,5 +2701,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -2706,5 +2706,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0017-Player-invulnerabilities.patch b/patches/api/0017-Player-invulnerabilities.patch index 7847ad91c..32f42ab76 100644 --- a/patches/api/0017-Player-invulnerabilities.patch +++ b/patches/api/0017-Player-invulnerabilities.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Player invulnerabilities diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 24eb17f307c8c6523cd804e8b330c7ae7dfc6404..7913e9440a1068374a7129dac7cc2a6bc4fb2527 100644 +index a569decc40fff08d0675ffa4ee9e6f54f115ad97..4f1213d5c5efb2c415eb22b927936eb932ed3a4a 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -2720,5 +2720,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -2725,5 +2725,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Reset the idle timer back to 0 */ void resetIdleTimer(); diff --git a/patches/api/0032-Conflict-on-change-for-adventure-deprecations.patch b/patches/api/0032-Conflict-on-change-for-adventure-deprecations.patch index eb40143a9..1ac5ee7ef 100644 --- a/patches/api/0032-Conflict-on-change-for-adventure-deprecations.patch +++ b/patches/api/0032-Conflict-on-change-for-adventure-deprecations.patch @@ -170,7 +170,7 @@ index c8d37184d8e882a4084a1bfef85faa330588600b..46bae5c13ce2b973b114682f6a338981 /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 7913e9440a1068374a7129dac7cc2a6bc4fb2527..bb2ffe33a285f2e453ffe195cc7217a047ae9c7a 100644 +index 4f1213d5c5efb2c415eb22b927936eb932ed3a4a..935220b5fa5015def0c9c2f4b7772a72220d3c34 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -73,7 +73,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @@ -263,7 +263,7 @@ index 7913e9440a1068374a7129dac7cc2a6bc4fb2527..bb2ffe33a285f2e453ffe195cc7217a0 public void kickPlayer(@Nullable String message); // Paper start -@@ -713,7 +713,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -718,7 +718,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @throws IllegalArgumentException if lines is non-null and has a length less than 4 * @deprecated in favour of {@link #sendSignChange(org.bukkit.Location, java.util.List)} */ @@ -272,7 +272,7 @@ index 7913e9440a1068374a7129dac7cc2a6bc4fb2527..bb2ffe33a285f2e453ffe195cc7217a0 public void sendSignChange(@NotNull Location loc, @Nullable String[] lines) throws IllegalArgumentException; /** -@@ -734,7 +734,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -739,7 +739,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @throws IllegalArgumentException if lines is non-null and has a length less than 4 * @deprecated in favour of {@link #sendSignChange(org.bukkit.Location, java.util.List, org.bukkit.DyeColor)} */ @@ -281,7 +281,7 @@ index 7913e9440a1068374a7129dac7cc2a6bc4fb2527..bb2ffe33a285f2e453ffe195cc7217a0 public void sendSignChange(@NotNull Location loc, @Nullable String[] lines, @NotNull DyeColor dyeColor) throws IllegalArgumentException; /** -@@ -2233,7 +2233,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -2238,7 +2238,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @deprecated in favour of {@link #locale()} */ @NotNull @@ -304,7 +304,7 @@ index 6a6021ad3a0e6aaf51f5144fa126e81bada9cfcf..1c5d268103cb6bd225c31f1ea1a49a52 } diff --git a/src/main/java/org/bukkit/event/block/SignChangeEvent.java b/src/main/java/org/bukkit/event/block/SignChangeEvent.java -index 1f79f704abf339150df08900b8ea7da4cefef258..004106913655446774f875015cb79863d21263c8 100644 +index 1268066e30ddb0cd3792ea4b3de894eb04196669..53c71489cfc10e8d4a334829639500978e7b825a 100644 --- a/src/main/java/org/bukkit/event/block/SignChangeEvent.java +++ b/src/main/java/org/bukkit/event/block/SignChangeEvent.java @@ -90,7 +90,7 @@ public class SignChangeEvent extends BlockEvent implements Cancellable { @@ -314,7 +314,7 @@ index 1f79f704abf339150df08900b8ea7da4cefef258..004106913655446774f875015cb79863 - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public String[] getLines() { - return adventure$lines.stream().map(org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer()::serialize).toArray(String[]::new); // Paper + return adventure$lines.stream().map(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection()::serialize).toArray(String[]::new); // Paper } @@ -106,7 +106,7 @@ public class SignChangeEvent extends BlockEvent implements Cancellable { * @deprecated in favour of {@link #line(int)} @@ -323,7 +323,7 @@ index 1f79f704abf339150df08900b8ea7da4cefef258..004106913655446774f875015cb79863 - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public String getLine(int index) throws IndexOutOfBoundsException { - return org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().serialize(this.adventure$lines.get(index)); // Paper + return net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.adventure$lines.get(index)); // Paper } @@ -120,7 +120,7 @@ public class SignChangeEvent extends BlockEvent implements Cancellable { * or < 0} @@ -332,10 +332,10 @@ index 1f79f704abf339150df08900b8ea7da4cefef258..004106913655446774f875015cb79863 - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public void setLine(int index, @Nullable String line) throws IndexOutOfBoundsException { - adventure$lines.set(index, line != null ? org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(line) : null); // Paper + adventure$lines.set(index, line != null ? net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(line) : null); // Paper } diff --git a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java -index 8175e5329f7fb6da4c7faf695162b51492114dc3..839fea07e3b3fe486cd8f7f8fa5d2593ed54594e 100644 +index 9d95218b49895ab76b00fe9524d9b25ea9f9b8c2..d198fe1fbeeb6c769431f5a487097f09b3c0a2f6 100644 --- a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java +++ b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java @@ -162,7 +162,7 @@ public class PlayerDeathEvent extends EntityDeathEvent { @@ -346,7 +346,7 @@ index 8175e5329f7fb6da4c7faf695162b51492114dc3..839fea07e3b3fe486cd8f7f8fa5d2593 + @Deprecated // Paper // Purpur - conflict on change public void setDeathMessage(@Nullable String deathMessage) { this.deathMessage = deathMessage; - this.adventure$deathMessage = deathMessage != null ? org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(deathMessage) : net.kyori.adventure.text.Component.empty(); // Paper + this.adventure$deathMessage = deathMessage != null ? net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(deathMessage) : net.kyori.adventure.text.Component.empty(); // Paper @@ -175,7 +175,7 @@ public class PlayerDeathEvent extends EntityDeathEvent { * @deprecated in favour of {@link #deathMessage()} */ @@ -370,7 +370,7 @@ index a31841b93964338c9325631dbfa59b3cad77b4f1..7d4a0375543a22a1e31d0506dcc72b1f return title; } diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java -index 356d1154b0732e2daf242d60fa715dba9f2dc9db..032e76676890ccbe2e99117690487d02925f44c9 100644 +index 635b8787fc235b61c0d5677def034656e4ec4cef..21c68f84e111fe834dbb452b3f40a0de0790f8df 100644 --- a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java @@ -188,7 +188,7 @@ public class AsyncPlayerPreLoginEvent extends Event { @@ -380,7 +380,7 @@ index 356d1154b0732e2daf242d60fa715dba9f2dc9db..032e76676890ccbe2e99117690487d02 - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public String getKickMessage() { - return org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().serialize(this.message); // Paper + return net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.message); // Paper } @@ -199,7 +199,7 @@ public class AsyncPlayerPreLoginEvent extends Event { * @param message New kick message @@ -389,7 +389,7 @@ index 356d1154b0732e2daf242d60fa715dba9f2dc9db..032e76676890ccbe2e99117690487d02 - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public void setKickMessage(@NotNull final String message) { - this.message = org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(message); // Paper + this.message = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(message); // Paper } @@ -219,7 +219,7 @@ public class AsyncPlayerPreLoginEvent extends Event { * @param message Kick message to display to the user @@ -399,9 +399,9 @@ index 356d1154b0732e2daf242d60fa715dba9f2dc9db..032e76676890ccbe2e99117690487d02 + @Deprecated // Paper // Purpur - conflict on change public void disallow(@NotNull final Result result, @NotNull final String message) { this.result = result; - this.message = org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(message); // Paper + this.message = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(message); // Paper diff --git a/src/main/java/org/bukkit/event/player/PlayerJoinEvent.java b/src/main/java/org/bukkit/event/player/PlayerJoinEvent.java -index 851a189d42e271679abc78f95049d8badf7a2b64..7057c2e95267ad32190c5666f20a0566f7fe32fa 100644 +index 4af1d064fcb57773dfa8f6ad40d6482973f8e1a8..c9fe267660f9ec04f78b30182df28180d02f96a2 100644 --- a/src/main/java/org/bukkit/event/player/PlayerJoinEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerJoinEvent.java @@ -17,7 +17,7 @@ public class PlayerJoinEvent extends PlayerEvent { @@ -412,7 +412,7 @@ index 851a189d42e271679abc78f95049d8badf7a2b64..7057c2e95267ad32190c5666f20a0566 + @Deprecated // Paper end // Purpur - conflict on change public PlayerJoinEvent(@NotNull final Player playerJoined, @Nullable final String joinMessage) { super(playerJoined); - this.joinMessage = joinMessage != null ? org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(joinMessage) : null; // Paper end + this.joinMessage = joinMessage != null ? net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(joinMessage) : null; // Paper end @@ -50,7 +50,7 @@ public class PlayerJoinEvent extends PlayerEvent { * @deprecated in favour of {@link #joinMessage()} */ @@ -420,7 +420,7 @@ index 851a189d42e271679abc78f95049d8badf7a2b64..7057c2e95267ad32190c5666f20a0566 - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public String getJoinMessage() { - return this.joinMessage == null ? null : org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().serialize(this.joinMessage); // Paper + return this.joinMessage == null ? null : net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.joinMessage); // Paper } @@ -61,7 +61,7 @@ public class PlayerJoinEvent extends PlayerEvent { * @param joinMessage join message. If null, no message will be sent @@ -429,10 +429,10 @@ index 851a189d42e271679abc78f95049d8badf7a2b64..7057c2e95267ad32190c5666f20a0566 - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public void setJoinMessage(@Nullable String joinMessage) { - this.joinMessage = joinMessage != null ? org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(joinMessage) : null; // Paper + this.joinMessage = joinMessage != null ? net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(joinMessage) : null; // Paper } diff --git a/src/main/java/org/bukkit/event/player/PlayerKickEvent.java b/src/main/java/org/bukkit/event/player/PlayerKickEvent.java -index 05ecfd8c133e72d198faeeded8c757c231c871cc..e57020767879b51f212d7a3e563a386adb390c5b 100644 +index 45235379b7b54f1ca36dff3bf02c496cef2f3254..3f9df5dd40accc4cf8043348b03fb661a8bc0fe7 100644 --- a/src/main/java/org/bukkit/event/player/PlayerKickEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerKickEvent.java @@ -85,7 +85,7 @@ public class PlayerKickEvent extends PlayerEvent implements Cancellable { @@ -442,7 +442,7 @@ index 05ecfd8c133e72d198faeeded8c757c231c871cc..e57020767879b51f212d7a3e563a386a - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public String getReason() { - return org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().serialize(this.kickReason); // Paper + return net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.kickReason); // Paper } @@ -97,7 +97,7 @@ public class PlayerKickEvent extends PlayerEvent implements Cancellable { * @deprecated in favour of {@link #leaveMessage()} @@ -451,7 +451,7 @@ index 05ecfd8c133e72d198faeeded8c757c231c871cc..e57020767879b51f212d7a3e563a386a - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public String getLeaveMessage() { - return org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().serialize(this.leaveMessage); // Paper + return net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.leaveMessage); // Paper } @@ -118,7 +118,7 @@ public class PlayerKickEvent extends PlayerEvent implements Cancellable { * @param kickReason kick reason @@ -460,7 +460,7 @@ index 05ecfd8c133e72d198faeeded8c757c231c871cc..e57020767879b51f212d7a3e563a386a - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public void setReason(@NotNull String kickReason) { - this.kickReason = org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(kickReason); // Paper + this.kickReason = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(kickReason); // Paper } @@ -129,7 +129,7 @@ public class PlayerKickEvent extends PlayerEvent implements Cancellable { * @param leaveMessage leave message @@ -469,7 +469,7 @@ index 05ecfd8c133e72d198faeeded8c757c231c871cc..e57020767879b51f212d7a3e563a386a - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public void setLeaveMessage(@NotNull String leaveMessage) { - this.leaveMessage = org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(leaveMessage); // Paper + this.leaveMessage = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(leaveMessage); // Paper } diff --git a/src/main/java/org/bukkit/event/player/PlayerLocaleChangeEvent.java b/src/main/java/org/bukkit/event/player/PlayerLocaleChangeEvent.java index ebd499c1a2d11ea068e8c374edbc3967e4cece3d..61895d8d9f01f7ad0409a1cbd902e8a21472d6d4 100644 @@ -485,7 +485,7 @@ index ebd499c1a2d11ea068e8c374edbc3967e4cece3d..61895d8d9f01f7ad0409a1cbd902e8a2 return locale; } diff --git a/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java b/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java -index 75cc54739ef841cd90568d74927d6002d4cfa7e0..712900c9afc3b79806d2b564c0734facf969a6fe 100644 +index 95c53d934f928d25f7b20cfbf2e5faa3df31ddc4..69f07fdb96ea34bb46181dd86b8b5c94dd040808 100644 --- a/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java @@ -139,7 +139,7 @@ public class PlayerLoginEvent extends PlayerEvent { @@ -495,7 +495,7 @@ index 75cc54739ef841cd90568d74927d6002d4cfa7e0..712900c9afc3b79806d2b564c0734fac - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public String getKickMessage() { - return org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().serialize(this.message); // Paper + return net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.message); // Paper } @@ -150,7 +150,7 @@ public class PlayerLoginEvent extends PlayerEvent { * @param message New kick message @@ -504,7 +504,7 @@ index 75cc54739ef841cd90568d74927d6002d4cfa7e0..712900c9afc3b79806d2b564c0734fac - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public void setKickMessage(@NotNull final String message) { - this.message = org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(message); // Paper + this.message = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(message); // Paper } @@ -181,7 +181,7 @@ public class PlayerLoginEvent extends PlayerEvent { * @param message Kick message to display to the user @@ -514,9 +514,9 @@ index 75cc54739ef841cd90568d74927d6002d4cfa7e0..712900c9afc3b79806d2b564c0734fac + @Deprecated // Paper start // Purpur - conflict on change public void disallow(@NotNull final Result result, @NotNull final String message) { this.result = result; - this.message = org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(message); + this.message = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(message); diff --git a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java -index 123979ed64939d615b061f91c19c630e1e1db8c7..5b85579964dc6a6150f0c0be650a4bf731414838 100644 +index 6800132c6288b4588fd02b08d26f016c38f27129..f3b9ec7e0900c27f2b3fba6d95e9d870919b861a 100644 --- a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java @@ -95,7 +95,7 @@ public class PlayerPreLoginEvent extends Event { @@ -527,7 +527,7 @@ index 123979ed64939d615b061f91c19c630e1e1db8c7..5b85579964dc6a6150f0c0be650a4bf7 + @Deprecated // Paper // Purpur - conflict on change @NotNull public String getKickMessage() { - return org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().serialize(this.message); // Paper + return net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.message); // Paper @@ -107,7 +107,7 @@ public class PlayerPreLoginEvent extends Event { * @param message New kick message * @deprecated in favour of {@link #kickMessage(net.kyori.adventure.text.Component)} @@ -535,7 +535,7 @@ index 123979ed64939d615b061f91c19c630e1e1db8c7..5b85579964dc6a6150f0c0be650a4bf7 - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public void setKickMessage(@NotNull final String message) { - this.message = org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(message); // Paper + this.message = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(message); // Paper } @@ -127,7 +127,7 @@ public class PlayerPreLoginEvent extends Event { * @param message Kick message to display to the user @@ -545,9 +545,9 @@ index 123979ed64939d615b061f91c19c630e1e1db8c7..5b85579964dc6a6150f0c0be650a4bf7 + @Deprecated // Paper // Purpur - conflict on change public void disallow(@NotNull final Result result, @NotNull final String message) { this.result = result; - this.message = org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(message); // Paper + this.message = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(message); // Paper diff --git a/src/main/java/org/bukkit/event/player/PlayerQuitEvent.java b/src/main/java/org/bukkit/event/player/PlayerQuitEvent.java -index b6016aa1e91863efc252eecab69ade6f54c89f27..c405d4fd32b329add1526f6502b2e87e4e6429ad 100644 +index 6e9205024ca9d3000a371bd0eb723dcd6c662bce..567630247c93404f312f8b4470185314d4d82d1a 100644 --- a/src/main/java/org/bukkit/event/player/PlayerQuitEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerQuitEvent.java @@ -61,7 +61,7 @@ public class PlayerQuitEvent extends PlayerEvent { @@ -557,7 +557,7 @@ index b6016aa1e91863efc252eecab69ade6f54c89f27..c405d4fd32b329add1526f6502b2e87e - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public String getQuitMessage() { - return this.quitMessage == null ? null : org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().serialize(this.quitMessage); // Paper + return this.quitMessage == null ? null : net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.quitMessage); // Paper } @@ -72,7 +72,7 @@ public class PlayerQuitEvent extends PlayerEvent { * @param quitMessage quit message @@ -566,10 +566,10 @@ index b6016aa1e91863efc252eecab69ade6f54c89f27..c405d4fd32b329add1526f6502b2e87e - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public void setQuitMessage(@Nullable String quitMessage) { - this.quitMessage = quitMessage != null ? org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(quitMessage) : null; // Paper + this.quitMessage = quitMessage != null ? net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(quitMessage) : null; // Paper } diff --git a/src/main/java/org/bukkit/event/server/BroadcastMessageEvent.java b/src/main/java/org/bukkit/event/server/BroadcastMessageEvent.java -index 4f8c85222c7bd33217c7db0ff5f47bf397f8f3e5..c18d6d979bd22814ebdc52b995d2cc7ed46dd87f 100644 +index 943d324435350d3f16fad3e21cb472a01a3ff60b..9f66a44977ab3248ce41733e424b5b71006db8b9 100644 --- a/src/main/java/org/bukkit/event/server/BroadcastMessageEvent.java +++ b/src/main/java/org/bukkit/event/server/BroadcastMessageEvent.java @@ -73,7 +73,7 @@ public class BroadcastMessageEvent extends ServerEvent implements Cancellable { @@ -579,7 +579,7 @@ index 4f8c85222c7bd33217c7db0ff5f47bf397f8f3e5..c18d6d979bd22814ebdc52b995d2cc7e - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public String getMessage() { - return org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().serialize(this.message); // Paper + return net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.message); // Paper } @@ -84,7 +84,7 @@ public class BroadcastMessageEvent extends ServerEvent implements Cancellable { * @param message New message to broadcast @@ -588,10 +588,10 @@ index 4f8c85222c7bd33217c7db0ff5f47bf397f8f3e5..c18d6d979bd22814ebdc52b995d2cc7e - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public void setMessage(@NotNull String message) { - this.message = org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(message); // Paper + this.message = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(message); // Paper } diff --git a/src/main/java/org/bukkit/event/server/ServerListPingEvent.java b/src/main/java/org/bukkit/event/server/ServerListPingEvent.java -index fd4db14bef92b893ddaf5424e14ee71da22dcf84..dd7d8d8f2f848bdc1c224805afe0b03fb80fe5cd 100644 +index 172697ac5dc0ea3551a61b5589416ac68f372cd1..fffe2ab5a9f282b60d5d7ae316c063d8945a65c0 100644 --- a/src/main/java/org/bukkit/event/server/ServerListPingEvent.java +++ b/src/main/java/org/bukkit/event/server/ServerListPingEvent.java @@ -113,7 +113,7 @@ public class ServerListPingEvent extends ServerEvent implements Iterable @@ -601,7 +601,7 @@ index fd4db14bef92b893ddaf5424e14ee71da22dcf84..dd7d8d8f2f848bdc1c224805afe0b03f - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public String getMotd() { - return org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().serialize(this.motd); // Paper + return net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.motd); // Paper } @@ -124,7 +124,7 @@ public class ServerListPingEvent extends ServerEvent implements Iterable * @param motd the message of the day @@ -610,10 +610,10 @@ index fd4db14bef92b893ddaf5424e14ee71da22dcf84..dd7d8d8f2f848bdc1c224805afe0b03f - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public void setMotd(@NotNull String motd) { - this.motd = org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(motd); // Paper + this.motd = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(motd); // Paper } diff --git a/src/main/java/org/bukkit/inventory/InventoryView.java b/src/main/java/org/bukkit/inventory/InventoryView.java -index b06995aa57aa9cba0bb59f1d26d81015619a08e6..5e33fe46ab9bb034acc6a38a3c00c33c8f029ca6 100644 +index 2448e70d75ae7a678c6befac4506c103edb78875..b645af3ec4e90789014c2399fb00124665a86cfa 100644 --- a/src/main/java/org/bukkit/inventory/InventoryView.java +++ b/src/main/java/org/bukkit/inventory/InventoryView.java @@ -464,7 +464,7 @@ public abstract class InventoryView { @@ -724,7 +724,7 @@ index 67c9347c09c8fe8932ad95762aa5f6c527550cdc..3b23fe19ed92291182a1dab083214048 /** diff --git a/src/main/java/org/bukkit/map/MapCursor.java b/src/main/java/org/bukkit/map/MapCursor.java -index ed0bc2024a0bb85837e25f75ae89d1fe257b2e60..f6e831f844e1fe99a2617bd64c2290d1f2e96d81 100644 +index ca763b231749f108b6773040a5c6109378b21b31..6db6fc85bd4c8bb94f6afd6f42a8ba447c25ea4b 100644 --- a/src/main/java/org/bukkit/map/MapCursor.java +++ b/src/main/java/org/bukkit/map/MapCursor.java @@ -259,7 +259,7 @@ public final class MapCursor { @@ -734,7 +734,7 @@ index ed0bc2024a0bb85837e25f75ae89d1fe257b2e60..f6e831f844e1fe99a2617bd64c2290d1 - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public String getCaption() { - return this.caption == null ? null : org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().serialize(this.caption); // Paper + return this.caption == null ? null : net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.caption); // Paper } @@ -270,7 +270,7 @@ public final class MapCursor { * @param caption new caption @@ -743,7 +743,7 @@ index ed0bc2024a0bb85837e25f75ae89d1fe257b2e60..f6e831f844e1fe99a2617bd64c2290d1 - @Deprecated // Paper + @Deprecated // Paper // Purpur - conflict on change public void setCaption(@Nullable String caption) { - this.caption = caption == null ? null : org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(caption); // Paper + this.caption = caption == null ? null : net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(caption); // Paper } diff --git a/src/main/java/org/bukkit/scoreboard/Objective.java b/src/main/java/org/bukkit/scoreboard/Objective.java index b93b1b0428d11589605c8edf5c053369e1031076..140ac3ebdb0aab58093429faf67a31f7e527e625 100644 diff --git a/patches/api/0036-Flying-Fall-Damage-API.patch b/patches/api/0036-Flying-Fall-Damage-API.patch index 94d38f844..c89b5ac7d 100644 --- a/patches/api/0036-Flying-Fall-Damage-API.patch +++ b/patches/api/0036-Flying-Fall-Damage-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Flying Fall Damage API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index bb2ffe33a285f2e453ffe195cc7217a047ae9c7a..094b3622db6d5744eb6831f070eaff603be30d8d 100644 +index 935220b5fa5015def0c9c2f4b7772a72220d3c34..9e06d2cff73d3eed08b7e7855cd30fdad77891c3 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -2741,5 +2741,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -2746,5 +2746,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @param invulnerableTicks Invulnerable ticks remaining */ void setSpawnInvulnerableTicks(int invulnerableTicks); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 1a05e02b3..ab2959bb0 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index dd8f449dddbe0838835ae8f8d5033aa422db403d..9521971e9e597834e785b36d1657064dc1621b9b 100644 +index 0282e3b75470e1a68ea1fc228082483514ba432e..b04e9ab317fbce9c090b61076eb07c40f069dc59 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,8 +9,12 @@ plugins { @@ -38,7 +38,7 @@ index dd8f449dddbe0838835ae8f8d5033aa422db403d..9521971e9e597834e785b36d1657064d // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -42,11 +46,26 @@ dependencies { +@@ -42,12 +46,28 @@ dependencies { } // Paper end @@ -55,6 +55,8 @@ index dd8f449dddbe0838835ae8f8d5033aa422db403d..9521971e9e597834e785b36d1657064d testImplementation("org.hamcrest:hamcrest-library:1.3") } + val craftbukkitPackageVersion = "1_18_R2" // Paper ++ +// Pufferfish Start +tasks.withType { + val compilerArgs = options.compilerArgs @@ -65,7 +67,7 @@ index dd8f449dddbe0838835ae8f8d5033aa422db403d..9521971e9e597834e785b36d1657064d tasks.jar { archiveClassifier.set("dev") -@@ -59,7 +78,7 @@ tasks.jar { +@@ -60,7 +80,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -111,7 +113,7 @@ index 218f5bafeed8551b55b91c7fccaf6935c8b631ca..f2fe6ea3719ff8b2913b7a3a939d7a5b metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 1ac6cf51f2682d5eb14fe19646e79f6617d492dd..5ffc636329029ae070e7a79ab9c822c17c0c5fa6 100644 +index fafbebbb5e8c1a381b673f97f1fa210687b52823..560e83f1e70cc2712e9c08ffd5e2cab8a6de687b 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -241,6 +241,15 @@ public class PaperConfig { @@ -629,7 +631,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..a820bfe38cb5765ee74c4fd7084d949477f83692 +index 0000000000000000000000000000000000000000..56a5a31b41d00ba73259a7eda5c57d08570d3e6e --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -0,0 +1,293 @@ @@ -725,7 +727,7 @@ index 0000000000000000000000000000000000000000..a820bfe38cb5765ee74c4fd7084d9494 + + // Attempt to detect vectorization + try { -+ SIMDDetection.isEnabled = SIMDDetection.canEnable(); ++ SIMDDetection.isEnabled = SIMDDetection.canEnable(PufferfishLogger.LOGGER); + SIMDDetection.versionLimited = SIMDDetection.getJavaVersion() != 17 && SIMDDetection.getJavaVersion() != 18; + } catch (NoClassDefFoundError | Exception ignored) {} + @@ -2427,10 +2429,10 @@ index 98209532ad3e692d7e459640123f78bbd9a65889..93c1f9e3e9d62cc993fedb93fe43cbee 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 1a1f3664554ae1f2b0110f615e79fa0568407d17..f115aabaf67976a503a76f5213dd52b7b7dfab4e 100644 +index 901fa17d0f0a3f66923f68f13f183bc4c17f7748..676f2cd4b152984aa76903fcf4377c745775bfc8 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1116,6 +1116,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1117,6 +1117,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @Override public void handleEditBook(ServerboundEditBookPacket packet) { @@ -2551,7 +2553,7 @@ index 7437f01ca8f416e2c9150250e324af4725a4efb6..7ac51dbfce18a2bc52faa7a915abeccc 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 86a2eddf344503cbe75a5243a114f6fe1578185f..3f032a510e741d52c4c7fc701df65c77c30362ed 100644 +index dfd1f37757af1bd808cc2e2d8bf97123adf638bb..971e743cc99400681439de89252a29ee9de46188 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -230,7 +230,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -2623,7 +2625,7 @@ index 86a2eddf344503cbe75a5243a114f6fe1578185f..3f032a510e741d52c4c7fc701df65c77 return chunkMap.playerEntityTrackerTrackMaps[type.ordinal()].getObjectsInRange(MCUtil.getCoordinateKey(this)); } -@@ -3886,16 +3913,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3887,16 +3914,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -2649,7 +2651,7 @@ index 86a2eddf344503cbe75a5243a114f6fe1578185f..3f032a510e741d52c4c7fc701df65c77 double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -3903,14 +3932,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3904,14 +3933,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -2717,7 +2719,7 @@ index 86a2eddf344503cbe75a5243a114f6fe1578185f..3f032a510e741d52c4c7fc701df65c77 if (d2 >= axisalignedbb.minY) { flag1 = true; -@@ -3932,9 +4008,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3933,9 +4009,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { // CraftBukkit end } } @@ -2888,10 +2890,10 @@ index c770ee21b7b699522941f6a1584d532001c04082..9bce290eb0c2cfef4896a3f2076c80bf public boolean hasAttribute(Attribute attribute) { diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index afbb2acd27416c801af3d718850b82a170734cd3..aa6ea8a81421ff0046bd926dedcda50f9ee02d60 100644 +index 63c997ba5e7194218e844480419c6b59a4d26e9a..6492ed0cca1158d06d8a50ca9d1fca5288d8310b 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -68,6 +68,7 @@ public class AcquirePoi extends Behavior { +@@ -67,6 +67,7 @@ public class AcquirePoi extends Behavior { @Override protected void start(ServerLevel world, PathfinderMob entity, long time) { this.nextScheduledStart = time + 20L + (long)world.getRandom().nextInt(20); @@ -2917,10 +2919,10 @@ index 42d466f7f162943886078eba3db18f2dfc2d7bee..6c0dda1ce018ec6bb2ebb97147045fff } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index c77fad612ba99663af2ec4418e3c2d68752dc2c8..8229001df0a901d9016fb16e4ddc81b5a0f51452 100644 +index a910189177da0c1134c954b3d81b9e9bc4bc1420..0cc0d719e95e108263683b7a40f4ce3a8ca9465b 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -@@ -51,9 +51,12 @@ public class GoalSelector { +@@ -50,9 +50,12 @@ public class GoalSelector { } // Paper start @@ -3033,7 +3035,7 @@ index 78f1082b0a3bad923c1e142d15bc7dad2ae5ff15..042e852cd440e62003b5e72d92728e2d this.level.getProfiler().pop(); this.level.getProfiler().push("goatActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index 9ca37cbf829ff4240ae79fc283bcf9e7f2c728d2..820ddcbc1547e2b9da3475a13d039e0cd8bc2c2a 100644 +index 336d753bbd836e2a08207c5e3d41acbe2b72543f..dae989bf664b9ab29d13825d5fce32e19852259e 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java @@ -243,10 +243,16 @@ public class ItemEntity extends Entity { @@ -3890,10 +3892,10 @@ index b11ad90c0956ac1b8ee069fa3f4553a2b4ce88e9..d69fe40d3af983144999963ec25b3250 }); diff --git a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java -index 4814e719e0b898464692075170889fdb2729a26a..ffcd18fa852af3f24bdf5398f481b839d2dcfe6c 100644 +index 4cdfc433df67afcd455422e9baf56f167dd712ae..57fcf3910f45ce371ac2e237b277b1034caaac4e 100644 --- a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java +++ b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java -@@ -9,7 +9,7 @@ import javax.annotation.Nullable; +@@ -8,7 +8,7 @@ import javax.annotation.Nullable; import net.minecraft.world.entity.Entity; public class EntityTickList { @@ -4121,7 +4123,7 @@ index b1992ed5136cc7dcf04219868b94b3c37ae36b4b..5b5339cba819368f4d6b7eaf404fa59b @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 15278bb897e6169bc5d02bf47b455634baec7be1..f4a82b1f2dc26f938d3dcb23ec32f135a1bfd163 100644 +index ab843069ac0653d03cf3f925f49555016cad84fa..ce1ca033b351785fb67304b8933990d7f2f22d29 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -249,7 +249,7 @@ import javax.annotation.Nullable; // Paper @@ -4195,7 +4197,7 @@ index 909b2c98e7a9117d2f737245e4661792ffafb744..0d9e2b3728f9ab500bd5e44702718535 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 41e7ca100073052b99c82fa6a82f8168e0135499..7e06f263cf618b82f77101ef86d819d5dc37a24e 100644 +index 88abd2d3a9626501b1800ee754b98c6c29c75fb9..f71af7ecad4b6b0328da8cf8c4e5a8e163866e19 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -430,7 +430,7 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/patches/server/0002-Rebrand.patch b/patches/server/0002-Rebrand.patch index d3578a444..af6ee9e60 100644 --- a/patches/server/0002-Rebrand.patch +++ b/patches/server/0002-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 9521971e9e597834e785b36d1657064dc1621b9b..655f4d84a9522b7af5f3fd234d8797758d0171b5 100644 +index b04e9ab317fbce9c090b61076eb07c40f069dc59..50112767dff03bc3d9b3cc527e20f1b0d8df7155 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,7 @@ plugins { @@ -26,7 +26,7 @@ index 9521971e9e597834e785b36d1657064dc1621b9b..655f4d84a9522b7af5f3fd234d879775 // Pufferfish start implementation("org.yaml:snakeyaml:1.30") -@@ -78,7 +80,7 @@ tasks.jar { +@@ -80,7 +82,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -35,7 +35,7 @@ index 9521971e9e597834e785b36d1657064dc1621b9b..655f4d84a9522b7af5f3fd234d879775 "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -166,7 +168,7 @@ fun TaskContainer.registerRunTask( +@@ -168,7 +170,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -221,7 +221,7 @@ index 303b70f0433ff49a3bee2a0d92c41f01aec38bee..5e9fc979daced5dad9977ab12ea019f4 private static final int DEFAULT_SIZE_THRESHOLD = 1024 * 8; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index f4a82b1f2dc26f938d3dcb23ec32f135a1bfd163..a2af4e9b32f9ebfb97255437a7028df8613d0d95 100644 +index ce1ca033b351785fb67304b8933990d7f2f22d29..3dc9927eb159373fa2b66aecf9280e13b7542449 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -249,7 +249,7 @@ import javax.annotation.Nullable; // Paper @@ -234,7 +234,7 @@ index f4a82b1f2dc26f938d3dcb23ec32f135a1bfd163..a2af4e9b32f9ebfb97255437a7028df8 private final String bukkitVersion = Versioning.getBukkitVersion(); private final Logger logger = Logger.getLogger("Minecraft"); diff --git a/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java -index dbff1eda25b02b16ec123515338d470489f3b3c4..e8323ebe0fe877e880bacc5397404839a237052b 100644 +index db77cdee224d14ec91e8d530dd65da51f3661a9c..4b9039dc6e9a1da3f65ccbb36e6e86b09341a8b3 100644 --- a/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java +++ b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java @@ -21,7 +21,12 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co @@ -255,8 +255,8 @@ index dbff1eda25b02b16ec123515338d470489f3b3c4..e8323ebe0fe877e880bacc5397404839 // Paper start @Override public void sendMessage(final net.kyori.adventure.identity.Identity identity, final net.kyori.adventure.text.Component message, final net.kyori.adventure.audience.MessageType type) { -- this.sendRawMessage(io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.serialize(message)); -+ this.sendMessage(io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.serialize(message)); // Purpur +- this.sendRawMessage(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(message)); ++ this.sendMessage(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(message)); // Purpur } @Override @@ -287,7 +287,7 @@ index cdefb2025eedea7e204d70d568adaf1c1ec4c03c..d1526ed7197b883e1d1f07baf285bf5e // (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 7e06f263cf618b82f77101ef86d819d5dc37a24e..9d974b535c03ff06f7f01cdd17dc700e3a3f150e 100644 +index f71af7ecad4b6b0328da8cf8c4e5a8e163866e19..f5a490814268949894581b6caeedb53d7588a621 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -430,7 +430,7 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/patches/server/0003-Purpur-config-files.patch b/patches/server/0003-Purpur-config-files.patch index 035d6f93d..27e6b79f8 100644 --- a/patches/server/0003-Purpur-config-files.patch +++ b/patches/server/0003-Purpur-config-files.patch @@ -84,7 +84,7 @@ index db2c73390d846f6428546fe18b961147ac092ba2..a4a07a7cc9a33f01234e461aa3c19e1c io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // load mappings for stacktrace deobf and etc. io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 8026e8ca528071bf80fecb5e96370d1d2ae799db..f16e21045f3a6b8c0446c72825b463ee4dc1c24a 100644 +index b830c2199a22252116619520f407fd84eddb28f3..ba4a6579be392f26f2d89ec910918c4ccf2a2c91 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -164,6 +164,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -105,7 +105,7 @@ index 8026e8ca528071bf80fecb5e96370d1d2ae799db..f16e21045f3a6b8c0446c72825b463ee 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 a2af4e9b32f9ebfb97255437a7028df8613d0d95..283856f60d27dcd041b16f313c6119127f4aeea6 100644 +index 3dc9927eb159373fa2b66aecf9280e13b7542449..5635a18abc2e179cc9b011ec36462d152c2b2c6c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -956,6 +956,7 @@ public final class CraftServer implements Server { @@ -132,7 +132,7 @@ index a2af4e9b32f9ebfb97255437a7028df8613d0d95..283856f60d27dcd041b16f313c611912 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2706,6 +2709,18 @@ public final class CraftServer implements Server { +@@ -2712,6 +2715,18 @@ public final class CraftServer implements Server { return com.destroystokyo.paper.PaperConfig.config; } diff --git a/patches/server/0004-Purpur-client-support.patch b/patches/server/0004-Purpur-client-support.patch index 6129c5e04..e83c2cd2c 100644 --- a/patches/server/0004-Purpur-client-support.patch +++ b/patches/server/0004-Purpur-client-support.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 2f5e40437d1865a874c352999edd084226d4e47b..2dcb24145bf07b186b853bd3e4c4be46495575d8 100644 +index a6edf5117d4ae03d8294e7bb74dd2d77048895a5..46ddb309ee4296b9d3464e716b4b36ef8927261d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -253,6 +253,7 @@ public class ServerPlayer extends Player { @@ -17,10 +17,10 @@ index 2f5e40437d1865a874c352999edd084226d4e47b..2dcb24145bf07b186b853bd3e4c4be46 public double lastEntitySpawnRadiusSquared; // Paper - optimise isOutsideRange, this field is in blocks public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index f115aabaf67976a503a76f5213dd52b7b7dfab4e..add383d9a2b460f48c2d822d4907bb5a12743611 100644 +index 676f2cd4b152984aa76903fcf4377c745775bfc8..ee4b826cb5c680939b19c6ae2b5ae778a7cc4a55 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3185,6 +3185,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3186,6 +3186,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser private static final ResourceLocation CUSTOM_UNREGISTER = new ResourceLocation("unregister"); private static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support @@ -28,7 +28,7 @@ index f115aabaf67976a503a76f5213dd52b7b7dfab4e..add383d9a2b460f48c2d822d4907bb5a @Override public void handleCustomPayload(ServerboundCustomPayloadPacket packet) { -@@ -3209,6 +3210,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3210,6 +3211,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t unregister custom payload", ex); this.disconnect("Invalid payload UNREGISTER!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause } @@ -43,10 +43,10 @@ index f115aabaf67976a503a76f5213dd52b7b7dfab4e..add383d9a2b460f48c2d822d4907bb5a try { byte[] data = new byte[packet.data.readableBytes()]; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index f12efe51b14ed3637a8ba45def9c94634a6f5e8f..86aaebbd2f9220b8f98417404650f9c836088f47 100644 +index ce78e024244c14530270b8276e5b0fd853f0a110..9ea7691df5d19e4f7d65869af508e38280027467 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2791,4 +2791,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2797,4 +2797,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0005-Component-related-conveniences.patch b/patches/server/0005-Component-related-conveniences.patch index e00425841..fcc769f10 100644 --- a/patches/server/0005-Component-related-conveniences.patch +++ b/patches/server/0005-Component-related-conveniences.patch @@ -36,7 +36,7 @@ index 46ddb309ee4296b9d3464e716b4b36ef8927261d..23ef3a12dcd184edeaad3f939d2a9cbf public void displayClientMessage(Component message, boolean actionBar) { this.sendMessage(message, actionBar ? ChatType.GAME_INFO : ChatType.CHAT, Util.NIL_UUID); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 95fe4240f3e1174ec36598f24d63f0073c13b376..563999906b3f8a79e9bd090cb13d946577a4781b 100644 +index 624946f48f0811c94d05174f28d0b1fc6d5e6a00..9f5ff0455fe4217737169e442f4786cba951f253 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1384,6 +1384,62 @@ public abstract class PlayerList { @@ -123,10 +123,10 @@ index a828cad27fcd39f8bfbaefa97052a2a3b6650ee7..67e559d63c543ff716d610cb04ff9426 return this.isFireSource; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3f032a510e741d52c4c7fc701df65c77c30362ed..bc46286007e5a6dd691dd51ec43f99fe5c974db8 100644 +index 971e743cc99400681439de89252a29ee9de46188..dc332cf2d035530c600b1213efe7f0f87b7b5808 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3676,6 +3676,34 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3677,6 +3677,34 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return SlotAccess.NULL; } diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 662b3ccf0..101809046 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/net/minecraft/core/BlockPos.java b/src/main/java/net/minecraft/core/BlockPos.java -index 8c79f66abd42e9c9875e8877c6dd82b5e3cfa184..2841469748bc308f690aaeb34fe05cb25f36a33d 100644 +index 2808acafaa0e3b448e75c40c04ba932ef9723da9..fda35ae6da0b4afbff90a9356ef63dd38c8a0d95 100644 --- a/src/main/java/net/minecraft/core/BlockPos.java +++ b/src/main/java/net/minecraft/core/BlockPos.java @@ -41,6 +41,12 @@ public class BlockPos extends Vec3i { @@ -66,10 +66,10 @@ index 23ef3a12dcd184edeaad3f939d2a9cbffa7fd35e..923a0afad1b2b14941c94332b373a704 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 add383d9a2b460f48c2d822d4907bb5a12743611..5a8eabd6d7d3457f2b6602f2535747d7d2c54d52 100644 +index ee4b826cb5c680939b19c6ae2b5ae778a7cc4a55..fe1bcca1af2bcb9e19a01ddd5cd5a8bb3789f7aa 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2475,6 +2475,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -2476,6 +2476,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -79,7 +79,7 @@ index add383d9a2b460f48c2d822d4907bb5a12743611..5a8eabd6d7d3457f2b6602f2535747d7 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 ClientboundAddMobPacket((LivingEntity) entity)); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index bc46286007e5a6dd691dd51ec43f99fe5c974db8..b2f4428cb8af9fc2168e326acf046b6d68f2a597 100644 +index dc332cf2d035530c600b1213efe7f0f87b7b5808..8c950832f4f0d8ae1d04a194da8f6950be63a87d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -300,7 +300,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -91,7 +91,7 @@ index bc46286007e5a6dd691dd51ec43f99fe5c974db8..b2f4428cb8af9fc2168e326acf046b6d private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -2666,6 +2666,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2667,6 +2667,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.passengers = ImmutableList.copyOf(list); } @@ -104,7 +104,7 @@ index bc46286007e5a6dd691dd51ec43f99fe5c974db8..b2f4428cb8af9fc2168e326acf046b6d } return true; // CraftBukkit } -@@ -2706,6 +2712,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2707,6 +2713,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return false; } // Spigot end @@ -119,7 +119,7 @@ index bc46286007e5a6dd691dd51ec43f99fe5c974db8..b2f4428cb8af9fc2168e326acf046b6d if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4434,4 +4448,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4435,4 +4449,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return ((ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end diff --git a/patches/server/0011-AFK-API.patch b/patches/server/0011-AFK-API.patch index 00c423ea7..0ac120658 100644 --- a/patches/server/0011-AFK-API.patch +++ b/patches/server/0011-AFK-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 38995873e2b4cf9e7ac83d074c817a0452948250..38c2e2b4e6577dd6db84b86147a6f0c5bd0b8879 100644 +index 923a0afad1b2b14941c94332b373a704c32160a8..4f6aa9caaa471ecbeaff895508d3874577dbe5cd 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1974,8 +1974,58 @@ public class ServerPlayer extends Player { @@ -68,7 +68,7 @@ index 38995873e2b4cf9e7ac83d074c817a0452948250..38c2e2b4e6577dd6db84b86147a6f0c5 return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a2c349175ddcbec725073d746f55fc7f3d83216f..1d61e34b1cc032089dbd715814553e59ebc8ce5c 100644 +index fe1bcca1af2bcb9e19a01ddd5cd5a8bb3789f7aa..974a94086c06cceffff3be2e0fa702967ef11d56 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -292,6 +292,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -114,7 +114,7 @@ index a2c349175ddcbec725073d746f55fc7f3d83216f..1d61e34b1cc032089dbd715814553e59 // Skip the first time we do this if (true) { // Spigot - don't skip any move events Location oldTo = to.clone(); -@@ -1448,7 +1470,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1449,7 +1471,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser if (!this.player.isChangingDimension() && d11 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.gameMode.isCreative() && this.player.gameMode.getGameModeForPlayer() != GameType.SPECTATOR) { // Spigot flag2 = true; // Paper - diff on change, this should be moved wrongly @@ -123,7 +123,7 @@ index a2c349175ddcbec725073d746f55fc7f3d83216f..1d61e34b1cc032089dbd715814553e59 } this.player.absMoveTo(d0, d1, d2, f, f1); -@@ -1498,6 +1520,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1499,6 +1521,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -200,10 +200,10 @@ index e13b2b88e427aba1c4e6a924f4c8474d60976eb1..0228eb3bd816c35fcf4607f0a140b1e6 public boolean processClick(InteractionHand hand) { Entity vehicle = getRootVehicle(); diff --git a/src/main/java/net/minecraft/world/level/EntityGetter.java b/src/main/java/net/minecraft/world/level/EntityGetter.java -index 1f4b72a0aca200b2e0860449c718e6e607d2fc47..e1dd8932594780b07db13f68efa117eb34b6563f 100644 +index 3f458ddd4dc04ed28510a212be76bb19e7f6a61e..a36469186f72eccf8c4428d920d0583bf57b087e 100644 --- a/src/main/java/net/minecraft/world/level/EntityGetter.java +++ b/src/main/java/net/minecraft/world/level/EntityGetter.java -@@ -157,7 +157,7 @@ public interface EntityGetter { +@@ -156,7 +156,7 @@ public interface EntityGetter { default boolean hasNearbyAlivePlayer(double x, double y, double z, double range) { for(Player player : this.players()) { @@ -213,7 +213,7 @@ index 1f4b72a0aca200b2e0860449c718e6e607d2fc47..e1dd8932594780b07db13f68efa117eb if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c0c2ac8bbeb4fc33fc62955de838cf67d9827022..e9c3768ef277fc88db4d5660e241ec7ef8e770c4 100644 +index 9ea7691df5d19e4f7d65869af508e38280027467..796eb59a14ace2918e0fd88b43b56b275221d6fc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -445,10 +445,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -233,7 +233,7 @@ index c0c2ac8bbeb4fc33fc62955de838cf67d9827022..e9c3768ef277fc88db4d5660e241ec7e for (ServerPlayer player : (List) server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -2797,5 +2802,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2803,5 +2808,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } @@ -305,7 +305,7 @@ index c38d9583d8ce50670d78b60d92c90d1d5eb4bbfc..01a2d17790b3adbc63fe742b9e5c11dd public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 9bccf9ae5f7a38eb5792697700f6d17cd5969cbe..06467a5af27a9afeba383c4f9704f5106827af97 100644 +index 8643df8d81714edf60eebd6984bac2c933d1fbd6..4e5583cdd78608108bb1788e6881d4b4fbf014af 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -203,6 +203,7 @@ public class ActivationRange diff --git a/patches/server/0012-Bring-back-server-name.patch b/patches/server/0012-Bring-back-server-name.patch index bcf79e145..6cdb0931f 100644 --- a/patches/server/0012-Bring-back-server-name.patch +++ b/patches/server/0012-Bring-back-server-name.patch @@ -17,10 +17,10 @@ index ebfaa8d5de5b905bd2dd7778728b8c9939d01252..8153f1aa510474d2f831799a1c149558 public final boolean spawnNpcs = this.get("spawn-npcs", true); public final boolean pvp = this.get("pvp", true); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 283856f60d27dcd041b16f313c6119127f4aeea6..a6f170413a486efb2d48af55604b130782f4f157 100644 +index 5635a18abc2e179cc9b011ec36462d152c2b2c6c..65953aa80c0263e30d05528204c1ee8839bb9659 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2893,4 +2893,11 @@ public final class CraftServer implements Server { +@@ -2899,4 +2899,11 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0015-Lagging-threshold.patch b/patches/server/0015-Lagging-threshold.patch index c9f827bbc..3df74dd76 100644 --- a/patches/server/0015-Lagging-threshold.patch +++ b/patches/server/0015-Lagging-threshold.patch @@ -25,10 +25,10 @@ index 8e7f73cfdc4dd86babe6a17fe06c80a011f20d90..f4d9170b11ba4eab8763261bf4fd0288 } // Spigot end diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index a6f170413a486efb2d48af55604b130782f4f157..b62e5ce31a0a259e2abd96252598f91935ef6c4a 100644 +index 65953aa80c0263e30d05528204c1ee8839bb9659..186ec54fea65f3fa9dea3fd3542c772f546c8cb7 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2899,5 +2899,10 @@ public final class CraftServer implements Server { +@@ -2905,5 +2905,10 @@ public final class CraftServer implements Server { public String getServerName() { return this.getProperties().serverName; } diff --git a/patches/server/0018-Player-invulnerabilities.patch b/patches/server/0018-Player-invulnerabilities.patch index 054550f27..8e563d304 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 11ad98d35e33ba2465876c222288d047ab5189f1..3c42c1d0c9542f8ce058cd2bfc931f53ad0a82e8 100644 +index 4f6aa9caaa471ecbeaff895508d3874577dbe5cd..46f536d45470da1af7cae8eb6524ad5e86f1b4b3 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -254,6 +254,7 @@ public class ServerPlayer extends Player { @@ -82,10 +82,10 @@ index 11ad98d35e33ba2465876c222288d047ab5189f1..3c42c1d0c9542f8ce058cd2bfc931f53 public Scoreboard getScoreboard() { return this.getBukkitEntity().getScoreboard().getHandle(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 1d61e34b1cc032089dbd715814553e59ebc8ce5c..763874b78363d75f8c386cff3cf48c93920957d1 100644 +index 974a94086c06cceffff3be2e0fa702967ef11d56..d9e4a2c56820ea6de0d31721e1796ea7165cb256 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1983,12 +1983,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1984,12 +1984,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @Override public void handleResourcePackResponse(ServerboundResourcePackPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel()); @@ -108,7 +108,7 @@ index 1d61e34b1cc032089dbd715814553e59ebc8ce5c..763874b78363d75f8c386cff3cf48c93 this.cserver.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(this.getCraftPlayer(), packStatus)); // CraftBukkit // Paper end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 631472b43ac25337a05184d096e7bc97f47ce9e6..2606c339f5c24e9f73c6270669fb3d2ac4d41c1c 100644 +index f126020b99c2dc32fd2e34e1fd7ae6bc9872e67f..c5be8e891534cc41e3b530f303f18d88cf5340cc 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1004,6 +1004,8 @@ public abstract class PlayerList { @@ -121,10 +121,10 @@ index 631472b43ac25337a05184d096e7bc97f47ce9e6..2606c339f5c24e9f73c6270669fb3d2a return entityplayer1; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e7d454da116261f24341391e6933aaedd26a4a18..29e12552745000fbfa1cee6668a5bf039f918f6f 100644 +index 796eb59a14ace2918e0fd88b43b56b275221d6fc..2cd475ac88b3d28aa918ca7f8599a70a5b5c2ea4 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2817,5 +2817,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2823,5 +2823,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0021-Alternative-Keepalive-Handling.patch b/patches/server/0021-Alternative-Keepalive-Handling.patch index 53c238eb3..5ec39455d 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 3518e5748e6f380eb53abc29a9483f58278c44ec..1de6fceb8b0e04162a320d4ae6bcb150329fc0b4 100644 +index d9e4a2c56820ea6de0d31721e1796ea7165cb256..1c380b6954edb6806a1b3bfc66e1b6a19c0fd219 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -227,6 +227,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -38,7 +38,7 @@ index 3518e5748e6f380eb53abc29a9483f58278c44ec..1de6fceb8b0e04162a320d4ae6bcb150 if (this.keepAlivePending) { if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info -@@ -3170,6 +3186,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3171,6 +3187,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { diff --git a/patches/server/0022-Silk-touch-spawners.patch b/patches/server/0022-Silk-touch-spawners.patch index 6882d23a8..4c3eda1c8 100644 --- a/patches/server/0022-Silk-touch-spawners.patch +++ b/patches/server/0022-Silk-touch-spawners.patch @@ -4,18 +4,6 @@ Date: Thu, 9 May 2019 14:27:37 -0500 Subject: [PATCH] Silk touch spawners -diff --git a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java -index 85c9056f92711b985e251f0f06ed551d03deb562..c540694e24978e9e6119267d4f66df52bde02fd2 100644 ---- a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java -+++ b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java -@@ -92,6 +92,7 @@ public final class PaperAdventure { - }) - .build(); - public static final LegacyComponentSerializer LEGACY_SECTION_UXRC = LegacyComponentSerializer.builder().flattener(FLATTENER).hexColors().useUnusualXRepeatedCharacterHexFormat().build(); -+ public static final LegacyComponentSerializer LEGACY_AMPERSAND = LegacyComponentSerializer.builder().character(LegacyComponentSerializer.AMPERSAND_CHAR).hexColors().build(); // Purpur - @Deprecated - public static final PlainComponentSerializer PLAIN_COMPONENT = PlainComponentSerializer.builder().flattener(FLATTENER).build(); - public static final PlainTextComponentSerializer PLAIN = PlainTextComponentSerializer.builder().flattener(FLATTENER).build(); diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java index 20444c6887cbdd444b23bf018a6d63f22359e5e7..85329295afacad3edb6865846166aa56ebae0ed2 100644 --- a/src/main/java/net/minecraft/world/item/Items.java diff --git a/patches/server/0049-Fix-the-dead-lagging-the-server.patch b/patches/server/0049-Fix-the-dead-lagging-the-server.patch index f8aecba38..3bd4df8a4 100644 --- a/patches/server/0049-Fix-the-dead-lagging-the-server.patch +++ b/patches/server/0049-Fix-the-dead-lagging-the-server.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix the dead lagging the server diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0acb905e37d3413cb9d073e71cc31d8a5c2cd047..4381689462d96179919da0f49a7705bcb8371804 100644 +index a32f0d6cc0c411fe7de7f29cf3679e122b3a016e..64d8844ebbe2c81bd41022c66bfc8859c5d22709 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1775,6 +1775,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1776,6 +1776,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.yRotO = this.getYRot(); this.xRotO = this.getXRot(); this.setYHeadRot(yaw); // Paper - Update head rotation @@ -17,7 +17,7 @@ index 0acb905e37d3413cb9d073e71cc31d8a5c2cd047..4381689462d96179919da0f49a7705bc public void absMoveTo(double x, double y, double z) { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 292744702aef86b99cea45a161e9696f9ec1a608..d92c4f31ec200db20f11f7613c37799a31dfc896 100644 +index 5116710b3d546ad6e9b5e898060675ba46bdcc78..751634a63b5ecee4ba874b84c52bafdeefa1c65b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2942,7 +2942,7 @@ public abstract class LivingEntity extends Entity { diff --git a/patches/server/0061-Configurable-void-damage-height-and-damage.patch b/patches/server/0061-Configurable-void-damage-height-and-damage.patch index bc24d2f08..6f8009749 100644 --- a/patches/server/0061-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0061-Configurable-void-damage-height-and-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable void damage height and damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4381689462d96179919da0f49a7705bcb8371804..e1f161c3ebcf7eb1eb5903144e88c411c9234fbf 100644 +index 64d8844ebbe2c81bd41022c66bfc8859c5d22709..6f174641fc5571b980d2622e4c3af801c6602fe1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -820,7 +820,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -821,7 +821,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public void checkOutOfWorld() { // Paper start - Configurable nether ceiling damage @@ -18,7 +18,7 @@ index 4381689462d96179919da0f49a7705bcb8371804..e1f161c3ebcf7eb1eb5903144e88c411 && this.getY() >= this.level.paperConfig.netherVoidTopDamageHeight)) { // Paper end diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d92c4f31ec200db20f11f7613c37799a31dfc896..667827901c5b8479ebbbc89c25eec222e4906e7d 100644 +index 751634a63b5ecee4ba874b84c52bafdeefa1c65b..c5988a53727cf82cf9bd4cde0b86e9fe0074cef1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2434,7 +2434,7 @@ public abstract class LivingEntity extends Entity { diff --git a/patches/server/0062-Add-canSaveToDisk-to-Entity.patch b/patches/server/0062-Add-canSaveToDisk-to-Entity.patch index 69b3ce7be..a8b8eac43 100644 --- a/patches/server/0062-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0062-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 025b68d3ae831127f92005d4c84d1d33a54af6da..efac87c553177da32e672e202a25d654d3937c2b 100644 +index 6f174641fc5571b980d2622e4c3af801c6602fe1..0619f78da6da86c06336927c346ea52c6470bdf7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4489,5 +4489,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4490,5 +4490,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public boolean processClick(InteractionHand hand) { return false; } diff --git a/patches/server/0065-Mending-mends-most-damages-equipment-first.patch b/patches/server/0065-Mending-mends-most-damages-equipment-first.patch index 8f342ceab..8423d6984 100644 --- a/patches/server/0065-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0065-Mending-mends-most-damages-equipment-first.patch @@ -18,7 +18,7 @@ index 4848f26a006f4d4df620ded526134b3b39e90d29..37fe86f0f6ea006f658cd6a68757c1c1 if (entry != null) { ItemStack itemstack = (ItemStack) entry.getValue(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index dc4639f905fb71435daf29c61f64621a3e2cc533..d1183ab1a0d0d6a973bde1640c34cc884f81e167 100644 +index 6837c965592d4584cfc958a1008b98791a0fc780..4da450d1289c12356b24a81f267ba136983a2d20 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -523,6 +523,16 @@ public final class ItemStack { @@ -39,23 +39,23 @@ index dc4639f905fb71435daf29c61f64621a3e2cc533..d1183ab1a0d0d6a973bde1640c34cc88 return this.tag == null ? 0 : this.tag.getInt("Damage"); } diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -index 3a09ce6d0ea51436adcae4719d3f28d1868c283c..b3292c67658659cd3cf5117d70e20921db3a1e21 100644 +index 7b39eaf66eb74cab7caf9588947e9d5860a0ffd8..5422b68674b34d015c94194a974726ea67d07e49 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -270,6 +270,29 @@ public class EnchantmentHelper { +@@ -269,6 +269,29 @@ public class EnchantmentHelper { return getItemEnchantmentLevel(Enchantments.CHANNELING, stack) > 0; } + // Purpur start + @Nullable -+ public static Entry getMostDamagedEquipment(Enchantment enchantment, LivingEntity entity) { ++ public static Map.Entry getMostDamagedEquipment(Enchantment enchantment, LivingEntity entity) { + Map map = enchantment.getSlotItems(entity); + if (map.isEmpty()) { + return null; + } -+ Entry item = null; ++ Map.Entry item = null; + float maxPercent = 0F; -+ for (Entry entry : map.entrySet()) { ++ for (Map.Entry entry : map.entrySet()) { + ItemStack itemstack = entry.getValue(); + if (!itemstack.isEmpty() && itemstack.isDamaged() && getItemEnchantmentLevel(enchantment, itemstack) > 0) { + float percent = itemstack.getDamagePercent(); @@ -70,7 +70,7 @@ index 3a09ce6d0ea51436adcae4719d3f28d1868c283c..b3292c67658659cd3cf5117d70e20921 + // Purpur end + @Nullable - public static Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { + public static Map.Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { return getRandomItemWith(enchantment, entity, (stack) -> { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index ecfbe1bbd192649095945ba13039d53d23ac2ca8..60896b00f50501ddcaa71e1e16b59d22f78a983c 100644 diff --git a/patches/server/0066-Add-5-second-tps-average-in-tps.patch b/patches/server/0066-Add-5-second-tps-average-in-tps.patch index 3e344f529..aa6675838 100644 --- a/patches/server/0066-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0066-Add-5-second-tps-average-in-tps.patch @@ -69,10 +69,10 @@ index 4395d8260c4ca727515d9c907cb79da2d36642b2..d011944a64c4e61b7285325a37ab05a5 lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur tickSection = curTime; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index b62e5ce31a0a259e2abd96252598f91935ef6c4a..137c90bd9df8c8f28d5b61b1ad12bebd7613de34 100644 +index 186ec54fea65f3fa9dea3fd3542c772f546c8cb7..3baf2b11c567f5ca235b638e54759494ffc86673 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2663,6 +2663,7 @@ public final class CraftServer implements Server { +@@ -2669,6 +2669,7 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { return new double[] { diff --git a/patches/server/0076-Implement-respawn-anchor-explosion-options.patch b/patches/server/0076-Implement-respawn-anchor-explosion-options.patch index ac106e10e..291f26f46 100644 --- a/patches/server/0076-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0076-Implement-respawn-anchor-explosion-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement respawn anchor explosion options diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -index 3770313892b6e9b9ab6f9fcc200dfc0b4972e516..c763b9eb6ca981f89f0868408273d78146a42748 100644 +index 491ad2098e982f3c947fcae6f258f0b1aa44a562..39b3d9ce9fbaa7854d81b304f22ee1935c62d3f3 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -@@ -125,7 +125,7 @@ public class RespawnAnchorBlock extends Block { +@@ -124,7 +124,7 @@ public class RespawnAnchorBlock extends Block { return pos.equals(explodedPos) && bl2 ? Optional.of(Blocks.WATER.getExplosionResistance()) : super.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState); } }; diff --git a/patches/server/0078-Allow-color-codes-in-books.patch b/patches/server/0078-Allow-color-codes-in-books.patch index 9e496b1eb..64eec9a26 100644 --- a/patches/server/0078-Allow-color-codes-in-books.patch +++ b/patches/server/0078-Allow-color-codes-in-books.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 97de6385d09e561f24fd4b80aa53c61829aa4d59..4a997a60baa9051f037b67ad60c09fb532b76114 100644 +index 1c380b6954edb6806a1b3bfc66e1b6a19c0fd219..bab75482e1be354f66ef34144d15e628fb118309 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1240,13 +1240,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1241,13 +1241,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser itemstack1.setTag(nbttagcompound.copy()); } @@ -28,7 +28,7 @@ index 97de6385d09e561f24fd4b80aa53c61829aa4d59..4a997a60baa9051f037b67ad60c09fb5 this.updateBookPages(pages, (s) -> { return Component.Serializer.toJson(new TextComponent(s)); -@@ -1258,10 +1261,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1259,10 +1262,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser private void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit ListTag nbttaglist = new ListTag(); @@ -44,7 +44,7 @@ index 97de6385d09e561f24fd4b80aa53c61829aa4d59..4a997a60baa9051f037b67ad60c09fb5 Objects.requireNonNull(nbttaglist); stream.forEach(nbttaglist::add); -@@ -1271,10 +1277,10 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1272,10 +1278,10 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser for (int j = list.size(); i < j; ++i) { TextFilter.FilteredText itextfilter_a = (TextFilter.FilteredText) list.get(i); @@ -57,7 +57,7 @@ index 97de6385d09e561f24fd4b80aa53c61829aa4d59..4a997a60baa9051f037b67ad60c09fb5 if (!s.equals(s1)) { nbttagcompound.putString(String.valueOf(i), (String) unaryoperator.apply(s1)); -@@ -1290,6 +1296,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1291,6 +1297,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } diff --git a/patches/server/0079-Entity-lifespan.patch b/patches/server/0079-Entity-lifespan.patch index 2d4e35f68..d0c1a5bd9 100644 --- a/patches/server/0079-Entity-lifespan.patch +++ b/patches/server/0079-Entity-lifespan.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 55411e920b937ebc9f1c8d4d541a381fb8389689..29e85a8a8f0b21ad4d67a47053945286d24241ed 100644 +index bab75482e1be354f66ef34144d15e628fb118309..0a7d748e0279a1fd7bb97051732ea1843510087b 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2530,6 +2530,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -2531,6 +2531,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser double d0 = 36.0D; if (this.player.distanceToSqr(entity) < 36.0D) { diff --git a/patches/server/0089-Allow-anvil-colors.patch b/patches/server/0089-Allow-anvil-colors.patch index 37f565d01..3cff6d843 100644 --- a/patches/server/0089-Allow-anvil-colors.patch +++ b/patches/server/0089-Allow-anvil-colors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow anvil colors diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index a88efd9b435349ae00c4152f09d87ebf4f724659..75e1f6b593a23c88f34cc25db580930066bfb7bb 100644 +index a88efd9b435349ae00c4152f09d87ebf4f724659..c26b3f3aec680a92c1361f47b1aa3968f31ffaa5 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -3,6 +3,9 @@ package net.minecraft.world.inventory; @@ -26,9 +26,9 @@ index a88efd9b435349ae00c4152f09d87ebf4f724659..75e1f6b593a23c88f34cc25db5809300 + if (player != null && player.level.purpurConfig.anvilAllowColors && player.getBukkitEntity().hasPermission("purpur.anvil.color")) { + final net.kyori.adventure.text.Component renameTextComponent; + if (itemName.startsWith("&r") && player.getBukkitEntity().hasPermission("purpur.anvil.remove_italics")) { -+ renameTextComponent = PaperAdventure.LEGACY_AMPERSAND.deserialize(itemName.substring(2)).decoration(TextDecoration.ITALIC, false); ++ renameTextComponent = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().deserialize(itemName.substring(2)).decoration(TextDecoration.ITALIC, false); + } else { -+ renameTextComponent = PaperAdventure.LEGACY_AMPERSAND.deserialize(itemName); ++ renameTextComponent = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().deserialize(itemName); + } + itemstack1.setHoverName(PaperAdventure.asVanilla(renameTextComponent)); + } else diff --git a/patches/server/0092-Stop-squids-floating-on-top-of-water.patch b/patches/server/0092-Stop-squids-floating-on-top-of-water.patch index 86a59d652..5211e5f3a 100644 --- a/patches/server/0092-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0092-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index efac87c553177da32e672e202a25d654d3937c2b..803d53230f28481b5236f8f095b9148af20f15de 100644 +index 0619f78da6da86c06336927c346ea52c6470bdf7..4c93f8116077ccd6bd869e7285196b27f3d6e827 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3955,6 +3955,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3956,6 +3956,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.yRotO = this.getYRot(); } diff --git a/patches/server/0094-Entities-can-use-portals-configuration.patch b/patches/server/0094-Entities-can-use-portals-configuration.patch index ef4c4d32b..86abc3f95 100644 --- a/patches/server/0094-Entities-can-use-portals-configuration.patch +++ b/patches/server/0094-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 803d53230f28481b5236f8f095b9148af20f15de..57e7b9805dffe3e080172dd0e1c71db1114c6448 100644 +index 4c93f8116077ccd6bd869e7285196b27f3d6e827..f8f8a292cea4becc6837e47491fb3b89959aba20 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2778,7 +2778,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2779,7 +2779,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 803d53230f28481b5236f8f095b9148af20f15de..57e7b9805dffe3e080172dd0e1c71db1 if (!this.level.isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3444,7 +3444,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3445,7 +3445,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean canChangeDimensions() { diff --git a/patches/server/0104-Stonecutter-damage.patch b/patches/server/0104-Stonecutter-damage.patch index abfee9638..cc724ccbc 100644 --- a/patches/server/0104-Stonecutter-damage.patch +++ b/patches/server/0104-Stonecutter-damage.patch @@ -24,10 +24,10 @@ index 67e559d63c543ff716d610cb04ff9426cc20ae00..9125deb86b856bcb5e1cd779773522e2 private boolean bypassArmor; private boolean bypassInvul; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 57e7b9805dffe3e080172dd0e1c71db1114c6448..218c74e65f9a15943993d5c44e170ed2664e0d0a 100644 +index f8f8a292cea4becc6837e47491fb3b89959aba20..8477b106e7f30711234ac45a26f813753c5bb9f9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1071,7 +1071,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1072,7 +1072,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } // CraftBukkit end diff --git a/patches/server/0122-Spread-out-and-optimise-player-list-ticksSpread-out-.patch b/patches/server/0122-Spread-out-and-optimise-player-list-ticksSpread-out-.patch index 7c870b177..d221647aa 100644 --- a/patches/server/0122-Spread-out-and-optimise-player-list-ticksSpread-out-.patch +++ b/patches/server/0122-Spread-out-and-optimise-player-list-ticksSpread-out-.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Spread out and optimise player list ticksSpread out and diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 24934362a424365c0c17ad15cb70288cc0f07fe4..441599f0078f99498aa409d500518366be18bade 100644 +index b90138f95ad0cdeda2ed6e9a881f01c7b22dd3f2..ed4e4de5f4e303a8fe1c64040c65ab24c2f7e4d6 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1018,22 +1018,22 @@ public abstract class PlayerList { @@ -46,10 +46,10 @@ index 24934362a424365c0c17ad15cb70288cc0f07fe4..441599f0078f99498aa409d500518366 public void broadcastAll(Packet packet) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4f007dce3f4f7cf19d8e38b46435c762813c6c43..0b73c96483ec6e901c913641835c38a9546dc3b0 100644 +index 2cd475ac88b3d28aa918ca7f8599a70a5b5c2ea4..365358ef910594980f0126a4300a40bb2293e03c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1731,7 +1731,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1737,7 +1737,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public boolean canSee(org.bukkit.entity.Entity entity) { diff --git a/patches/server/0129-PlayerBookTooLargeEvent.patch b/patches/server/0129-PlayerBookTooLargeEvent.patch index 0acbf984f..b1278e004 100644 --- a/patches/server/0129-PlayerBookTooLargeEvent.patch +++ b/patches/server/0129-PlayerBookTooLargeEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 06c02aa50d3ece744678ba99c21237b02c0a8aca..8620dbcdc25be8f94535181f0297a2c70ae58bda 100644 +index 0a7d748e0279a1fd7bb97051732ea1843510087b..e01afeb407acb8cf865d2d223aefaf15b634c94d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1162,10 +1162,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1163,10 +1163,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser int maxBookPageSize = com.destroystokyo.paper.PaperConfig.maxBookPageSize; double multiplier = Math.max(0.3D, Math.min(1D, com.destroystokyo.paper.PaperConfig.maxBookTotalSizeMultiplier)); long byteAllowed = maxBookPageSize; @@ -21,7 +21,7 @@ index 06c02aa50d3ece744678ba99c21237b02c0a8aca..8620dbcdc25be8f94535181f0297a2c7 server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1189,6 +1191,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1190,6 +1192,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/server/0131-Fix-rotating-UP-DOWN-CW-and-CCW.patch b/patches/server/0131-Fix-rotating-UP-DOWN-CW-and-CCW.patch index b962566bc..a105bee7d 100644 --- a/patches/server/0131-Fix-rotating-UP-DOWN-CW-and-CCW.patch +++ b/patches/server/0131-Fix-rotating-UP-DOWN-CW-and-CCW.patch @@ -5,32 +5,32 @@ Subject: [PATCH] Fix rotating UP/DOWN CW and CCW diff --git a/src/main/java/net/minecraft/core/Direction.java b/src/main/java/net/minecraft/core/Direction.java -index 6d883db5c04cbcf454952c0f361029ecbfe4f037..8aeec2132138bf4b19a9042340c8784df4afda65 100644 +index 6b71d9433846eb4464177f09d7bfdea82200b189..050a2e157b61a9ae86fa86f231d16ee3f2634db0 100644 --- a/src/main/java/net/minecraft/core/Direction.java +++ b/src/main/java/net/minecraft/core/Direction.java @@ -247,6 +247,12 @@ public enum Direction implements StringRepresentable { - case EAST: - var10000 = SOUTH; - break; + case EAST: + var10000 = SOUTH; + break; + // Purpur start + case UP: + return UP; + case DOWN: + return DOWN; + // Purpur end - default: - throw new IllegalStateException("Unable to get Y-rotated facing of " + this); + default: + throw new IllegalStateException("Unable to get Y-rotated facing of " + this); } @@ -359,6 +365,12 @@ public enum Direction implements StringRepresentable { - case EAST: - var10000 = NORTH; - break; + case EAST: + var10000 = NORTH; + break; + // Purpur start + case UP: + return UP; + case DOWN: + return DOWN; + // Purpur end - default: - throw new IllegalStateException("Unable to get CCW facing of " + this); + default: + throw new IllegalStateException("Unable to get CCW facing of " + this); } diff --git a/patches/server/0134-Add-EntityTeleportHinderedEvent.patch b/patches/server/0134-Add-EntityTeleportHinderedEvent.patch index e1279b2a3..c3f196b3f 100644 --- a/patches/server/0134-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0134-Add-EntityTeleportHinderedEvent.patch @@ -93,10 +93,10 @@ index 318456621faf484dbad479b2873ae647e0c0f037..83c8889137e566322ec4337b0e6d8b94 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 0b73c96483ec6e901c913641835c38a9546dc3b0..4eef838dd00d69bb27d5ffff8ad5e04a0dfff4f5 100644 +index 365358ef910594980f0126a4300a40bb2293e03c..bb0d196dc2e2ff6a2ccfda8b55a04fd6eaad0a97 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1148,6 +1148,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1154,6 +1154,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle()) { diff --git a/patches/server/0136-Movement-options-for-armor-stands.patch b/patches/server/0136-Movement-options-for-armor-stands.patch index faa673ad7..aef2f03a1 100644 --- a/patches/server/0136-Movement-options-for-armor-stands.patch +++ b/patches/server/0136-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a48a12b7952e41c98b253fcfbe2f12174251e924..213dc23771b85da8db6825c4ba5463abe42f690c 100644 +index 8477b106e7f30711234ac45a26f813753c5bb9f9..ab287a326302d670f0aeabf016b69aed6a43c21b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1635,7 +1635,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1636,7 +1636,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return this.isInWater() || flag; } diff --git a/patches/server/0137-Fix-stuck-in-portals.patch b/patches/server/0137-Fix-stuck-in-portals.patch index b3b88e15f..5ffa89826 100644 --- a/patches/server/0137-Fix-stuck-in-portals.patch +++ b/patches/server/0137-Fix-stuck-in-portals.patch @@ -17,10 +17,10 @@ index 4b0a0f18708c887ea339f078aea4c988b222ce0c..49adcc516e880c9d1a4926115c0f6fc0 // CraftBukkit end this.setLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8231588f26eb8c02bf287a0962d28299fb54ee0f..e4e46b553972ca1fc791a8a174d6b6c7ef2be48c 100644 +index ab287a326302d670f0aeabf016b69aed6a43c21b..78889c65692ab9632e31bef986307663bdb7dc8f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2775,12 +2775,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2776,12 +2776,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0142-Dont-run-with-scissors.patch b/patches/server/0142-Dont-run-with-scissors.patch index 6682296e2..48a95bcc8 100644 --- a/patches/server/0142-Dont-run-with-scissors.patch +++ b/patches/server/0142-Dont-run-with-scissors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 1d6c0ef4c4158e82f65dece41cd8d4c2cc9766ff..47f61bcd82cd1ece349a907d6e90331182643fa0 100644 +index e01afeb407acb8cf865d2d223aefaf15b634c94d..d1ff93ffb591bb7c5a905c4794d19e0dd179346e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1596,6 +1596,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1597,6 +1597,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.player.resetFallDistance(); } @@ -22,7 +22,7 @@ index 1d6c0ef4c4158e82f65dece41cd8d4c2cc9766ff..47f61bcd82cd1ece349a907d6e903311 this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1629,6 +1636,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1630,6 +1637,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser } // Paper end - optimise out extra getCubes diff --git a/patches/server/0158-Drowning-Settings.patch b/patches/server/0158-Drowning-Settings.patch index 58c4642ce..91e2d4b1a 100644 --- a/patches/server/0158-Drowning-Settings.patch +++ b/patches/server/0158-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 e4e46b553972ca1fc791a8a174d6b6c7ef2be48c..6eb3855e8db875a46017fdb963174e681c497f43 100644 +index 78889c65692ab9632e31bef986307663bdb7dc8f..0ba10e9a18b84c29d401482a77cdec6bd31b27c2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3009,7 +3009,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3010,7 +3010,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public int getMaxAirSupply() { diff --git a/patches/server/0159-Break-individual-slabs-when-sneaking.patch b/patches/server/0159-Break-individual-slabs-when-sneaking.patch index b6f4a82d6..4c4cb2b2c 100644 --- a/patches/server/0159-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0159-Break-individual-slabs-when-sneaking.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Break individual slabs when sneaking diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 14465d6368ee5866bc04efe7f9e2023f60f39202..6918bf8f20149042e760a283dceeedfae3c97e3c 100644 +index a0e5ec1a3129fdb4facfbef936b68c43d2d2f710..464e304c532c1af48914d3cfad86380e8b4a096d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -430,6 +430,7 @@ public class ServerPlayerGameMode { @@ -17,11 +17,11 @@ index 14465d6368ee5866bc04efe7f9e2023f60f39202..6918bf8f20149042e760a283dceeedfa // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/level/block/SlabBlock.java b/src/main/java/net/minecraft/world/level/block/SlabBlock.java -index 54df5c2987822a727a31be2b3769d39fabb6159a..70b6a65a7d321fc71c98289f09f21ccaf4d5f6b7 100644 +index 18b603d646081926343dea108b55d641df1c2c34..fdbbd2e5d4fd970a4593b55f16bd0f82248e06b8 100644 --- a/src/main/java/net/minecraft/world/level/block/SlabBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SlabBlock.java @@ -130,4 +130,25 @@ public class SlabBlock extends Block implements SimpleWaterloggedBlock { - return false; + return false; } } + diff --git a/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch index 41d40d039..d59bff6bf 100644 --- a/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable damage settings for magma blocks diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index df6caa1d3f3024b26b7e4b01ebb2e307138850dc..ab822d03cbd8cc5047277f42f29e4c736fb177b3 100644 +index 0ba10e9a18b84c29d401482a77cdec6bd31b27c2..2e4938d2bc37d44d4b70b4c6e6ed7ea709a8a2f3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1071,7 +1071,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1072,7 +1072,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } // CraftBukkit end diff --git a/patches/server/0171-Gamemode-extra-permissions.patch b/patches/server/0171-Gamemode-extra-permissions.patch index 02c61a881..ecf7f1729 100644 --- a/patches/server/0171-Gamemode-extra-permissions.patch +++ b/patches/server/0171-Gamemode-extra-permissions.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Gamemode extra permissions diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index c26435a6b5cdc61ae5d123dacea711a4a9f666d1..21b3532c29f2f1bcf1eb02a28ab107e9f6531393 100644 +index 9d884da26e6515a85b0a8f8f611fafc17c19debc..cfceccc35ba1cc161f47b462504027d74a23b000 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java @@ -195,6 +195,21 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy @@ -54,7 +54,7 @@ index 79f6089b934124c3309c6bee2e48b36b937252e0..d1e6ac2dcff3f058dc147c8ed4d16d27 for(ServerPlayer serverPlayer : targets) { diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java -index 6cc517b394bafefce50d877761e5b2eee8e14c78..46ca899a7abddea108f6ff1b4ca14ca5cd3112ab 100644 +index 045ebc5533de7486d1975efe9d51ab368969178a..bfd82778acd2849a9f75b20b78a9a3f37c32402d 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java +++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java @@ -23,7 +23,15 @@ public final class CommandPermissions { @@ -72,10 +72,10 @@ index 6cc517b394bafefce50d877761e5b2eee8e14c78..46ca899a7abddea108f6ff1b4ca14ca5 + } + // Purpur end DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "xp", "Allows the user to give themselves or others arbitrary values of experience", PermissionDefault.OP, commands); - DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "toggledownfall", "Allows the user to toggle rain on/off for a given world", PermissionDefault.OP, commands); DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "defaultgamemode", "Allows the user to change the default gamemode of the server", PermissionDefault.OP, commands); + DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "seed", "Allows the user to view the seed of the world", PermissionDefault.OP, commands); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 09d9080a019d142ab427163439ef5e259d04e6bb..c3b00e02754f901fe2723cb536ced393ecc95e86 100644 +index bd996beb468823c3b7957038eff28382d8b2c2ee..dd6468098ca71bfc4e4a41e019a5315dcada1e78 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -228,6 +228,7 @@ public class PurpurConfig { diff --git a/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch index 32ed3a79b..3b633b742 100644 --- a/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch +++ b/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch @@ -22,13 +22,13 @@ index 464e304c532c1af48914d3cfad86380e8b4a096d..302203e64277932ecb224edd3768dace } else { ItemStack itemstack = this.player.getMainHandItem(); diff --git a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java -index 7f1230d915c98b6f30b13a06c2788bc2f7b7e912..d363d79a62c99371e03640814912f86d23108d18 100644 +index ca5fb9d69ced45bbbdc1d5580b1aec4cf9f6e999..a9ad97f15c1a40cc20b08b7db955f81add70bf94 100644 --- a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java -@@ -123,7 +123,7 @@ public class ShulkerBoxBlock extends BaseEntityBlock { +@@ -122,7 +122,7 @@ public class ShulkerBoxBlock extends BaseEntityBlock { + public void playerWillDestroy(Level world, BlockPos pos, BlockState state, Player player) { BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof ShulkerBoxBlockEntity) { - ShulkerBoxBlockEntity shulkerBoxBlockEntity = (ShulkerBoxBlockEntity)blockEntity; + if (blockEntity instanceof ShulkerBoxBlockEntity shulkerBoxBlockEntity) { - if (!world.isClientSide && player.isCreative() && !shulkerBoxBlockEntity.isEmpty()) { + if (world.purpurConfig.shulkerBoxAllowOversizedStacks || (!world.isClientSide && player.isCreative() && !shulkerBoxBlockEntity.isEmpty())) { // Purpur ItemStack itemStack = getColoredItemStack(this.getColor()); diff --git a/patches/server/0187-API-for-any-mob-to-burn-daylight.patch b/patches/server/0187-API-for-any-mob-to-burn-daylight.patch index d2c945299..b27ab4ec7 100644 --- a/patches/server/0187-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0187-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 9aab2a69d5ac9a7d18475999147fbd46aacf985b..8ee77c99b3bdaaaf01d98c621a03a06806fcf430 100644 +index 2e4938d2bc37d44d4b70b4c6e6ed7ea709a8a2f3..dfad7db00b5be30e4e83e0c0e5d7c6a91aacf258 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4502,5 +4502,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4503,5 +4503,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public boolean canSaveToDisk() { return true; } diff --git a/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch index fa3ba5f15..b55f127c6 100644 --- a/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0191-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 8ee77c99b3bdaaaf01d98c621a03a06806fcf430..1100ac4fbab11c45fe59b0688a2964c1cf2c0b9c 100644 +index dfad7db00b5be30e4e83e0c0e5d7c6a91aacf258..82c595515741e3bb75a27a5aabc59136bc2a5937 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2826,7 +2826,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2827,7 +2827,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.processPortalCooldown(); diff --git a/patches/server/0192-Flying-Fall-Damage-API.patch b/patches/server/0192-Flying-Fall-Damage-API.patch index 4a0f3bb1e..96e9adfe3 100644 --- a/patches/server/0192-Flying-Fall-Damage-API.patch +++ b/patches/server/0192-Flying-Fall-Damage-API.patch @@ -26,10 +26,10 @@ index b83695996d966310a2fe687baeaed66019754998..eda18bda0b8332c5b1d9c260e748cca8 } else { if (fallDistance >= 2.0F) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4eef838dd00d69bb27d5ffff8ad5e04a0dfff4f5..ec26e4266377160b89182967c276152d7610e10c 100644 +index bb0d196dc2e2ff6a2ccfda8b55a04fd6eaad0a97..d1e4c0253800ca0aaf83f106353cfb4c5b99b3f8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2842,5 +2842,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2848,5 +2848,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void setSpawnInvulnerableTicks(int spawnInvulnerableTime) { getHandle().spawnInvulnerableTime = spawnInvulnerableTime; } diff --git a/patches/server/0195-Allow-player-join-full-server-by-permission.patch b/patches/server/0195-Allow-player-join-full-server-by-permission.patch index d7e09f61b..da5b44d63 100644 --- a/patches/server/0195-Allow-player-join-full-server-by-permission.patch +++ b/patches/server/0195-Allow-player-join-full-server-by-permission.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow player join full server by permission diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 19abf99c384f50840a141de1b3f4d823ebd33f74..111553443a7247db92b15819e9bbd717e4ace61b 100644 +index 795b3c765bf91fbf1df236060344830de9330b38..7574f8c60b69f5a9281a8c888b8e131e73bb1676 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -773,7 +773,7 @@ public abstract class PlayerList { @@ -14,6 +14,6 @@ index 19abf99c384f50840a141de1b3f4d823ebd33f74..111553443a7247db92b15819e9bbd717 // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? new ChatMessage("multiplayer.disconnect.server_full") : null; - if (this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile)) { + if (this.players.size() >= this.maxPlayers && !(player.hasPermission("purpur.joinfullserver") || this.canBypassPlayerLimit(gameprofile))) { // Purpur - event.disallow(PlayerLoginEvent.Result.KICK_FULL, PaperAdventure.LEGACY_SECTION_UXRC.deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure + event.disallow(PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } diff --git a/patches/server/0227-Extended-OfflinePlayer-API.patch b/patches/server/0227-Extended-OfflinePlayer-API.patch index cc2b3ea87..1c52514e4 100644 --- a/patches/server/0227-Extended-OfflinePlayer-API.patch +++ b/patches/server/0227-Extended-OfflinePlayer-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Extended OfflinePlayer API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -index 1f2bc88d4570c6ef00e67a772b745e0b0c98e051..f505e871a9836503377f168c31c1f09f8ed591f0 100644 +index 50927403d07954f3b930b39046866899a1b289e6..c544e411934832cabb230047632454fff0460eef 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -@@ -528,4 +528,213 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa +@@ -538,4 +538,213 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa manager.save(); } } @@ -223,10 +223,10 @@ index 1f2bc88d4570c6ef00e67a772b745e0b0c98e051..f505e871a9836503377f168c31c1f09f + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index ec26e4266377160b89182967c276152d7610e10c..eb5b230aef06e4df57bf92d5a1f771725f6d3a08 100644 +index d1e4c0253800ca0aaf83f106353cfb4c5b99b3f8..e339c0109c38fde307573af50cb3746b5c7f5848 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2105,6 +2105,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2111,6 +2111,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0228-Added-the-ability-to-add-combustible-items.patch b/patches/server/0228-Added-the-ability-to-add-combustible-items.patch index a46251a43..2158e612c 100644 --- a/patches/server/0228-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0228-Added-the-ability-to-add-combustible-items.patch @@ -51,10 +51,10 @@ index 99c207457ec9d1a1b7d9e7becfcc8aae383e93ae..158945281178c80495f1dc2125ea21a2 private int maxStack = MAX_STACK; public List transaction = new java.util.ArrayList(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 137c90bd9df8c8f28d5b61b1ad12bebd7613de34..4e77c53b488e4e82454df66a852f7271e80526ab 100644 +index 3baf2b11c567f5ca235b638e54759494ffc86673..52c40bb83bae0f781432f4348c58a927cf366c9f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1427,6 +1427,19 @@ public final class CraftServer implements Server { +@@ -1433,6 +1433,19 @@ public final class CraftServer implements Server { return true; } diff --git a/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch index 7a294ad48..1dca8ca05 100644 --- a/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch @@ -36,10 +36,10 @@ index f9f7afa0bf2989aaef2f0e8456fe3c93a226b6d0..00dee850e9ae93ed4e8209c67da2da6a + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 80a8bd732d7840a441aae23a558c1aed68b2dce7..a0965856851a4a3337c55d9796952737bb63b26d 100644 +index d1ff93ffb591bb7c5a905c4794d19e0dd179346e..44581f275fb2133e96599af6460ff5e841b7aa88 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1979,6 +1979,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1980,6 +1980,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { diff --git a/patches/server/0241-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0241-Persistent-BlockEntity-Lore-and-DisplayName.patch index d869409b3..1df50a18e 100644 --- a/patches/server/0241-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0241-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -132,7 +132,7 @@ index 5dede264fc3cb045b6330e35123b5b416c1b1f56..10fa3a544d01ce3cdb72e72952073d86 float f = EntityType.ITEM.getHeight() / 2.0F; // Paper start - don't convert potentially massive numbers to floats diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index d62181bd8bccfcfdd7da8f635bdf7ebc36294705..0fa91bd87dfec9cf8311bcbd5125caf6e308e90e 100644 +index b96d57b0bcf21508f8e03e96b7553eb486fdf212..d3de829a4ab5f5a127fb026a8cb4ef4ed6b9c394 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java @@ -6,6 +6,8 @@ import net.minecraft.CrashReportCategory; @@ -173,11 +173,10 @@ index d62181bd8bccfcfdd7da8f635bdf7ebc36294705..0fa91bd87dfec9cf8311bcbd5125caf6 public final CompoundTag saveWithFullMetadata() { CompoundTag nbttagcompound = this.saveWithoutMetadata(); -@@ -256,4 +275,25 @@ public abstract class BlockEntity { - return null; +@@ -264,4 +283,24 @@ public abstract class BlockEntity { } - // CraftBukkit end -+ + // Paper end + + // Purpur start + private String persistentDisplayName = null; + private ListTag persistentLore = null; diff --git a/patches/server/0242-Signs-allow-color-codes.patch b/patches/server/0242-Signs-allow-color-codes.patch index 262e868f0..d96d18287 100644 --- a/patches/server/0242-Signs-allow-color-codes.patch +++ b/patches/server/0242-Signs-allow-color-codes.patch @@ -5,7 +5,7 @@ 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 d106cd682d03bfddd1f441ed43081b41f722d5c4..67590108d9f9e889ef9483722bdae0efa10de1ce 100644 +index 0a345562354dc3f1e1366da96149d204a95f6fbc..b717dad7145eeb7b4d1f6870779c1df9dea3261a 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1501,6 +1501,7 @@ public class ServerPlayer extends Player { @@ -17,10 +17,10 @@ index d106cd682d03bfddd1f441ed43081b41f722d5c4..67590108d9f9e889ef9483722bdae0ef this.connection.send(new ClientboundBlockUpdatePacket(this.level, sign.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos())); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a0965856851a4a3337c55d9796952737bb63b26d..b7a941c0663f233e63f3cce0a048112bd56b0abb 100644 +index 44581f275fb2133e96599af6460ff5e841b7aa88..5d930933dd3fdca91374eba8991275faebd86935 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3194,11 +3194,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3195,11 +3195,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser } // Paper end @@ -42,7 +42,7 @@ index a0965856851a4a3337c55d9796952737bb63b26d..b7a941c0663f233e63f3cce0a048112b SignChangeEvent event = new SignChangeEvent((org.bukkit.craftbukkit.block.CraftBlock) player.getWorld().getBlockAt(x, y, z), this.player.getBukkitEntity(), lines); this.cserver.getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -index d5bcc81a809e3c733c6fc11309bcf0913860edf6..96b70ae604695fbe651f8640be5c6d0e1a3109df 100644 +index d5bcc81a809e3c733c6fc11309bcf0913860edf6..1846aeffc9ad24405ddce0e727552fa6df6e3997 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java @@ -186,6 +186,23 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C @@ -56,7 +56,7 @@ index d5bcc81a809e3c733c6fc11309bcf0913860edf6..96b70ae604695fbe651f8640be5c6d0e + final Component[] lines = getMessages(filtered); + for (int i = 0; i < 4; i++) { + final var component = io.papermc.paper.adventure.PaperAdventure.asAdventure(lines[i]); -+ final String line = io.papermc.paper.adventure.PaperAdventure.LEGACY_AMPERSAND.serialize(component); ++ final String line = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().serialize(component); + final var text = net.kyori.adventure.text.Component.text(line); + final String json = net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson().serialize(text); + nbt.putString("Text" + (i + 1), json); diff --git a/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch b/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch index aa5811dbc..5bf148271 100644 --- a/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch +++ b/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to prevent spiders from climbing world border diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f09f233c2005b600feffee27237ce01c6207b255..d58de23619321fadad3755f6110954ac462bbba1 100644 +index 82c595515741e3bb75a27a5aabc59136bc2a5937..2908d2882cd6bd97d777a2831995ea7a445843ee 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -243,6 +243,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -16,7 +16,7 @@ index f09f233c2005b600feffee27237ce01c6207b255..d58de23619321fadad3755f6110954ac public boolean hurtMarked; protected Vec3 stuckSpeedMultiplier; @Nullable -@@ -1334,7 +1335,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1335,7 +1336,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { io.papermc.paper.util.CollisionUtil.getCollisions(world, this, collisionBox, potentialCollisions, false, true, false, false, null, null); diff --git a/patches/server/0272-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0272-Add-toggle-for-enchant-level-clamping.patch index 53ded7f7f..05382cea3 100644 --- a/patches/server/0272-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0272-Add-toggle-for-enchant-level-clamping.patch @@ -18,10 +18,10 @@ index a999e4c82d7fe0ecf127f9132c29886d56c444e5..7471e59ad3362bc3d0bad6555fe29a9b } diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -index b3292c67658659cd3cf5117d70e20921db3a1e21..12daef6ab5b6d639dead667a6d53451821c13ed2 100644 +index 5422b68674b34d015c94194a974726ea67d07e49..77ccd9e38d916d6ae08e230958134e1cc4443f9e 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -46,7 +46,7 @@ public class EnchantmentHelper { +@@ -45,7 +45,7 @@ public class EnchantmentHelper { } public static int getEnchantmentLevel(CompoundTag nbt) {