diff --git a/build.gradle.kts b/build.gradle.kts index 67e3a89b8..e440fc550 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.8" + id("io.papermc.paperweight.patcher") version "1.5.9" } allprojects { diff --git a/gradle.properties b/gradle.properties index aad58a3fa..b7102beb8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.2-R0.1-SNAPSHOT mcVersion = 1.20.2 -paperCommit = c1ac98328c3b4dc2834497aae70020af7b3c7d04 +paperCommit = b974a6b6f3a989050bf4af344be27da46de9041e 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 7b92d9cbd..775a27097 100644 --- a/patches/api/0001-Pufferfish-API-Changes.patch +++ b/patches/api/0001-Pufferfish-API-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 fb47a794893d5fef026a35a7c573becf74420aa0..0330a20576c372c29ca4d98a2bc5b01e28303ac3 100644 +index 639651972fddce4dff63a0f0a7e566a15b9e2dd6..0b87f34c2bb5a2f72124912a62ea393b19b1f3a3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -46,6 +46,7 @@ dependencies { @@ -480,10 +480,10 @@ index eaefbb00e9993d54906cc8cf35cf753c0d6c7707..301e82369603f3dd6e6c1bd380da4bac if (cloader instanceof PluginClassLoader) { diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java -index 13da387d3b59bc67c0d73e3fbd3a4034b1281527..7572a0bf6614b02be3cbccc7b86e52ee1b8df621 100644 +index f9b57b872780aa6b9b959494874b57c7a8ff0c53..90953bfc81168068a281be4d2d3942d5e7dd69ff 100644 --- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java +++ b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java -@@ -48,6 +48,8 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm +@@ -50,6 +50,8 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm private io.papermc.paper.plugin.provider.classloader.PluginClassLoaderGroup classLoaderGroup; // Paper public io.papermc.paper.plugin.provider.entrypoint.DependencyContext dependencyContext; // Paper @@ -492,7 +492,7 @@ index 13da387d3b59bc67c0d73e3fbd3a4034b1281527..7572a0bf6614b02be3cbccc7b86e52ee static { ClassLoader.registerAsParallelCapable(); } -@@ -183,6 +185,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm +@@ -197,6 +199,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm throw new ClassNotFoundException(name); } @@ -500,7 +500,7 @@ index 13da387d3b59bc67c0d73e3fbd3a4034b1281527..7572a0bf6614b02be3cbccc7b86e52ee @Override protected Class findClass(String name) throws ClassNotFoundException { if (name.startsWith("org.bukkit.") || name.startsWith("net.minecraft.")) { -@@ -190,7 +193,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm +@@ -204,7 +207,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm } Class result = classes.get(name); @@ -509,7 +509,7 @@ index 13da387d3b59bc67c0d73e3fbd3a4034b1281527..7572a0bf6614b02be3cbccc7b86e52ee String path = name.replace('.', '/').concat(".class"); JarEntry entry = jar.getJarEntry(path); -@@ -237,6 +240,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm +@@ -251,6 +254,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm this.setClass(name, result); // Paper } @@ -517,7 +517,7 @@ index 13da387d3b59bc67c0d73e3fbd3a4034b1281527..7572a0bf6614b02be3cbccc7b86e52ee return result; } -@@ -251,6 +255,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm +@@ -265,6 +269,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm // Paper end super.close(); } finally { diff --git a/patches/api/0054-Add-hover-lines-API.patch b/patches/api/0054-Add-hover-lines-API.patch index 4cb7789bf..a2f0f0a92 100644 --- a/patches/api/0054-Add-hover-lines-API.patch +++ b/patches/api/0054-Add-hover-lines-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add hover lines API diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java -index ab73893656932f54009340df59293df2a732be51..9448709716e0b91dd9e2c7ff4060ec0d33d77d24 100644 +index 1c4e0c7356047163a38f5ac4dd544129d0b36271..5e64f172508d928b6d74796a942ecc1077665b7b 100644 --- a/src/main/java/org/bukkit/inventory/ItemFactory.java +++ b/src/main/java/org/bukkit/inventory/ItemFactory.java -@@ -298,4 +298,14 @@ public interface ItemFactory { +@@ -299,4 +299,14 @@ public interface ItemFactory { @Deprecated net.md_5.bungee.api.chat.hover.content.Content hoverContentOf(@NotNull org.bukkit.entity.Entity entity, @NotNull net.md_5.bungee.api.chat.BaseComponent[] customName); // Paper end - bungee hover events diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index a14c73408..4126e6457 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1477,7 +1477,7 @@ index d02546b18cb689724887b4e85e8d32a18828a4ad..91eaff58bb422ba188e6cfaa9c20b45b public static long getCoordinateKey(final ChunkPos pair) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 97745f0bab8d82d397c6c2a5775aed92bca0a034..371049c1236c6443384c0ce184e99d5b9f8e57c2 100644 +index 8f31413c939cc2b0454ad3d9a1b618dbae449d00..58d076e2a8fa1cf56c4c8d15a502e85fcf48aa90 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -308,6 +308,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { + entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { @@ -1782,7 +1782,7 @@ index 17610196db7a1c6feb2cf74a02479a8691aa323f..c1b03e4c37ea85ddf283479682d0eb2e if (this.isRainingAt(blockposition)) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 34fcdeb0f4039f1fc6c4c8c593cc615560af1ba2..ef6d8f787cba0db53270adedd923f9a47d435852 100644 +index 8bca5ba75977c0a61197eb47c94f0456d66b29a4..dcc26435a7d3eb83f92ec165cf16486a06397576 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1118,6 +1118,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1914,7 +1914,7 @@ index d6cbe98e67fdbf8db46338a88ab1356dd63b50a3..20dd3a63b2f955b05a75eb240e33ae4c int LARGE_MAX_STACK_SIZE = 64; int DEFAULT_DISTANCE_LIMIT = 8; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f20ae9153b7098980ce6c0e75fcbbb4da652661b..505ed0f8f933428192f5fc806ff52d84acea7f99 100644 +index 2eaa35f5679053b6864fcc4eeb49f360a828bb34..d8c51744f494c81b27783d34de9378884df2fb20 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -305,7 +305,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -2073,7 +2073,7 @@ index 73871f456a85bda1e51f54986d0e61fb629822e8..2561e74ffdf595a9b6ae13dcd738662c private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b95f88d5e5b4785ee063695fd81935636a0588d1..2cdc2bd62f0cb62f75365b6b3e6d80d9a2132451 100644 +index 776e9adc07e9ddd142c9fc7df56b5795ff8b2249..02d53d7c4e308b2fd70b1f7c1367484bbb3dcec7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -2326,7 +2326,7 @@ index 5ad5f22e5aa26445e5eb229958e7bf356bdd460e..d241ca4d0295f9fce39c11197bd435cf this.level().getProfiler().pop(); this.level().getProfiler().push("allayActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index aa850cfaa0534d57e83f37360724da2428a48a18..eb1e850f11ed1cd8d2f1f2eb1af55b7fe6352ed4 100644 +index d5b97d4316390028f54aa9bb9fa52b0b003e32a0..b4793b88688bd568a428aa520e880f0038de45a7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -280,9 +280,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder(CraftNamespacedKey.toMinecraft(this.getKey()), new net.minecraft.world.item.crafting.ShapelessRecipe(this.getGroup(), CraftRecipe.getCategory(this.getCategory()), CraftItemStack.asNMSCopy(this.getResult()), data))); @@ -3332,7 +3332,7 @@ index 774556a62eb240da42e84db4502e2ed43495be17..80553face9c70c2a3d897681e7761df8 if (stream != null) { diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 2f9e5a1adf9d67ffe18d95f2822ca3d2288fb27a..14e8e7ad8d742cdc0c50d29d6dade3e338c0463e 100644 +index 59103744ac6beeb12719fdefcda54eeff498229e..c0333ba8e57cd284bb8ab15181da6b39d55872f9 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -38,6 +38,10 @@ import co.aikar.timings.MinecraftTimings; diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch index 47fa0eb0e..d82853081 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -72,7 +72,7 @@ index 56ae02aab93b9a698e9d2f07a0448aa4767169d9..756651db912068c837197a972e95bc66 boolean flag1 = this.source.acceptsSuccess() && !this.silent; boolean flag2 = broadcastToOps && this.source.shouldInformAdmins() && !this.silent; diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 66aeb0ea388a8c8a08cf33728921061a0c74552f..6908e2165c4e4b43408a93963b4585d7cabf41dd 100644 +index 462c4eb3c06779f86f66778e9578d3d8f06c3294..a87d025a7ad0b7df16bea6fa4aeecae416551dde 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -218,6 +218,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -92,7 +92,7 @@ index 66aeb0ea388a8c8a08cf33728921061a0c74552f..6908e2165c4e4b43408a93963b4585d7 io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider // Paper end diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 6c0e33323922de72dcb941a10883a07c72808b5f..eccc55372a7a52a92dd9418a47ece0fd2adcd6ed 100644 +index 28fd04794e2a624c5d0a1322b1d6d851f443e3b1..b60ab6c545296c67304019759ab04aa659fb5700 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -176,6 +176,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -112,12 +112,12 @@ index 6c0e33323922de72dcb941a10883a07c72808b5f..eccc55372a7a52a92dd9418a47ece0fd 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 ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d..2674aede815f8c6d0fbaf22895ccb7ed05f9a714 100644 +index bd53d6406d616021ec384c177797f78b6911c3a7..b84fdc990cca9cb7c0d570123a8c7e6bb54ab0b5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1039,6 +1039,7 @@ public final class CraftServer implements Server { - org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot + org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); + org.purpurmc.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur for (ServerLevel world : this.console.getAllLevels()) { @@ -139,7 +139,7 @@ index ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d..2674aede815f8c6d0fbaf22895ccb7ed this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2919,6 +2922,18 @@ public final class CraftServer implements Server { +@@ -2920,6 +2923,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -159,7 +159,7 @@ index ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d..2674aede815f8c6d0fbaf22895ccb7ed public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index e4cacb17f56c618bef19e1165c07aac86af61150..a6b1c83e289bd0a9ad59288ed2da88ac3e607c0f 100644 +index 2af0068ef338634d1f44532af5db66c2d0b3dd10..8e844e3c88a1100d407fac1edf0379072370a6e8 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -173,6 +173,14 @@ public class Main { diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch index d2813bee5..e0832a8f0 100644 --- a/patches/server/0005-Purpur-client-support.patch +++ b/patches/server/0005-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 ba972d1661426d7e30f6f61bad3b9608e66ea721..5fe10d6d8590ef5997a4f8f6af01ec16bf20e00a 100644 +index c7d26a119415ced56ccad04f8a1b180d9f714586..431353d891f94bbe9fa3d18fd16e434a81b293d5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -274,6 +274,7 @@ public class ServerPlayer extends Player { @@ -17,7 +17,7 @@ index ba972d1661426d7e30f6f61bad3b9608e66ea721..5fe10d6d8590ef5997a4f8f6af01ec16 // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 20122bf191ebc74c223310aea1f004fdbb163e57..9226fadcf53da5f7d55f4434a660d3e091c0775f 100644 +index 598f807f0d0caac98b81e0e2991f1bd497c4534e..e9824deab810738e0df8b8e6932048b601ba6662 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -55,6 +55,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @@ -39,14 +39,14 @@ index 20122bf191ebc74c223310aea1f004fdbb163e57..9226fadcf53da5f7d55f4434a660d3e0 + } catch (Exception ignore) { + } + // Purpur end - } else if (identifier.equals(CUSTOM_UNREGISTER)) { + } else if (identifier.equals(ServerCommonPacketListenerImpl.CUSTOM_UNREGISTER)) { try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 604ed1f6742a6b028b9db2809f7bd4b9a3b38f4d..16c05edcd94d8a7ea166a4ab8c72cdeb09f26a73 100644 +index 57229748ae446d70dbc3d71219d9f81f5c8f72b1..0d63baac39f0a6c01dc9e4ff7ba6194a9efdf4dd 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3283,4 +3283,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3285,4 +3285,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index a6e75dc7f..b2e2eab83 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -22,7 +22,7 @@ index 83cab746d1d6fe25c043c8aee28c39412b90c127..ec6b58dae525c81bbb1c0e2d96fbded6 super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ebcd6c821379f4feb3b2c094266645ae552972db..edd53077098cfaaa5987dc7df7163b83a5ed3b26 100644 +index ef14f47cec00ffaf1ac683964d3d1831dae9bcdb..be7508a527a55ada0f769588db024f999d0b95f5 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1531,6 +1531,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index cf2fd8eba6aa4cf15cac924577507a700f7f72b5..19698f13530183b3580a7a6ad720d078b6c791ba 100644 +index ee0403e18b484b85c92aca76faf977c013bfdfe0..f7a19cdc38feb0dcee3e3cf42610a0604f9f4672 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -223,6 +223,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -46,7 +46,7 @@ index cf2fd8eba6aa4cf15cac924577507a700f7f72b5..19698f13530183b3580a7a6ad720d078 final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date()); io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 75faac7c8009672c733033c5aabb4e1974ce5790..3f5d87ccdee1309ae8240a3d181e268d8c022f56 100644 +index c1c596f60d4a29e70f149fd1fb67abadea62c9b3..9f644c24027dec3d89b81fbd86a183f4b773be0f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -756,6 +756,15 @@ public class ServerPlayer extends Player { @@ -66,12 +66,12 @@ index 75faac7c8009672c733033c5aabb4e1974ce5790..3f5d87ccdee1309ae8240a3d181e268d 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 ef6d8f787cba0db53270adedd923f9a47d435852..675e6e7246d84195dc027c0209744896bd2b7224 100644 +index dcc26435a7d3eb83f92ec165cf16486a06397576..26b4307a6a693a1b99951d1270264baa86868630 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2713,6 +2713,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl - cserver.getPluginManager().callEvent(event); + ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); + player.processClick(enumhand); // Purpur + @@ -79,7 +79,7 @@ index ef6d8f787cba0db53270adedd923f9a47d435852..675e6e7246d84195dc027c0209744896 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8bc26cc6af27ba4c13940d61154786d47cb5aaf3..5eb10b5f75b55f66a002745d016b88e0366d1301 100644 +index ab01dba073e09ca33ef2ddb00293c2eaaffad1ea..5230f1471ea7aeb01179db32f0c0e4ed4f1dd056 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -375,7 +375,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -191,7 +191,7 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 2cdc2bd62f0cb62f75365b6b3e6d80d9a2132451..cc82a506e0da0bf4318a37326924d71ca3340d5e 100644 +index 02d53d7c4e308b2fd70b1f7c1367484bbb3dcec7..aa5a70c0b791c2e0bf9cb878e4f4ed7afe9807bf 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -965,7 +965,7 @@ index 3cdd9f379c7e2d46ea47c9ef55b121c93ec0bb4a..b0cff23aa6f841ad291437964ea5bebb // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 8448c5d778998390cf2b683f36e4e18ca7ffdc34..3dab78e2f39855f71bb7294521be71b3faa59b81 100644 +index c528cb7c18650863eaf8e2c6c0d9276c02712cc9..3f81b9d3c0758d20b3f9421a6bf41599e107b5e1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -82,14 +82,82 @@ public class Dolphin extends WaterAnimal { @@ -1090,7 +1090,7 @@ index 8448c5d778998390cf2b683f36e4e18ca7ffdc34..3dab78e2f39855f71bb7294521be71b3 this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 31d4683f5e158f076ce9a416b7003478af293688..7d692f61ed4c6cc8e6b94eda4f48e9cb6baa0ae2 100644 +index 9e2af80c6a87f5849710266149cbca8cabfad4f8..b5f1d79787a7dbc8fddaa47fdeec1b224b409d19 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -144,6 +144,44 @@ public class Fox extends Animal implements VariantHolder { @@ -2204,7 +2204,7 @@ index d241ca4d0295f9fce39c11197bd435cfac7f6e54..09f796ec491f21520e1fcc454249e469 this.level().getProfiler().pop(); this.level().getProfiler().push("allayActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index eb1e850f11ed1cd8d2f1f2eb1af55b7fe6352ed4..4dfe6a909ac3d553bd1cd4cfc131ac8bfb5a0b02 100644 +index b4793b88688bd568a428aa520e880f0038de45a7..d1dd2cda473bb2294dc10c66c13eac8591ea4d5b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -98,6 +98,23 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder) server.getHandle().players) { +- this.getHandle().listName = name.equals(this.getName()) ? null : CraftChatMessage.fromStringOrNull(name); ++ this.getHandle().listName = name.equals(this.getName()) ? null : useMM ? io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name)) : CraftChatMessage.fromStringOrNull(name); // Purpur + for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3289,5 +3294,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3291,5 +3296,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } @@ -317,7 +317,7 @@ index 27ce55687c7c59fdfdcc4553240ea8b023919b77..3ed1a91c93f659306acaf8bad6820f49 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 14e8e7ad8d742cdc0c50d29d6dade3e338c0463e..d1448f50a9c03bd779f4bcd6b4fc896365316b78 100644 +index c0333ba8e57cd284bb8ab15181da6b39d55872f9..282a57df4e2e5708e9cfd9c76b1d7de2a8a23900 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/0013-Bring-back-server-name.patch b/patches/server/0013-Bring-back-server-name.patch index 360d8d409..ba895ba3a 100644 --- a/patches/server/0013-Bring-back-server-name.patch +++ b/patches/server/0013-Bring-back-server-name.patch @@ -17,10 +17,10 @@ index c5598adb8cbcbcf7277c2fd4dd72c243d44d9700..cda4544ae96a4fcb5c6c4483df67a59f 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 2674aede815f8c6d0fbaf22895ccb7ed05f9a714..76d448e18b81fbb4b87c9cc1425fb446d9d6419c 100644 +index b84fdc990cca9cb7c0d570123a8c7e6bb54ab0b5..87103371b53305bd7e55672f8aa8b86ff23f7ac7 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3152,4 +3152,11 @@ public final class CraftServer implements Server { +@@ -3153,4 +3153,11 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0016-Lagging-threshold.patch b/patches/server/0016-Lagging-threshold.patch index 0c9e4c45b..46b19866e 100644 --- a/patches/server/0016-Lagging-threshold.patch +++ b/patches/server/0016-Lagging-threshold.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a22dbc34cfd9de6e996eb925c47abfccef13b0e7..4eeb7a43c8cdcd81fd9f8da4792ab27f54595d14 100644 +index 393cf73f3897f32f4a17bdc36b0d8881605817ed..89adc016610c13fee02b7dba35fcc37679afcec9 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -301,6 +301,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= 0, "Maximum repair cost must be positive (or 0)"); - container.maximumRepairCost = levels; + this.container.maximumRepairCost = levels; } + + // Purpur start diff --git a/patches/server/0059-Add-5-second-tps-average-in-tps.patch b/patches/server/0059-Add-5-second-tps-average-in-tps.patch index cf86e81e2..54de2c81e 100644 --- a/patches/server/0059-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0059-Add-5-second-tps-average-in-tps.patch @@ -27,7 +27,7 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216 setListData(vector); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 57f2b54ad36d33e76e538895df691987c869a043..c29f8291b43a2e92e3444ab72dd23065a006f11f 100644 +index f99658c42e69ded4c61ccaf4ac5e9e645ee5bc7c..c5a93bb3f0ae907d3abb63f97567ab0e54a25b42 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -297,7 +297,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { --this.nextStartTick; diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index b13429e254bd056cf942f39d46976ff0ef2a97f3..948760c9ee6ba921a7f1b4200fc77aa13f198984 100644 +index fc4b66e0a0561fc6705a50dc65b1120301f02f77..cf58894de9804770ba1722e2c0b727d3a637bf9f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -1385,7 +1385,7 @@ public class Fox extends Animal implements VariantHolder { @@ -131,7 +131,7 @@ index d3da7487f911ff791dca5f7b546dccda751fe44c..84e0a41620fd52af0cd22dc92fd13ee4 } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 4149a7aea12cac04a2dfe29e071047de461eb3f4..0d16d486c7efc9a8c4c0db648175cacee5aa3a04 100644 +index a5b2af9d56e4efece7161d25dbc88f343ef233cc..39d7fe20ef5b3ca34a72a50bb8d9c35aa3b2ed23 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -603,7 +603,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -157,7 +157,7 @@ index 8796b779ac0550e32c7313b1280278de48070baf..97be7061d3cccac7b64f4b1a234ccbd8 j = Mth.floor(this.getX()); int i1 = Mth.floor(this.getZ()); diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index aecccc96a1ea7fbd774a4ccbd45c11be1da1b43b..580e7c149e24f0bcbb8c21284869f78e485d091d 100644 +index c8f1d2de8682761ef8d4d50302c211f32b086783..51524661a62cbfe5ff7a3b7d640260e911902b23 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -549,7 +549,15 @@ public class EnderMan extends Monster implements NeutralMob { @@ -256,22 +256,22 @@ index d9b1bde3ce458b7e50f7645d07ee578d13006a0a..d133820c47ecda733aa8242acdb2cd3b protected boolean canReplaceCurrentItem(ItemStack stack) { diff --git a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java -index 251e6bc87eb02ec4372062ef22b21249ac5164ff..6b60597a0e837054b0d1891c1e6e5e7cd3af9539 100644 +index 6b67eec90cd0dc1b20762514eac97f75fdbdf182..2dec28091d1816e9d4c749a5155e83031751cf50 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java @@ -16,20 +16,20 @@ public class LargeFireball extends Fireball { public LargeFireball(EntityType type, Level world) { super(type, world); -- isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit -+ isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur +- this.isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit ++ this.isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur } public LargeFireball(Level world, LivingEntity owner, double velocityX, double velocityY, double velocityZ, int explosionPower) { super(EntityType.FIREBALL, owner, velocityX, velocityY, velocityZ, world); this.explosionPower = explosionPower; -- isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit -+ isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur +- this.isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit ++ this.isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur } @Override @@ -296,15 +296,15 @@ index cd0629581bae5f805842157af36c2d838e01bee3..b0a559dfefac693bda8692a30fbaa5ac } } diff --git a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java -index 04c2ea1ff44af72ae48e2d6b7b912b1c14285038..7839d856b3f924f0c87b298d9a1e3b15ab0693d6 100644 +index 9d43c8520953d6fe0d0948f9dbe14e0650ee01c2..deee9fffe6981d7e728621cc799a812d78000592 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java @@ -24,7 +24,7 @@ public class SmallFireball extends Fireball { super(EntityType.SMALL_FIREBALL, owner, velocityX, velocityY, velocityZ, world); // CraftBukkit start if (this.getOwner() != null && this.getOwner() instanceof Mob) { -- isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); -+ isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur +- this.isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); ++ this.isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur } // CraftBukkit end } diff --git a/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch index eccba460e..6658e842d 100644 --- a/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch @@ -27,7 +27,7 @@ index 664cbce2e06fcb95d3d3d6c5302fc9119f938925..bc9778c705d23acd84fa1cdeff6b403b ++i; } else if (targets.size() == 1) { diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 8a7c30e316db4960b0b62ca0e366c19febead214..fdf2bf10a533c3d4ee145880e6949dadf6ce5410 100644 +index cccd34370d76d96eddeba3de1cfc41d47f9d1f60..ceac7d74f6fbe6519535357a03a0e4d1214d6a1d 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -228,7 +228,8 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -65,7 +65,7 @@ index 8a7c30e316db4960b0b62ca0e366c19febead214..fdf2bf10a533c3d4ee145880e6949dad } @@ -389,7 +394,7 @@ public class AnvilMenu extends ItemCombinerMenu { - sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client + this.sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client this.broadcastChanges(); // Purpur start - if (canDoUnsafeEnchants && itemstack1 != ItemStack.EMPTY) { diff --git a/patches/server/0210-Added-the-ability-to-add-combustible-items.patch b/patches/server/0210-Added-the-ability-to-add-combustible-items.patch index 8bb5df6d0..031768cc6 100644 --- a/patches/server/0210-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0210-Added-the-ability-to-add-combustible-items.patch @@ -51,10 +51,10 @@ index b0afc384907bb75dfa26e432a2328fe080660019..92e58d9503daf4cc9bc1f4c7785e159e 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 da114737b3515b3f39aaa36c23a0d76699eb4239..6e8cd10ec919e9c42c214a9a9c78a51794731fb6 100644 +index 892acaa0c664020b75a800eaa4d6e495727a6430..8215160bdba34c5eea7aed54ecf71b76abb49a45 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1537,6 +1537,19 @@ public final class CraftServer implements Server { +@@ -1538,6 +1538,19 @@ public final class CraftServer implements Server { return true; } diff --git a/patches/server/0227-Potion-NamespacedKey.patch b/patches/server/0227-Potion-NamespacedKey.patch index 04f1c4001..c565ac2a7 100644 --- a/patches/server/0227-Potion-NamespacedKey.patch +++ b/patches/server/0227-Potion-NamespacedKey.patch @@ -160,7 +160,7 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 42b336a96e5c786b95356200da7d02bfd8b584dc..f79d79d7c9ca18ac711b81c8c3d94e2145aa5bf0 100644 +index a86ce1e672df969b28293e7da4c6f4414d8d80a7..bc2a7120a7758097080b39f2aa37828d98b84fd5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -465,7 +465,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -191,7 +191,7 @@ index 42b336a96e5c786b95356200da7d02bfd8b584dc..f79d79d7c9ca18ac711b81c8c3d94e21 return effects; } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java -index 677fdb8c312f79daade76f169292a2a989e11eec..e67c86bae2ab419dd4e6d989d12cef81d135cc2e 100644 +index bac3a5c378054481e1a5abaec1f83afde5d64ac1..f1050bf2b9efc54a894426b08989d44566acd875 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java @@ -45,6 +45,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { @@ -203,14 +203,14 @@ index 677fdb8c312f79daade76f169292a2a989e11eec..e67c86bae2ab419dd4e6d989d12cef81 // Having an initial "state" in ItemMeta seems bit dirty but the UNCRAFTABLE potion type // is treated as the empty form of the meta because it represents an empty potion with no effect @@ -97,7 +98,13 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { - boolean ambient = effect.getBoolean(AMBIENT.NBT); - boolean particles = effect.contains(SHOW_PARTICLES.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(SHOW_PARTICLES.NBT) : true; - boolean icon = effect.contains(SHOW_ICON.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(SHOW_ICON.NBT) : particles; + boolean ambient = effect.getBoolean(CraftMetaPotion.AMBIENT.NBT); + boolean particles = effect.contains(CraftMetaPotion.SHOW_PARTICLES.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(CraftMetaPotion.SHOW_PARTICLES.NBT) : true; + boolean icon = effect.contains(CraftMetaPotion.SHOW_ICON.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(CraftMetaPotion.SHOW_ICON.NBT) : particles; - this.customEffects.add(new PotionEffect(type, duration, amp, ambient, particles, icon)); + // Purpur start + NamespacedKey key = null; -+ if (tag.contains(KEY.NBT)) { -+ key = NamespacedKey.fromString(effect.getString(KEY.NBT)); ++ if (tag.contains(CraftMetaPotion.KEY.NBT)) { ++ key = NamespacedKey.fromString(effect.getString(CraftMetaPotion.KEY.NBT)); + } + this.customEffects.add(new PotionEffect(type, duration, amp, ambient, particles, icon, key)); + // Purpur end @@ -218,12 +218,12 @@ index 677fdb8c312f79daade76f169292a2a989e11eec..e67c86bae2ab419dd4e6d989d12cef81 } } @@ -150,6 +157,11 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { - effectData.putBoolean(AMBIENT.NBT, effect.isAmbient()); - effectData.putBoolean(SHOW_PARTICLES.NBT, effect.hasParticles()); - effectData.putBoolean(SHOW_ICON.NBT, effect.hasIcon()); + effectData.putBoolean(CraftMetaPotion.AMBIENT.NBT, effect.isAmbient()); + effectData.putBoolean(CraftMetaPotion.SHOW_PARTICLES.NBT, effect.hasParticles()); + effectData.putBoolean(CraftMetaPotion.SHOW_ICON.NBT, effect.hasIcon()); + // Purpur start + if (effect.hasKey()) { -+ effectData.putString(KEY.NBT, effect.getKey().toString()); ++ effectData.putString(CraftMetaPotion.KEY.NBT, effect.getKey().toString()); + } + // Purpur end effectList.add(effectData); diff --git a/patches/server/0262-Add-local-difficulty-api.patch b/patches/server/0262-Add-local-difficulty-api.patch index bb29fd10d..11ccdc887 100644 --- a/patches/server/0262-Add-local-difficulty-api.patch +++ b/patches/server/0262-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 4879b585df9a6488922511a8e6603964bd13abcf..e4cfc31970ca6ee2b1f943d9d1771c9d369effb1 100644 +index 5e350fa39f47d54f6048ea89c1317759f122b8ae..0afa519068a9d7bf5b16e201d9d768254094dc4f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2298,6 +2298,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2301,6 +2301,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/server/0266-Remove-Timings.patch b/patches/server/0266-Remove-Timings.patch index c8bc91be3..3c1f2bf92 100644 --- a/patches/server/0266-Remove-Timings.patch +++ b/patches/server/0266-Remove-Timings.patch @@ -56,7 +56,7 @@ index 9a49f5271ec1d9de17632bfffe8309cb1ba0d8b1..0be239c5c78432a6377cd7828cd49f61 } catch (Exception exception) { if (exception instanceof ReportedException) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 219f4c9ca2dfa1f55d7c5f4443dab9844ebec4b9..2ea0db79e2a4b23455b2b2bc345621b4a58629ab 100644 +index cd319d1bddbe5f02e998c961905bcba777492371..bf5cc18304f464aec59f3982311a0a99d9a9706b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1390,15 +1390,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { @@ -489,10 +489,10 @@ index 3c8585976bbfcb33c26ee5fde8448805e0f97e1a..68a29b818db34ef0263704d7b6d71b9a } } }); -- timings.entityTick.stopTiming(); // Spigot -- timings.tickEntities.stopTiming(); // Spigot -+ //timings.entityTick.stopTiming(); // Spigot // Purpur -+ //timings.tickEntities.stopTiming(); // Spigot // Purpur +- this.timings.entityTick.stopTiming(); // Spigot +- this.timings.tickEntities.stopTiming(); // Spigot ++ //this.timings.entityTick.stopTiming(); // Spigot // Purpur ++ //this.timings.tickEntities.stopTiming(); // Spigot // Purpur gameprofilerfiller.pop(); this.tickBlockEntities(); } @@ -584,7 +584,7 @@ index 3c8585976bbfcb33c26ee5fde8448805e0f97e1a..68a29b818db34ef0263704d7b6d71b9a @@ -1578,7 +1578,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!savingDisabled) { - org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit + org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit - try (co.aikar.timings.Timing ignored = timings.worldSave.startTiming()) { // Paper + //try (co.aikar.timings.Timing ignored = timings.worldSave.startTiming()) { // Paper // Purpur // Purpur if (progressListener != null) { @@ -606,7 +606,7 @@ index 3c8585976bbfcb33c26ee5fde8448805e0f97e1a..68a29b818db34ef0263704d7b6d71b9a } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 018a3597c7132ba1f5972fef74b6a32837a31cb3..0c56b90dbcb4aaf904eeb1773a1aa82e9e018c50 100644 +index fe54da743bf3583de98ff5c26d1746f686736729..1060672a14af92acd307e165a6c0f1b5bb234edb 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2448,7 +2448,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -637,7 +637,7 @@ index 018a3597c7132ba1f5972fef74b6a32837a31cb3..0c56b90dbcb4aaf904eeb1773a1aa82e } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index cf721106b861a8c166244efc2114e22d038aa3a7..5c38df8170033dbfee267520991a3cc3285d219e 100644 +index 11b825f3dda93005e4b6fd4a5f36935215daf76a..d83f360d5f28f39fffca2949c5dbc114c04e7629 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1249,7 +1249,7 @@ public abstract class PlayerList { @@ -708,25 +708,25 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index b486008e2ef64648064aa365fb98bd5878f9c379..fc27f690d302559dd534e9f4ede7a7bd6422837a 100644 +index 80b4d8d1283c03681106853fd83bf6df0392c230..8b537022638648c11396c0ee638750c712a6230b 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1304,15 +1304,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("blockEntities"); -- timings.tileEntityPending.startTiming(); // Spigot -+ //timings.tileEntityPending.startTiming(); // Spigot // Purpur +- this.timings.tileEntityPending.startTiming(); // Spigot ++ //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { this.blockEntityTickers.addAll(this.pendingBlockEntityTickers); this.pendingBlockEntityTickers.clear(); } -- timings.tileEntityPending.stopTiming(); // Spigot -+ //timings.tileEntityPending.stopTiming(); // Spigot // Purpur +- this.timings.tileEntityPending.stopTiming(); // Spigot ++ //this.timings.tileEntityPending.stopTiming(); // Spigot // Purpur -- timings.tileEntityTick.startTiming(); // Spigot -+ //timings.tileEntityTick.startTiming(); // Spigot // Purpur +- this.timings.tileEntityTick.startTiming(); // Spigot ++ //this.timings.tileEntityTick.startTiming(); // Spigot // Purpur // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); int tilesThisCycle = 0; @@ -734,8 +734,8 @@ index b486008e2ef64648064aa365fb98bd5878f9c379..fc27f690d302559dd534e9f4ede7a7bd } this.blockEntityTickers.removeAll(toRemove); -- timings.tileEntityTick.stopTiming(); // Spigot -+ //timings.tileEntityTick.stopTiming(); // Spigot // Purpur +- this.timings.tileEntityTick.stopTiming(); // Spigot ++ //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper gameprofilerfiller.pop(); @@ -762,7 +762,7 @@ index 9c2d62feff1816f5729060c6192269a5b2d34153..1e3349690d00c7889a381f7c65a3b5bf } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index e2ea90469352346b43f0a86746179a6adc53d82a..ef2f9ee9f32d6a6ad7ec9385335fc368f0ecff32 100644 +index b9aca339851cdaa6325c04e5cea847904752c63c..88b7f814a1454841b1f1b27e9c7d66d64717a422 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -800,7 +800,7 @@ public class LevelChunk extends ChunkAccess { @@ -802,7 +802,7 @@ index e2ea90469352346b43f0a86746179a6adc53d82a..ef2f9ee9f32d6a6ad7ec9385335fc368 } } diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index 5a47a8785bc2e251d041f80a79295c43459de3bc..a4567188e2fe3f922bb6aeb71a2845d1a1be536f 100644 +index e5b8466fb2f8c98bdc81839d9c01cece42c39081..247b233978728d8a0007b494e1d1e0aee29f68c6 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java @@ -513,10 +513,10 @@ public class CraftScheduler implements BukkitScheduler { @@ -837,7 +837,7 @@ index 5a47a8785bc2e251d041f80a79295c43459de3bc..a4567188e2fe3f922bb6aeb71a2845d1 private boolean isReady(final int currentTick) { diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -index 3f45bab0e9f7b3697e6d9d1092a1e6e579f7066f..4f1cf281c4bf68c37982d390da8779dea78dab18 100644 +index ea26d9464644b5217879b8c21b4da28e57708dcb..5835dc236b3f5291a804f7fb14a12eb466d4e0ba 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java @@ -96,13 +96,13 @@ public class CraftTask implements BukkitTask, Runnable { // Spigot @@ -857,7 +857,7 @@ index 3f45bab0e9f7b3697e6d9d1092a1e6e579f7066f..4f1cf281c4bf68c37982d390da8779de long getCreatedAt() { diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -index 7a2f46579352870cfbb32c343d7c68919758ffe3..60b8331a4327cc276b88420254495455babbe3b0 100644 +index 891f850ea99dac1433f3e395e26be14c8abf2bfb..280ed3a3b61b3eadbb6f253cd4e058641e2c3d2e 100644 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java @@ -115,7 +115,7 @@ public final class CraftScoreboardManager implements ScoreboardManager { @@ -879,7 +879,7 @@ index 7a2f46579352870cfbb32c343d7c68919758ffe3..60b8331a4327cc276b88420254495455 // Paper end - add timings for scoreboard search } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 925cd6e07efc3a42ff5787823b046726ce863104..eae9bf47521ded2a4b7972978f3bd801c685d56a 100644 +index a7ecbd77d0017a298b94cceeddc049eff713f60f..0b03dae85e6008283e68b07fa438daccf0e4f5fa 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -170,7 +170,7 @@ public class ActivationRange diff --git a/patches/server/0267-Remove-Mojang-Profiler.patch b/patches/server/0267-Remove-Mojang-Profiler.patch index 463e03961..1dbb39df8 100644 --- a/patches/server/0267-Remove-Mojang-Profiler.patch +++ b/patches/server/0267-Remove-Mojang-Profiler.patch @@ -39,7 +39,7 @@ index af712f089e7919fa0bd3946866fd3486fab19f76..9caab6541a224dc8f729a7d720eccda7 return b0; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 2ea0db79e2a4b23455b2b2bc345621b4a58629ab..306195a8a57dc62379ffd856b214a651fd60e483 100644 +index bf5cc18304f464aec59f3982311a0a99d9a9706b..926ba816e7bccec0d1b34c2f8fc3300be84df4c2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -338,13 +338,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop s = getSnapshot().getStored(); ++ List s = this.getSnapshot().getStored(); + if(length < s.size()) { + storage.add(new org.purpurmc.purpur.entity.PurpurStoredBee(s.get(s.size() - 1), this)); + }