diff --git a/build.gradle.kts b/build.gradle.kts index bd07f87e..7abf1ae6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,7 +17,7 @@ repositories { } dependencies { - remapper("net.fabricmc:tiny-remapper:0.8.8:fat") + remapper("net.fabricmc:tiny-remapper:0.8.9:fat") decompiler("org.vineflower:vineflower:1.9.2") paperclip("io.papermc:paperclip:3.0.4-SNAPSHOT") } diff --git a/gradle.properties b/gradle.properties index a02b91bb..373ac37b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.dreeam.leaf version = 1.20.1-R0.1-SNAPSHOT -galeCommit = f6e1bd84e832f42a0a217e6824cb6b03772262cf +galeCommit = c8e7259cfddc1e69da4f5f3604f8eb3a25ee1cfd org.gradle.caching = true org.gradle.parallel = true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 02606d1b..ac72c34e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-rc-4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/patches/api/0002-Purpur-API-Changes.patch b/patches/api/0002-Purpur-API-Changes.patch index 211203ee..fe823be0 100644 --- a/patches/api/0002-Purpur-API-Changes.patch +++ b/patches/api/0002-Purpur-API-Changes.patch @@ -53,10 +53,10 @@ index a736d7bcdc5861a01b66ba36158db1c716339346..22fc165fd9c95f0f3ae1be7a0857e48c @Override diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index cf5cae753357bbe82d280a5c83800be2bb83f299..fc090ec47cf4ea78e2984b60cebbd486aca5d0d7 100644 +index c0d0604e8d5d1ebf3a3d665a55a02ea12416465f..29f2fcfad0f563c3bd500b2ca7d84f453df23798 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2781,4 +2781,127 @@ public final class Bukkit { +@@ -2823,4 +2823,127 @@ public final class Bukkit { public static Server.Spigot spigot() { return server.spigot(); } @@ -439,10 +439,10 @@ index 9b84cb5abdf3db55cbc7ba19c8cd6955bf4fc5ec..5616d2acfa8180f71ae4123845fc1265 + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 093ba28cc5ab0bf5ef4a9198c1231d160713dbe7..38bcfc1e517e7a4b1edccb5c9eba85c853cfc2fe 100644 +index 9ff34994f2a4dcf0b10262aacc912d7d283c121e..bd93eb61669a014054cb1ba71f99d74ba8463622 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2134,6 +2134,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2174,6 +2174,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi // Paper end @@ -461,7 +461,7 @@ index 093ba28cc5ab0bf5ef4a9198c1231d160713dbe7..38bcfc1e517e7a4b1edccb5c9eba85c8 /** * Sends the component to the player * -@@ -2443,4 +2455,111 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2483,4 +2495,111 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi long getLastTickOversleepTime(); // Gale end - YAPFA - last tick time - API @@ -813,13 +813,13 @@ index 138d2530de2410f4a9424dabd3e5ce0cd1c1dcd2..10a8d64ad2da0be2c14f34c3e7d1957c // Paper start /** diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 6b842453589cf148ab32c1507cf374056826316e..af421c1e9ad155e190dc3fe67ed24e96857d9e33 100644 +index 762cb07861ca8ff058ce8d57ea6c15df1e588bf3..98de85d1382fe84cdc2e2c9db04bf1b4f157291c 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -965,4 +965,55 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1049,4 +1049,55 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ - @NotNull io.papermc.paper.threadedregions.scheduler.EntityScheduler getScheduler(); - // Paper end - Folia schedulers + @NotNull String getScoreboardEntryName(); + // Paper end - entity scoreboard name + + // Purpur start + /** @@ -1036,10 +1036,10 @@ index bc84b892cae5fe7019a3ad481e9da79956efa1fe..48eb5b00c460cccde29d327cef1d63fc + // Purpur end } diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index da3e990b2e888387736ffda4a6c9165c5d84248e..e6bfe7346d200c569900d3fd96a217d755e0dd0c 100644 +index 60df0fd1d3ef021cb6aecd8075a1ae87eac5d9eb..d1025b65d159ad3bf99157570b8b81fdb759ac34 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3253,4 +3253,143 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3283,4 +3283,143 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0003-Leaf-config-files.patch b/patches/api/0003-Leaf-config-files.patch index 6c0a51af..2ab8e109 100644 --- a/patches/api/0003-Leaf-config-files.patch +++ b/patches/api/0003-Leaf-config-files.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Leaf config files diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 38bcfc1e517e7a4b1edccb5c9eba85c853cfc2fe..11c597d20752b7a6d6cc3e6cf762bc086e0cb4a8 100644 +index bd93eb61669a014054cb1ba71f99d74ba8463622..c55819f56b4a3850496feef6900c1ec8a0bb1a9d 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2146,6 +2146,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2186,6 +2186,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Purpur end diff --git a/patches/api/0004-Bump-Dependencies.patch b/patches/api/0004-Bump-Dependencies.patch index cd51dca2..b9a4a693 100644 --- a/patches/api/0004-Bump-Dependencies.patch +++ b/patches/api/0004-Bump-Dependencies.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Bump Dependencies diff --git a/build.gradle.kts b/build.gradle.kts -index 9796d6d0a1b8fba6f694e8c4d9446d0887aed1ee..c0e36947d161033ff66b76c6ddbc6fdb714c4c0f 100644 +index c4653ddd2c087d14d7415d55fc8e6faab0b3b8ff..71039c1476b088c77b84838f705498b4c4f981f1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -9,8 +9,8 @@ java { - } - +@@ -11,8 +11,8 @@ java { + val annotationsVersion = "24.0.1" + val bungeeCordChatVersion = "1.20-R0.1" val adventureVersion = "4.14.0" -val slf4jVersion = "1.8.0-beta4" -val log4jVersion = "2.17.1" @@ -19,17 +19,16 @@ index 9796d6d0a1b8fba6f694e8c4d9446d0887aed1ee..c0e36947d161033ff66b76c6ddbc6fdb val apiAndDocs: Configuration by configurations.creating { attributes { attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) -@@ -27,16 +27,16 @@ val annotationsVersion = "24.0.1" +@@ -27,16 +27,16 @@ configurations.api { dependencies { // api dependencies are listed transitively to API consumers - api("com.google.guava:guava:31.1-jre") - api("com.google.code.gson:gson:2.10") -- api("net.md-5:bungeecord-chat:1.16-R0.4-deprecated+build.9") // Paper -- api("org.yaml:snakeyaml:2.0") + api("com.google.guava:guava:32.1.2-jre") // Leaf - Bump Dependencies -+ api("com.google.code.gson:gson:2.10.1") -+ api("net.md-5:bungeecord-chat:1.20-R0.1-SNAPSHOT") // Paper // Leaf - Bump Dependencies ++ api("com.google.code.gson:gson:2.10.1") // Leaf - Bump Dependencies + api("net.md-5:bungeecord-chat:$bungeeCordChatVersion-deprecated+build.14") // Paper +- api("org.yaml:snakeyaml:2.0") + api("org.yaml:snakeyaml:2.1") // Leaf - Bump Dependencies api("org.joml:joml:1.10.5") // Paper start @@ -85,7 +84,7 @@ index 9796d6d0a1b8fba6f694e8c4d9446d0887aed1ee..c0e36947d161033ff66b76c6ddbc6fdb } configure { -@@ -117,8 +120,8 @@ tasks.withType { +@@ -123,8 +126,8 @@ tasks.withType { options.use() options.isDocFilesSubDirs = true options.links( @@ -95,8 +94,8 @@ index 9796d6d0a1b8fba6f694e8c4d9446d0887aed1ee..c0e36947d161033ff66b76c6ddbc6fdb + "https://javadoc.io/doc/org.yaml/snakeyaml/2.1/", // Leaf - Bump Dependencies "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", // Paper - we don't want Java 5 annotations // Paper start - //"https://javadoc.io/doc/net.md-5/bungeecord-chat/1.16-R0.4/", // don't link to bungee chat -@@ -163,6 +166,9 @@ val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks. + // "https://javadoc.io/doc/net.md-5/bungeecord-chat/$bungeeCordChatVersion/", // don't link to bungee chat +@@ -169,6 +172,9 @@ val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks. jarToScan.set(tasks.jar.flatMap { it.archiveFile }) classpath.from(configurations.compileClasspath) } diff --git a/patches/api/0006-KeYi-Player-Skull-API.patch b/patches/api/0006-KeYi-Player-Skull-API.patch index 4a0e335f..f30b5482 100644 --- a/patches/api/0006-KeYi-Player-Skull-API.patch +++ b/patches/api/0006-KeYi-Player-Skull-API.patch @@ -7,7 +7,7 @@ Original license: MIT Original project: https://github.com/KeYiMC/KeYi diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index e6bfe7346d200c569900d3fd96a217d755e0dd0c..d5f3c795fa5f18a7deadd7160b26c074ad5ca2b4 100644 +index d1025b65d159ad3bf99157570b8b81fdb759ac34..37668e737e7b507757c70e432a19647db6628b81 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -8,8 +8,11 @@ import java.util.Collection; @@ -23,7 +23,7 @@ index e6bfe7346d200c569900d3fd96a217d755e0dd0c..d5f3c795fa5f18a7deadd7160b26c074 import org.bukkit.DyeColor; import org.bukkit.Effect; import org.bukkit.GameMode; -@@ -3392,4 +3395,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3422,4 +3425,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM sendDeathScreen(message); } // Purpur end diff --git a/patches/api/0007-Slice-Smooth-Teleports.patch b/patches/api/0007-Slice-Smooth-Teleports.patch index d85f35bb..4ee66649 100644 --- a/patches/api/0007-Slice-Smooth-Teleports.patch +++ b/patches/api/0007-Slice-Smooth-Teleports.patch @@ -7,10 +7,10 @@ Original license: MIT Original project: https://github.com/Cryptite/Slice diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index d5f3c795fa5f18a7deadd7160b26c074ad5ca2b4..d1c916caa04472a88a6f7b091045aec1ce8a4db2 100644 +index 37668e737e7b507757c70e432a19647db6628b81..8c596943784070915675fd3dc6dcb22c5b2d1a09 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3138,6 +3138,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3168,6 +3168,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM String getClientBrandName(); // Paper end diff --git a/patches/api/0008-Revert-Purpur-Fire-Immunity-API.patch b/patches/api/0008-Revert-Purpur-Fire-Immunity-API.patch index be87a6b6..48544f44 100644 --- a/patches/api/0008-Revert-Purpur-Fire-Immunity-API.patch +++ b/patches/api/0008-Revert-Purpur-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Revert Purpur Fire Immunity API diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index af421c1e9ad155e190dc3fe67ed24e96857d9e33..964ec7bd70fcdfcffd51b310cdea84c7c5db6c95 100644 +index 98de85d1382fe84cdc2e2c9db04bf1b4f157291c..52867495d0f746ff40e802c4f1018511e58fd03e 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1002,18 +1002,5 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1086,18 +1086,5 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @return True if in daylight */ boolean isInDaylight(); diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index ab4c89c1..ddfcf58b 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index a0237112353240d9c8d0dc733f9176fd7e95f007..d794a8e459e21ecf2b77a3b4e5a290211c52a319 100644 +index 4466f21a83cb9ddca7309a194afcb8eded92de81..cc9c8cbefbce8cc31effe914227b78272374eae1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,7 +15,7 @@ val alsoShade: Configuration by configurations.creating @@ -73,10 +73,10 @@ index e45e6b44b2a8f2cdae6e0048a812b92126aa17ca..b5f3f213da8a40d5184098af017c8e26 .completer(new ConsoleCommandCompleter(this.server)) .option(LineReader.Option.COMPLETE_IN_WORD, true); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 77dd3605bede2f8d2574961a21560df4631f6277..6246949f1f0eea1b8177ebae61cab11d66f642df 100644 +index 2649d01a1fb8633dc47350f0078ea24aee22ebb6..d246a268d22a02e5200fd7da189a1fda6914af1d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -906,7 +906,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entity.activatedTick ) { if ( entity.defaultActivationState ) diff --git a/patches/server/0008-Pufferfish-Entity-TTL.patch b/patches/server/0008-Pufferfish-Entity-TTL.patch index 1217b378..5f67df73 100644 --- a/patches/server/0008-Pufferfish-Entity-TTL.patch +++ b/patches/server/0008-Pufferfish-Entity-TTL.patch @@ -7,10 +7,10 @@ Original license: GPL v3 Original project: https://github.com/pufferfish-gg/Pufferfish diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 25225cd9d31df9084a5c53c504607978722ee507..1d3977fe43c75c955160bf8d9775182e20be7dcb 100644 +index edfb51e5c54d443926d0c051a3732a97dcecbd00..31d248b0a3ec735edff3aeb5e00fd009940013da 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -826,6 +826,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -828,6 +828,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public void tick() { diff --git a/patches/server/0010-Purpur-Server-Changes.patch b/patches/server/0010-Purpur-Server-Changes.patch index 5f5f623b..8f993602 100644 --- a/patches/server/0010-Purpur-Server-Changes.patch +++ b/patches/server/0010-Purpur-Server-Changes.patch @@ -519,7 +519,7 @@ index f20738fbfbc85a73e43898ec2b15c3a834ba7099..0727d7620cd8e0cefaef6a6d90082a8c } // Paper end diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java -index 9938bb90bef84cf784f9a1ceb02a1a45aa8b48a1..1f4b64a5f812376c499c98cb4be62469bd0b7dbe 100644 +index 76d92f56a9deab824dcb7ca652c5fcd287f0cbfd..2a9a21a59d996eb2bcc5c66d6b90e9c91e6dbfdd 100644 --- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java +++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java @@ -98,6 +98,8 @@ public class FriendlyByteBuf extends ByteBuf { @@ -531,7 +531,7 @@ index 9938bb90bef84cf784f9a1ceb02a1a45aa8b48a1..1f4b64a5f812376c499c98cb4be62469 public FriendlyByteBuf(ByteBuf parent) { this.source = parent; } -@@ -679,6 +681,17 @@ public class FriendlyByteBuf extends ByteBuf { +@@ -862,6 +864,17 @@ public class FriendlyByteBuf extends ByteBuf { this.writeBoolean(false); } else { this.writeBoolean(true); @@ -563,7 +563,7 @@ index 9ec6145fe04ec64bbee8ec6a837719caebdbc6f5..358d610ad020cada1bb83e393deeeaae public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) { this.gameTime = time; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3f8f0c991f563a1f4622f4da3e31dc4d33ce40aa..1a6b8b764a762821e5b7b2342658df7bc09323c3 100644 +index 761ae1cf870fedeb6db3328447159595b86d8d72..056d5541b2bc563e479ef3c8f63f41fdea7bc23a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -279,6 +279,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop playersInRange = reducedRange ? playerchunk.playersInMobSpawnRange : playerchunk.playersInChunkTickRange; diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index d23fe810b1b971abe4ed52018929a40817060fdc..7eed6e8f586055b87717a5c4ee39c640a03b883e 100644 +index 95a17b9d3397516ce4cb4334e01cee2a391ad2fb..00e522a7db9ddfd0602e8423b2793f0bbd727b35 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -70,7 +70,7 @@ public class ServerEntity { @@ -1202,10 +1202,10 @@ index 5d6c0f5d2d993ae3a044a1a02716a2662e9080d0..b77a84a5ab85839e37aee24da0f4356b } // Paper end diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68f47251ab 100644 +index c97a719033ef075f2cc29f6e4e5327db12e24b8d..ac12549e49f824aded913eb131117b750ea3db1b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -278,6 +278,11 @@ public class ServerPlayer extends Player { +@@ -279,6 +279,11 @@ public class ServerPlayer extends Player { public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event @@ -1217,7 +1217,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 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)); public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -418,6 +423,7 @@ public class ServerPlayer extends Player { +@@ -419,6 +424,7 @@ public class ServerPlayer extends Player { this.bukkitPickUpLoot = true; this.maxHealthCache = this.getMaxHealth(); this.cachedSingleMobDistanceMap = new com.destroystokyo.paper.util.PooledHashSets.PooledObjectLinkedOpenHashSet<>(this); // Paper @@ -1225,7 +1225,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 } // Yes, this doesn't match Vanilla, but it's the best we can do for now. -@@ -557,6 +563,9 @@ public class ServerPlayer extends Player { +@@ -558,6 +564,9 @@ public class ServerPlayer extends Player { } } @@ -1235,7 +1235,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 } @Override -@@ -623,6 +632,9 @@ public class ServerPlayer extends Player { +@@ -624,6 +633,9 @@ public class ServerPlayer extends Player { } this.getBukkitEntity().setExtraData(nbt); // CraftBukkit @@ -1245,7 +1245,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -751,6 +763,15 @@ public class ServerPlayer extends Player { +@@ -752,6 +764,15 @@ public class ServerPlayer extends Player { this.trackStartFallingPosition(); this.trackEnteredOrExitedLavaOnVehicle(); this.advancements.flushDirty(this); @@ -1261,7 +1261,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 } public void doTick() { -@@ -989,6 +1010,7 @@ public class ServerPlayer extends Player { +@@ -990,6 +1011,7 @@ public class ServerPlayer extends Player { })); Team scoreboardteambase = this.getTeam(); @@ -1269,7 +1269,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 if (scoreboardteambase != null && scoreboardteambase.getDeathMessageVisibility() != Team.Visibility.ALWAYS) { if (scoreboardteambase.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent); -@@ -1090,14 +1112,30 @@ public class ServerPlayer extends Player { +@@ -1091,14 +1113,30 @@ public class ServerPlayer extends Player { } @@ -1301,7 +1301,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 return false; } else { Entity entity = source.getEntity(); -@@ -1238,6 +1276,7 @@ public class ServerPlayer extends Player { +@@ -1239,6 +1277,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); @@ -1309,7 +1309,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 // CraftBukkit end this.setServerLevel(worldserver); -@@ -1272,6 +1311,7 @@ public class ServerPlayer extends Player { +@@ -1273,6 +1312,7 @@ public class ServerPlayer extends Player { } // Paper end @@ -1317,7 +1317,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 return this; } } -@@ -1393,7 +1433,7 @@ public class ServerPlayer extends Player { +@@ -1394,7 +1434,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); @@ -1326,7 +1326,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1530,6 +1570,7 @@ public class ServerPlayer extends Player { +@@ -1531,6 +1571,7 @@ public class ServerPlayer extends Player { @Override public void openTextEdit(SignBlockEntity sign, boolean front) { @@ -1334,7 +1334,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 this.connection.send(new ClientboundBlockUpdatePacket(this.level(), sign.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front)); } -@@ -1770,6 +1811,26 @@ public class ServerPlayer extends Player { +@@ -1771,6 +1812,26 @@ public class ServerPlayer extends Player { this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -1361,7 +1361,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 @Override public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); -@@ -2075,6 +2136,7 @@ public class ServerPlayer extends Player { +@@ -2076,6 +2137,7 @@ public class ServerPlayer extends Player { } public void sendTexturePack(String url, String hash, boolean required, @Nullable Component resourcePackPrompt) { @@ -1369,7 +1369,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 this.connection.send(new ClientboundResourcePackPacket(url, hash, required, resourcePackPrompt)); } -@@ -2089,8 +2151,68 @@ public class ServerPlayer extends Player { +@@ -2090,8 +2152,68 @@ public class ServerPlayer extends Player { public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -1438,7 +1438,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 public ServerStatsCounter getStats() { return this.stats; } -@@ -2602,8 +2724,16 @@ public class ServerPlayer extends Player { +@@ -2603,8 +2725,16 @@ public class ServerPlayer extends Player { @Override public boolean isImmobile() { @@ -1456,7 +1456,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 @Override public Scoreboard getScoreboard() { -@@ -2652,4 +2782,50 @@ public class ServerPlayer extends Player { +@@ -2653,4 +2783,50 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -1508,7 +1508,7 @@ index 43c170fe1eed27e1b0367a3b277cc6d034bc34e1..7eb08a51474fa0ead38c57ee7b486a68 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index f830ff98ac6e94fa4f0c9d85bcdd8f3816ecc645..24405fb76f0995350f259d5c5b77586323fb07ce 100644 +index 8e851f6f5d72f3d1d35d5e0a9bcabaf4f5a227a1..dc217ac3f405a7b86608e026ecf6f429cb5dedd6 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -398,6 +398,7 @@ public class ServerPlayerGameMode { @@ -1565,7 +1565,7 @@ index f830ff98ac6e94fa4f0c9d85bcdd8f3816ecc645..24405fb76f0995350f259d5c5b775863 + // 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 c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b36f4d6e3 100644 +index 8171385688405d9f3263c099177bd92e92d55c38..b959abd801fa2d0646375a388f1d9053fff88f29 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -349,6 +349,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -1619,7 +1619,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b return; } -@@ -1260,10 +1283,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1272,10 +1295,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic int maxBookPageSize = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier)); long byteAllowed = maxBookPageSize; @@ -1632,7 +1632,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1287,6 +1312,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1299,6 +1324,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic 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()); @@ -1640,7 +1640,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1340,13 +1366,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1352,13 +1378,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic itemstack1.setTag(nbttagcompound.copy()); } @@ -1660,7 +1660,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b this.updateBookPages(pages, (s) -> { return Component.Serializer.toJson(Component.literal(s)); -@@ -1358,10 +1387,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1370,10 +1399,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic private void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit ListTag nbttaglist = new ListTag(); @@ -1676,7 +1676,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b Objects.requireNonNull(nbttaglist); stream.forEach(nbttaglist::add); -@@ -1371,11 +1403,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1383,11 +1415,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic for (int j = list.size(); i < j; ++i) { FilteredText filteredtext = (FilteredText) list.get(i); @@ -1690,7 +1690,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b } } -@@ -1388,6 +1420,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1400,6 +1432,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } @@ -1707,7 +1707,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b @Override public void handleEntityTagQuery(ServerboundEntityTagQuery packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); -@@ -1417,8 +1459,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1429,8 +1471,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); @@ -1725,7 +1725,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b } else { ServerLevel worldserver = this.player.serverLevel(); -@@ -1601,7 +1651,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1613,7 +1663,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic if (!event.isAllowed()) { flag2 = true; // Paper - diff on change, this should be moved wrongly if (event.getLogWarning()) @@ -1734,7 +1734,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b } // Paper end } -@@ -1663,6 +1713,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1675,6 +1725,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -1743,7 +1743,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b // Skip the first time we do this if (from.getX() != Double.MAX_VALUE) { Location oldTo = to.clone(); -@@ -1701,6 +1753,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1713,6 +1765,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic this.player.resetFallDistance(); } @@ -1757,7 +1757,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b 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(); -@@ -1745,6 +1804,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1757,6 +1816,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic } } // Paper end - optimise out extra getCubes @@ -1771,7 +1771,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b private boolean isPlayerCollidingWithAnythingNew(LevelReader world, AABB box, double newX, double newY, double newZ) { AABB axisalignedbb1 = this.player.getBoundingBox().move(newX - this.player.getX(), newY - this.player.getY(), newZ - this.player.getZ()); Iterable iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D)); -@@ -2090,6 +2156,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2102,6 +2168,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { @@ -1779,7 +1779,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemstack, enumhand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2144,12 +2211,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2156,12 +2223,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @Override public void handleResourcePackResponse(ServerboundResourcePackPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); @@ -1801,7 +1801,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b player.getBukkitEntity().setResourcePackStatus(packStatus); this.cserver.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(this.getCraftPlayer(), packStatus)); // CraftBukkit // Paper end -@@ -2454,7 +2530,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2466,7 +2542,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic do { instant1 = (Instant) this.lastChatTimeStamp.get(); if (timestamp.isBefore(instant1)) { @@ -1810,7 +1810,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b } } while (!this.lastChatTimeStamp.compareAndSet(instant1, timestamp)); -@@ -2884,6 +2960,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2896,6 +2972,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic AABB axisalignedbb = entity.getBoundingBox(); if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.getMaxInteractionDistanceSquared(this.player.level())) { // Gale - make max interaction distance configurable @@ -1818,7 +1818,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b packet.dispatch(new ServerboundInteractPacket.Handler() { private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand); -@@ -2897,6 +2974,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2909,6 +2986,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -1827,7 +1827,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b // Entity in bucket - SPIGOT-4048 and SPIGOT-6859a 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. -@@ -3476,6 +3555,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3489,6 +3568,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic } } } @@ -1840,7 +1840,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b boolean flag1 = packet.getSlotNum() >= 1 && packet.getSlotNum() <= 45; boolean flag2 = itemstack.isEmpty() || itemstack.getDamageValue() >= 0 && itemstack.getCount() <= 64 && !itemstack.isEmpty(); -@@ -3631,6 +3716,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3644,6 +3729,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic private static final ResourceLocation CUSTOM_UNREGISTER = new ResourceLocation("unregister"); private static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support @@ -1848,7 +1848,7 @@ index c6d13f1df78d93fb4a21e6733c4ca7d22464bded..59eaa377ca7201d2c634ef30f588969b @Override public void handleCustomPayload(ServerboundCustomPayloadPacket packet) { -@@ -3655,6 +3741,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3668,6 +3754,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic 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 } @@ -1885,10 +1885,10 @@ index da6e9efd48567149123649e1a1014ebf14a4da2b..2163d62be320031b6cd1bed06a260080 } } catch (AuthenticationUnavailableException authenticationunavailableexception) { diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 016640e983367174603957049fc3d4d205e05103..155e5f5df5ba2d908f86d46fcff255469ba84597 100644 +index 382e2c990dbc5e278c48e93965f0b54c0a23b8e6..3f60073c5ced65abf67f6fe175f9032c7bf49cfa 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -492,6 +492,7 @@ public abstract class PlayerList { +@@ -500,6 +500,7 @@ public abstract class PlayerList { scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end @@ -1896,7 +1896,7 @@ index 016640e983367174603957049fc3d4d205e05103..155e5f5df5ba2d908f86d46fcff25546 // CraftBukkit - Moved from above, added world if (GaleGlobalConfiguration.get().logToConsole.playerLoginLocations) { // Gale - JettPack - make logging login location configurable PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); -@@ -607,6 +608,7 @@ public abstract class PlayerList { +@@ -615,6 +616,7 @@ public abstract class PlayerList { } public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) { // Paper end @@ -1904,7 +1904,7 @@ index 016640e983367174603957049fc3d4d205e05103..155e5f5df5ba2d908f86d46fcff25546 ServerLevel worldserver = entityplayer.serverLevel(); entityplayer.awardStat(Stats.LEAVE_GAME); -@@ -762,7 +764,7 @@ public abstract class PlayerList { +@@ -770,7 +772,7 @@ public abstract class PlayerList { event.disallow(PlayerLoginEvent.Result.KICK_BANNED, PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure } else { // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null; @@ -1913,7 +1913,7 @@ index 016640e983367174603957049fc3d4d205e05103..155e5f5df5ba2d908f86d46fcff25546 event.disallow(PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } -@@ -1002,6 +1004,8 @@ public abstract class PlayerList { +@@ -1010,6 +1012,8 @@ public abstract class PlayerList { } // Paper end @@ -1922,7 +1922,7 @@ index 016640e983367174603957049fc3d4d205e05103..155e5f5df5ba2d908f86d46fcff25546 // CraftBukkit end return entityplayer1; } -@@ -1101,6 +1105,20 @@ public abstract class PlayerList { +@@ -1109,6 +1113,20 @@ public abstract class PlayerList { } // CraftBukkit end @@ -1943,7 +1943,7 @@ index 016640e983367174603957049fc3d4d205e05103..155e5f5df5ba2d908f86d46fcff25546 public void broadcastAll(Packet packet, ResourceKey dimension) { Iterator iterator = this.players.iterator(); -@@ -1204,6 +1222,7 @@ public abstract class PlayerList { +@@ -1212,6 +1230,7 @@ public abstract class PlayerList { } else { b0 = (byte) (24 + permissionLevel); } @@ -1951,7 +1951,7 @@ index 016640e983367174603957049fc3d4d205e05103..155e5f5df5ba2d908f86d46fcff25546 player.connection.send(new ClientboundEntityEventPacket(player, b0)); } -@@ -1212,6 +1231,27 @@ public abstract class PlayerList { +@@ -1220,6 +1239,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper @@ -2282,7 +2282,7 @@ index 14fab63346d56c72cd7534a04760efd10eef4295..745e792482f61c571e2efbd4200dd1bd @Override diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2258cd07c 100644 +index 31d248b0a3ec735edff3aeb5e00fd009940013da..9038588608baec2e02c88a727662c903adcf5da6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -156,7 +156,7 @@ import org.bukkit.plugin.PluginManager; @@ -2312,15 +2312,15 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -418,6 +418,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - private UUID originWorld; +@@ -419,6 +419,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public boolean freezeLocked = false; // Paper - Freeze Tick Lock API public boolean collidingWithWorldBorder; // Paper + public boolean fixedPose = false; // Paper + public @Nullable Boolean immuneToFire = null; // Purpur - Fire immune API public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -493,6 +494,42 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -494,6 +495,42 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return false; } @@ -2363,7 +2363,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 public final boolean hardCollides() { return this.hardCollides; } -@@ -598,7 +635,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -599,7 +636,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; @@ -2372,7 +2372,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 this.remainingFireTicks = -this.getFireImmuneTicks(); this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); -@@ -919,10 +956,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -921,10 +958,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public void checkBelowWorld() { // Paper start - Configurable nether ceiling damage @@ -2385,7 +2385,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 this.onBelowWorld(); } -@@ -1814,7 +1852,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1816,7 +1854,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean fireImmune() { @@ -2394,7 +2394,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -1883,7 +1921,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1885,7 +1923,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return this.isInWater() || flag; } @@ -2403,7 +2403,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 Entity entity = this.getVehicle(); if (entity instanceof Boat) { -@@ -2492,6 +2530,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2494,6 +2532,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { nbt.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -2415,7 +2415,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 return nbt; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2660,6 +2703,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2662,6 +2705,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -2427,7 +2427,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); -@@ -2961,6 +3009,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2963,6 +3011,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.passengers = ImmutableList.copyOf(list); } @@ -2441,7 +2441,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3001,6 +3056,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3003,6 +3058,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return false; } // Spigot end @@ -2456,7 +2456,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -3060,12 +3123,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3062,12 +3125,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return Vec3.directionFromRotation(this.getRotationVector()); } @@ -2473,7 +2473,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 } this.isInsidePortal = true; -@@ -3114,7 +3180,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3116,7 +3182,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.processPortalCooldown(); @@ -2482,7 +2482,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 } } -@@ -3300,7 +3366,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3302,7 +3368,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public int getMaxAirSupply() { @@ -2491,7 +2491,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 } public int getAirSupply() { -@@ -3764,7 +3830,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3766,7 +3832,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean canChangeDimensions() { @@ -2500,7 +2500,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 } public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { -@@ -4071,6 +4137,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4073,6 +4139,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return SlotAccess.NULL; } @@ -2521,7 +2521,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 @Override public void sendSystemMessage(Component message) {} -@@ -4352,6 +4432,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4342,6 +4422,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.yRotO = this.getYRot(); } @@ -2534,7 +2534,7 @@ index 4e1db12dbffd839cd37130ddfd494226c65c0d0e..2763c93cc32b4b0954cb34c67cbeccd2 public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { if (false && this.touchingUnloadedChunk()) { // Gale - Airplane - reduce entity fluid lookups if no fluids - cost of a lookup here is the same cost as below, so skip return false; -@@ -4915,4 +5001,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4905,4 +4991,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end @@ -7315,7 +7315,7 @@ index 7cb7db148175f5fa4a0e432ccfb2a46cbd106e70..70bf8e4c86cfcd666f6323b397923509 brain.setMemory(MemoryModuleType.RAM_TARGET, entity.position()); brain.eraseMemory(MemoryModuleType.RAM_COOLDOWN_TICKS); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 9b35a50eb99551f28d45fd5114e0401b4c54646e..8400f02a37bdef4a9f92879a6b186ebe1f2f145e 100644 +index 49d7109b6ca63c8073db777549a65b2fcb70967e..fdf41f4990923aa4309febb9c0ca8009de8e16f1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -147,12 +147,60 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @@ -7396,7 +7396,7 @@ index 9b35a50eb99551f28d45fd5114e0401b4c54646e..8400f02a37bdef4a9f92879a6b186ebe } protected int getInventorySize() { -@@ -1255,7 +1304,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -1247,7 +1296,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, entityData = new AgeableMob.AgeableMobGroupData(0.2F); } @@ -8047,7 +8047,7 @@ index ffc5b68c4246a7111845230a75552bb15875a209..440add62fcfa62d483409e1aecfc9159 this.onDestroyedBy(source); 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 92666c48620078623a451fbf68f673cb9f81c4b5..cf6330694b811cef743763e0915824df8f75fe27 100644 +index a24ae93efcdb2da5782d342c7697a1bb253400c7..ec595b74a6376adb65840035cdaa7502c9a3fe50 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 @@ -105,9 +105,11 @@ public class EnderDragon extends Mob implements Enemy { @@ -8224,7 +8224,7 @@ index 92666c48620078623a451fbf68f673cb9f81c4b5..cf6330694b811cef743763e0915824df // CraftBukkit start - Add blocks to list rather than destroying them // flag1 = this.level().removeBlock(blockposition, false) || flag1; flag1 = true; -@@ -667,7 +753,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -676,7 +762,7 @@ public class EnderDragon extends Mob implements Enemy { boolean flag = this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT); short short0 = 500; @@ -8233,7 +8233,7 @@ index 92666c48620078623a451fbf68f673cb9f81c4b5..cf6330694b811cef743763e0915824df short0 = 12000; } -@@ -1102,6 +1188,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -1111,6 +1197,7 @@ public class EnderDragon extends Mob implements Enemy { @Override protected boolean canRide(Entity entity) { @@ -8577,10 +8577,10 @@ index 5c6e060a54ffb13c37ff5711992e964bdd59643d..4c5f20bafe589fbd4a034408edb721ac + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -index dcf245387f59ce730cb2cfb5fc0e837a20d3dfe5..1673ae24557990b241d09372329513ec26cc5100 100644 +index 759ecd79534a7706f7d4a63eb9dacbefcfe54674..182faba889dc15a3500c5919cad8a5483a53033a 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -@@ -272,7 +272,13 @@ public class ItemFrame extends HangingEntity { +@@ -273,7 +273,13 @@ public class ItemFrame extends HangingEntity { } if (alwaysDrop) { @@ -12946,7 +12946,7 @@ index 574ebb3a2fcd0e4e426a8a7ee88d722ed3b9c3f5..862972afa333422592a25b854cec191e } diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index cff4d09af11d1741bf3301b457555d71e77e801c..2bca617a1f0198c5ddba1be09cc498b3364629b6 100644 +index 6d113b2445ff56cbf2b22f4dfedea4bda746b583..4863351781c27b4d4777a2ceb83bbae0186a5500 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java @@ -72,6 +72,7 @@ public abstract class AbstractArrow extends Projectile { @@ -13126,10 +13126,10 @@ index e8114d89a3129e56c0329410a49ded63cc77cb4c..d7359c675707eade00f9b737fd67ef8d } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java -index 454dd67920826b8b62c2654abfd43fc08c2648e4..0ea182962d6647629fc98c9e7406f7b7ce012c5e 100644 +index a6bc277b6589dd7104566542733327822d6299a4..dde841cc09ba4a3575a462b03537887551d47ba5 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java -@@ -60,7 +60,7 @@ public class ThrownTrident extends AbstractArrow { +@@ -62,7 +62,7 @@ public class ThrownTrident extends AbstractArrow { Entity entity = this.getOwner(); byte b0 = (Byte) this.entityData.get(ThrownTrident.ID_LOYALTY); @@ -13330,7 +13330,7 @@ index 9948a28dae4edba877c13ef0156be5ff58df3fa2..c9b7b12470afac45b0132858407aacb8 Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java -index 35aeba4e8430e6419caa9db4a0b931a994228618..a941b00f0e4b667925ca68cc706245b05478ad77 100644 +index 2c5658df753ebc08f8531d4bdf22ff8f6ca77e94..a7ab9e2284d4a1ae6f5601adc3dfac534bce26fc 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java @@ -223,7 +223,13 @@ public class Boat extends Entity implements VariantHolder { @@ -13973,7 +13973,7 @@ index 18898e16ec42f6b694b06e09d9174b60d62450d7..20f33b77b4a9494be227456bc742a029 return InteractionResult.PASS; } diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java -index ebee8de2ed831755b6fd154f6cc77ac993839bb9..9ecc80c7d1fa1bccf0c44c812274c8f6292cebc7 100644 +index 65c69432da4bc042cd975e01fcf62b09843cf202..3802025f4739b7cb58bd039f52ce2744ebe6f345 100644 --- a/src/main/java/net/minecraft/world/item/BlockItem.java +++ b/src/main/java/net/minecraft/world/item/BlockItem.java @@ -153,7 +153,24 @@ public class BlockItem extends Item { @@ -14952,7 +14952,7 @@ index 8e84db48bb2658ce9d24c31f413aa23924839731..947619426529d747dbee477bfa8cfa53 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 135c62a90b1cf924812fa4c8c224057eed67a109..38a2456da7c5fa4a6df0884866b3a44936ce0102 100644 +index 739ecf5853e7e99ff92604656d61620b93064428..cc41a921d3d3b07267317ac75f7aba33c39562a4 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -258,7 +258,7 @@ public final class NaturalSpawner { @@ -15105,7 +15105,7 @@ index 5921f7ebb56e1d5d3004ae327271873093cff357..c7bb655983d2ee2c6461d23d6fa921de if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index e9d37ab8e2b072454c46d4520491beac5873a7ec..43c15ce83854904e3b998f61dd31cd257a5bb6bf 100644 +index 5f607c2d58a7b1016f6cc4a06e2abf5aabc0a462..15868cef6d7037a9c914244bc975fef238c6ff30 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java @@ -64,6 +64,13 @@ import net.minecraft.world.phys.shapes.Shapes; @@ -15206,8 +15206,8 @@ index e9d37ab8e2b072454c46d4520491beac5873a7ec..43c15ce83854904e3b998f61dd31cd25 public static void popResource(Level world, BlockPos pos, ItemStack stack) { double d0 = (double) EntityType.ITEM.getHeight() / 2.0D; double d1 = (double) pos.getX() + 0.5D + Mth.nextDouble(world.random, -0.25D, 0.25D); -@@ -425,7 +476,17 @@ public class Block extends BlockBehaviour implements ItemLike { - Block.dropResources(state, world, pos, blockEntity, player, tool); +@@ -433,7 +484,17 @@ public class Block extends BlockBehaviour implements ItemLike { + } // Paper } - public void setPlacedBy(Level world, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack itemStack) {} @@ -15225,7 +15225,7 @@ index e9d37ab8e2b072454c46d4520491beac5873a7ec..43c15ce83854904e3b998f61dd31cd25 public boolean isPossibleToRespawnInThis(BlockState state) { return !state.isSolid() && !state.liquid(); -@@ -444,7 +505,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -452,7 +513,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { @@ -15437,26 +15437,6 @@ index 5e22d175b1048a58802cdf64ac70a8b56329e915..d81946b400f208c39941128ce823ff77 BlockPos blockposition1 = pos.above(); return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); -diff --git a/src/main/java/net/minecraft/world/level/block/ChorusPlantBlock.java b/src/main/java/net/minecraft/world/level/block/ChorusPlantBlock.java -index a6c25647fb37f59307de0d390f8e8cf55504d7d3..52aae8bd4023b2bb48f12983f54b20fa3c95d403 100644 ---- a/src/main/java/net/minecraft/world/level/block/ChorusPlantBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/ChorusPlantBlock.java -@@ -21,6 +21,7 @@ public class ChorusPlantBlock extends PipeBlock { - - @Override - public BlockState getStateForPlacement(BlockPlaceContext ctx) { -+ if (org.purpurmc.purpur.PurpurConfig.disableChorusPlantUpdates) return this.defaultBlockState(); // Purpur - return this.getStateForPlacement(ctx.getLevel(), ctx.getClickedPos()); - } - -@@ -36,6 +37,7 @@ public class ChorusPlantBlock extends PipeBlock { - - @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { -+ if (org.purpurmc.purpur.PurpurConfig.disableChorusPlantUpdates) return state; // Purpur - if (!state.canSurvive(world, pos)) { - world.scheduleTick(pos, this, 1); - return super.updateShape(state, direction, neighborState, world, pos, neighborPos); diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java index 0500d4b96328ccc64e0dd3bd2d35c6b7bd21907e..8daea5e92ebb0715c99695cff307f132fcfd01bd 100644 --- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java @@ -15851,10 +15831,10 @@ index cfbe1dae76db76cf54a4f5d72aca72d5e893859e..74cb10230d459ac9f300a9d59af504d2 } } diff --git a/src/main/java/net/minecraft/world/level/block/HugeMushroomBlock.java b/src/main/java/net/minecraft/world/level/block/HugeMushroomBlock.java -index 3c6d97b51c6fec130b80e5965afa2c49d48843c9..b456cb8efd8f0be8a6860c82462ce9bdde3a8383 100644 +index 1dd44eb0ab977093660e8fe6f49338e7f5ef7b28..e7c3f8a9a849ad38ac02eb084436cf122f29d4cf 100644 --- a/src/main/java/net/minecraft/world/level/block/HugeMushroomBlock.java +++ b/src/main/java/net/minecraft/world/level/block/HugeMushroomBlock.java -@@ -22,29 +22,65 @@ public class HugeMushroomBlock extends Block { +@@ -22,7 +22,15 @@ public class HugeMushroomBlock extends Block { public HugeMushroomBlock(BlockBehaviour.Properties settings) { super(settings); @@ -15871,8 +15851,8 @@ index 3c6d97b51c6fec130b80e5965afa2c49d48843c9..b456cb8efd8f0be8a6860c82462ce9bd } @Override - public BlockState getStateForPlacement(BlockPlaceContext ctx) { -+ if (org.purpurmc.purpur.PurpurConfig.disableMushroomBlockUpdates) return this.defaultBlockState(); // Purpur +@@ -30,7 +38,15 @@ public class HugeMushroomBlock extends Block { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableMushroomBlockUpdates) return this.defaultBlockState(); // Paper - add option to disable block updates BlockGetter blockGetter = ctx.getLevel(); BlockPos blockPos = ctx.getClickedPos(); - return this.defaultBlockState().setValue(DOWN, Boolean.valueOf(!blockGetter.getBlockState(blockPos.below()).is(this))).setValue(UP, Boolean.valueOf(!blockGetter.getBlockState(blockPos.above()).is(this))).setValue(NORTH, Boolean.valueOf(!blockGetter.getBlockState(blockPos.north()).is(this))).setValue(EAST, Boolean.valueOf(!blockGetter.getBlockState(blockPos.east()).is(this))).setValue(SOUTH, Boolean.valueOf(!blockGetter.getBlockState(blockPos.south()).is(this))).setValue(WEST, Boolean.valueOf(!blockGetter.getBlockState(blockPos.west()).is(this))); @@ -15887,45 +15867,9 @@ index 3c6d97b51c6fec130b80e5965afa2c49d48843c9..b456cb8efd8f0be8a6860c82462ce9bd + // Purpur end } - @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { -+ if (org.purpurmc.purpur.PurpurConfig.disableMushroomBlockUpdates) return state; // Purpur - return neighborState.is(this) ? state.setValue(PROPERTY_BY_DIRECTION.get(direction), Boolean.valueOf(false)) : super.updateShape(state, direction, neighborState, world, pos, neighborPos); - } - - @Override - public BlockState rotate(BlockState state, Rotation rotation) { -- return state.setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.NORTH)), state.getValue(NORTH)).setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.SOUTH)), state.getValue(SOUTH)).setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.EAST)), state.getValue(EAST)).setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.WEST)), state.getValue(WEST)).setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.UP)), state.getValue(UP)).setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.DOWN)), state.getValue(DOWN)); -+ // Purpur start -+ if (org.purpurmc.purpur.PurpurConfig.disableMushroomBlockUpdates) return state; -+ return state -+ .setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.NORTH)), state.getValue(NORTH)) -+ .setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.SOUTH)), state.getValue(SOUTH)) -+ .setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.EAST)), state.getValue(EAST)) -+ .setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.WEST)), state.getValue(NORTH)) -+ .setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.UP)), state.getValue(UP)) -+ .setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.DOWN)), state.getValue(DOWN)); -+ // Purpur end - } - - @Override - public BlockState mirror(BlockState state, Mirror mirror) { -- return state.setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.NORTH)), state.getValue(NORTH)).setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.SOUTH)), state.getValue(SOUTH)).setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.EAST)), state.getValue(EAST)).setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.WEST)), state.getValue(WEST)).setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.UP)), state.getValue(UP)).setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.DOWN)), state.getValue(DOWN)); -+ // Purpur start -+ if (org.purpurmc.purpur.PurpurConfig.disableMushroomBlockUpdates) return state; -+ return state -+ .setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.NORTH)), state.getValue(NORTH)) -+ .setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.SOUTH)), state.getValue(SOUTH)) -+ .setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.EAST)), state.getValue(EAST)) -+ .setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.WEST)), state.getValue(NORTH)) -+ .setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.UP)), state.getValue(UP)) -+ .setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.DOWN)), state.getValue(DOWN)); -+ // Purpur end - } - @Override diff --git a/src/main/java/net/minecraft/world/level/block/IceBlock.java b/src/main/java/net/minecraft/world/level/block/IceBlock.java -index 5fbdc96f29e29dfc092b9e84a988032db0fa36ab..1352168db8f3062943cc05396cbd9b535508c461 100644 +index 04089e6f7d6e3d532b00585870283922b6be5246..61e6d14abd54ecd5e43a5459f8daa7d86adedf44 100644 --- a/src/main/java/net/minecraft/world/level/block/IceBlock.java +++ b/src/main/java/net/minecraft/world/level/block/IceBlock.java @@ -33,7 +33,7 @@ public class IceBlock extends HalfTransparentBlock { @@ -16409,7 +16353,7 @@ index c3f500580d257e1397f2eb7c47b063a6fe6bb405..0d5c6bdfd4aeda472804b493315bf21a + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 6c1a0e6f961e46a1a89850746a71e97b32514adf..a8c227e2cb62cfa8225798329cde9078d194c776 100644 +index 181e99e3f29c70568b6f28f8a5d3bb692f7abad8..58facc048840d3ba0a58c92673340e6e0aa4e305 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java @@ -160,7 +160,7 @@ public class TurtleEggBlock extends Block { @@ -17150,7 +17094,7 @@ index 974cd5ff0836d89127be190b1335d945df1cb73c..05334f99e6ef1bb9449e352b79b21c0d if (state.getBlock() instanceof LiquidBlockContainer) { ((LiquidBlockContainer) state.getBlock()).placeLiquid(world, pos, state, fluidState); diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java -index 72f8b72c6436ca3b8eaeb39c7d3efe2c1462ae1d..f3d4a4196847e26934b6d2ed592f0ddb0e53182b 100644 +index c3f8e1e2dd89c168b8b4a15b589109db486bc8d7..70ddb3b130ee59a6e200ea5af3ac89f3c3fa9e9b 100644 --- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java +++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java @@ -180,7 +180,7 @@ public abstract class LavaFluid extends FlowingFluid { @@ -17176,17 +17120,8 @@ index 72f8b72c6436ca3b8eaeb39c7d3efe2c1462ae1d..f3d4a4196847e26934b6d2ed592f0ddb @Override protected boolean canConvertToSource(Level world) { return world.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION); -@@ -232,7 +239,7 @@ public abstract class LavaFluid extends FlowingFluid { - - @Override - protected float getExplosionResistance() { -- return 100.0F; -+ return Blocks.LAVA.getExplosionResistance(); // Purpur - } - - @Override diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java -index 82e85fbbd45244d02df90fa00c9046e7f51275a2..0f16deddd8cbb506ef7886f57ae640a42e841703 100644 +index d280c98aed5262c4ce39526c917de884f25a8584..e7d9f6802520620a1dcf0938256ffe80fc72a6f0 100644 --- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java +++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java @@ -64,6 +64,13 @@ public abstract class WaterFluid extends FlowingFluid { @@ -17203,15 +17138,6 @@ index 82e85fbbd45244d02df90fa00c9046e7f51275a2..0f16deddd8cbb506ef7886f57ae640a4 // Paper start @Override protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { -@@ -109,7 +116,7 @@ public abstract class WaterFluid extends FlowingFluid { - - @Override - protected float getExplosionResistance() { -- return 100.0F; -+ return Blocks.WATER.getExplosionResistance(); // Purpur - } - - @Override diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java index 3583fcf5284bc5883308876dbd9886664b391e28..ba57accc272958da4714896baeadb52c99383561 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java @@ -17257,7 +17183,7 @@ index c461e0d04047db9c0c5ecc04063cebd38bf96ec2..e7554ec800f321e4e34c926c53f2375a private static final float SAFE_TRAVEL_MAX_ENTITY_XY = 4.0F; private static final double SAFE_TRAVEL_MAX_VERTICAL_DELTA = 1.0D; diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -index 3b12030b49b1c539684d75ca3896eb498400ef99..23c7ded4049c08bc62f8b823e0967da4f3df4bf9 100644 +index 50713f03c783c63f93710d986d94af544be0615a..e64921f454c88e2ca9e1396fcb1ca7c179ff71a7 100644 --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java @@ -66,6 +66,7 @@ public class MapItemSavedData extends SavedData { @@ -17520,7 +17446,7 @@ index c6129dc565b8f874b73e2fefcabd4be1c221fd73..07050f97621c0cb68b48bf39fb9c9067 + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index a907bfa9347a333282ceb708d720e5b9090a31e0..89bf7a3723b1dc9351beaf59777cc9ce0c42a441 100644 +index f44bb05c9478ec9a4d9c512fa1b6fc3a8acd5949..40ce72ac4ca4f262ad77cf5ba47b8f2c8d9055d2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -401,6 +401,20 @@ public final class CraftServer implements Server { @@ -17624,7 +17550,7 @@ index a907bfa9347a333282ceb708d720e5b9090a31e0..89bf7a3723b1dc9351beaf59777cc9ce @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2865,6 +2931,7 @@ public final class CraftServer implements Server { +@@ -2895,6 +2961,7 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { return new double[] { @@ -17632,7 +17558,7 @@ index a907bfa9347a333282ceb708d720e5b9090a31e0..89bf7a3723b1dc9351beaf59777cc9ce net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -2957,6 +3024,18 @@ public final class CraftServer implements Server { +@@ -2987,6 +3054,18 @@ public final class CraftServer implements Server { } // Gale end - Gale configuration - API @@ -17651,7 +17577,7 @@ index a907bfa9347a333282ceb708d720e5b9090a31e0..89bf7a3723b1dc9351beaf59777cc9ce @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -3188,4 +3267,15 @@ public final class CraftServer implements Server { +@@ -3218,4 +3297,15 @@ public final class CraftServer implements Server { } // Gale end - YAPFA - last tick time - API @@ -17668,7 +17594,7 @@ index a907bfa9347a333282ceb708d720e5b9090a31e0..89bf7a3723b1dc9351beaf59777cc9ce + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 0cc4025613df85ace29db75cb8c4a465a69b1a06..555f8d3aff7a6c1beed604dddc316d5904a0ea77 100644 +index 18408d64905571283551c358f472c37f8b2593ef..8cc31f09ab179e33647838bcadce946ba4fb7a2f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -2290,6 +2290,48 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -17858,10 +17784,10 @@ index 3d0ce0803e1da8a2681a3cb41096ac942ece54a1..bcd075a771c7f43c6d1549aeec2ccb20 return null; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java -index 75c7645fb5732c43d1da15181cf5c7ee4c3ecd6c..e7f5ea4d8d72672cf03483e720c6389425f28f6d 100644 +index d657fd2c507a5b215aeab0a5f3e9c2ee892a27c8..985e9ec21c60a1f47973bd5fc53b96a6f9b7d04a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java -@@ -27,12 +27,12 @@ public class CraftEndermite extends CraftMonster implements Endermite { +@@ -21,12 +21,12 @@ public class CraftEndermite extends CraftMonster implements Endermite { @Override public boolean isPlayerSpawned() { @@ -17877,11 +17803,11 @@ index 75c7645fb5732c43d1da15181cf5c7ee4c3ecd6c..e7f5ea4d8d72672cf03483e720c63894 // Paper start @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index fc0dc8e607cc24020106ea1af92b4421a5f9393d..edd9fb7154d1082b3fe6d7b6e470f4f4c5459e4b 100644 +index 2dbe8b870fd39b4d22e9725912f443757ae70761..8973c8a3bad120e55269bf1b7b810284ad0fe14c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -218,6 +218,21 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - this.entity = entity; +@@ -224,6 +224,21 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + this.entityType = (type != null) ? type : EntityType.UNKNOWN; } + @Override @@ -17902,7 +17828,7 @@ index fc0dc8e607cc24020106ea1af92b4421a5f9393d..edd9fb7154d1082b3fe6d7b6e470f4f4 public static CraftEntity getEntity(CraftServer server, Entity entity) { /* * Order is *EXTREMELY* important -- keep it right! =D -@@ -595,6 +610,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -601,6 +616,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { // Paper end if ((!ignorePassengers && this.entity.isVehicle()) || this.entity.isRemoved()) { // Paper - Teleport passenger API @@ -17913,10 +17839,10 @@ index fc0dc8e607cc24020106ea1af92b4421a5f9393d..edd9fb7154d1082b3fe6d7b6e470f4f4 return false; } -@@ -1450,4 +1469,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - return !this.getHandle().level().noCollision(this.getHandle(), aabb); +@@ -1507,4 +1526,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + return this.getHandle().getScoreboardName(); } - // Paper End - Collision API + // Paper end - entity scoreboard name + + // Purpur start + @Override @@ -17954,12 +17880,12 @@ index 5fe9a0985432ac6cdd28a2a138854a24f10e42ba..9163bb797a22daedbc822ecc2ad33683 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java -index 2966d4d466f44751b2f02afda2273a708c12b251..55f19324f92f98e497da49d3022e0edfc2351461 100644 +index 75d10b5322eb0a62bce2855c04a5151eb857d7de..208018981a2a5666c455eb34614b03f617354165 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java -@@ -33,4 +33,17 @@ public class CraftIronGolem extends CraftGolem implements IronGolem { - public EntityType getType() { - return EntityType.IRON_GOLEM; +@@ -27,4 +27,17 @@ public class CraftIronGolem extends CraftGolem implements IronGolem { + public void setPlayerCreated(boolean playerCreated) { + this.getHandle().setPlayerCreated(playerCreated); } + + // Purpur start @@ -17976,12 +17902,12 @@ index 2966d4d466f44751b2f02afda2273a708c12b251..55f19324f92f98e497da49d3022e0edf + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index a925b5c490e7129b27370aa57b5fad1cf05530c6..ea15690da167ec5e653da6f5afb55b33c45d1622 100644 +index 5e83fabb20bc2b0668cbf48530053ca1bb9092f3..4ffb4046b63cbc140c76721f51c9a7a09e81844d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -@@ -160,4 +160,51 @@ public class CraftItem extends CraftEntity implements Item { - public EntityType getType() { - return EntityType.DROPPED_ITEM; +@@ -154,4 +154,51 @@ public class CraftItem extends CraftEntity implements Item { + public String toString() { + return "CraftItem"; } + + // Purpur start @@ -18032,7 +17958,7 @@ index a925b5c490e7129b27370aa57b5fad1cf05530c6..ea15690da167ec5e653da6f5afb55b33 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 6095d43e08bc1ffc4e9a4796fc7adbd07d69d716..4cf2f76409edb331119775c0e12bc4eac8b1113a 100644 +index f0ce29d21fe9af803ce4e41b8c037b2ec5d1b124..6968204b6cf952dbc850f9df0b66fbff0d866aa3 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -453,7 +453,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -18071,7 +17997,7 @@ index 6095d43e08bc1ffc4e9a4796fc7adbd07d69d716..4cf2f76409edb331119775c0e12bc4ea } return effects; } -@@ -1099,4 +1099,32 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1094,4 +1094,32 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end @@ -18105,10 +18031,10 @@ index 6095d43e08bc1ffc4e9a4796fc7adbd07d69d716..4cf2f76409edb331119775c0e12bc4ea + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java -index 4d7a2c4c1001aefe9fcd4be8dbcb414f721bfff9..2c7716a9d65ebda209a144b82c2126b602aa9182 100644 +index 0ad16ee7b33582d214dab41eeee378d52c8e38ed..16bd1294c219f15ada653ef810bc2d748222d0da 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java -@@ -96,4 +96,16 @@ public class CraftLlama extends CraftChestedHorse implements Llama, com.destroys +@@ -90,4 +90,16 @@ public class CraftLlama extends CraftChestedHorse implements Llama, com.destroys return this.getHandle().caravanTail == null ? null : (Llama) this.getHandle().caravanTail.getBukkitEntity(); } // Paper end @@ -18126,7 +18052,7 @@ index 4d7a2c4c1001aefe9fcd4be8dbcb414f721bfff9..2c7716a9d65ebda209a144b82c2126b6 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5bbded65095dccfadaf7576fc41b5f62974878b4..cdbbdb3f5a8b43811c564d1444a2b102add3ba72 100644 +index 472705e92cef5802f377637d8ea5c8001d7a185c..018cf3cd424ac85e8d84179bc05ab241f0a00827 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -510,10 +510,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -18157,7 +18083,7 @@ index 5bbded65095dccfadaf7576fc41b5f62974878b4..cdbbdb3f5a8b43811c564d1444a2b102 return false; } -@@ -2441,6 +2450,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2489,6 +2498,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -18186,7 +18112,7 @@ index 5bbded65095dccfadaf7576fc41b5f62974878b4..cdbbdb3f5a8b43811c564d1444a2b102 private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3212,4 +3243,90 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3260,4 +3291,90 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end @@ -18278,12 +18204,12 @@ index 5bbded65095dccfadaf7576fc41b5f62974878b4..cdbbdb3f5a8b43811c564d1444a2b102 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java -index 42b7058d93fab8cbee49dba130734e1df9910096..5c6f55527cc0016f09b443528463b3906c433f8b 100644 +index e4a14cdfeb91a3d32e622d27d612605b1bca08e2..898d934aafd6066df45f02fe3406fa83f79b745c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java -@@ -34,4 +34,17 @@ public class CraftSnowman extends CraftGolem implements Snowman, com.destroystok - public EntityType getType() { - return EntityType.SNOWMAN; +@@ -28,4 +28,17 @@ public class CraftSnowman extends CraftGolem implements Snowman, com.destroystok + public String toString() { + return "CraftSnowman"; } + + // Purpur start @@ -18300,10 +18226,10 @@ index 42b7058d93fab8cbee49dba130734e1df9910096..5c6f55527cc0016f09b443528463b390 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -index f21c715ea109164efa755cddb35ef656a9859759..0c9154d1d3c1534a25c08c75fab102b68958fab9 100644 +index f29e221e5b850516c169c03bfbd2b0885d1a841b..9e343d6e6393db17748fd13d76354464e128001f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -@@ -222,4 +222,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { +@@ -216,4 +216,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { getHandle().getGossips().gossips.clear(); } // Paper end @@ -18316,10 +18242,10 @@ index f21c715ea109164efa755cddb35ef656a9859759..0c9154d1d3c1534a25c08c75fab102b6 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java -index 1477c2c04d8f5c5639ce94808fe2a7029cedaeb2..e333c591582ac196f2cea1b69d39117092e80a3a 100644 +index 5a97c92f9b044d8ab7bd3346ceb464455a09046e..e30d8b80734f04b1fa89e8a3cef666116fd7366c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java -@@ -105,4 +105,17 @@ public class CraftWither extends CraftMonster implements Wither, com.destroystok +@@ -99,4 +99,17 @@ public class CraftWither extends CraftMonster implements Wither, com.destroystok this.getHandle().makeInvulnerable(); } // Paper end @@ -18338,10 +18264,10 @@ index 1477c2c04d8f5c5639ce94808fe2a7029cedaeb2..e333c591582ac196f2cea1b69d391170 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f854532f4c181b 100644 +index e16459c9cfcac790edd6d912750d32c68387cbbc..890938ad866e2c588f3f819230ba121b0b436401 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -@@ -63,4 +63,16 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf { +@@ -57,4 +57,16 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf { public void setInterested(boolean flag) { this.getHandle().setIsInterested(flag); } @@ -18359,7 +18285,7 @@ index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f85453 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 26e1a9002d675245d4cf91e6682605314b078fb2..6db204dead67aac300410a6d2627cde8446630b5 100644 +index 676c44f688c41df66e304db30a05d6cc967bcf99..222fc8368b6bd0ca32811aebfa611dd5037076b5 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -590,6 +590,15 @@ public class CraftEventFactory { @@ -24717,7 +24643,7 @@ index 0000000000000000000000000000000000000000..b7586f494528f30eb0da82420d3bcf5b + } +} diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 9186aa5baf313f45b4befe6f062566b6698f6702..1f9b7ac1e87baa484b6d38c3bd1f18654710e460 100644 +index de4ea65a2bead3f20b205df28656d43636ba16df..4e6c185a7bda830bbce8927caf15457c3d885443 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -15,6 +15,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature; @@ -24728,7 +24654,7 @@ index 9186aa5baf313f45b4befe6f062566b6698f6702..1f9b7ac1e87baa484b6d38c3bd1f1865 import net.minecraft.world.entity.animal.WaterAnimal; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.boss.EnderDragonPart; -@@ -216,6 +217,7 @@ public class ActivationRange +@@ -217,6 +218,7 @@ public class ActivationRange continue; } @@ -24736,7 +24662,7 @@ index 9186aa5baf313f45b4befe6f062566b6698f6702..1f9b7ac1e87baa484b6d38c3bd1f1865 // Paper start int worldHeight = world.getHeight(); ActivationRange.maxBB = player.getBoundingBox().inflate( maxRange, worldHeight, maxRange ); -@@ -409,6 +411,7 @@ public class ActivationRange +@@ -410,6 +412,7 @@ public class ActivationRange */ public static boolean checkIfActive(Entity entity) { diff --git a/patches/server/0011-Purpur-Configurable-server-mod-name.patch b/patches/server/0011-Purpur-Configurable-server-mod-name.patch index 46b486c0..45fbdf16 100644 --- a/patches/server/0011-Purpur-Configurable-server-mod-name.patch +++ b/patches/server/0011-Purpur-Configurable-server-mod-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur: Configurable server mod name diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1a6b8b764a762821e5b7b2342658df7bc09323c3..8f6dced165b6b35579f6efe4396864ae40a5a361 100644 +index 056d5541b2bc563e479ef3c8f63f41fdea7bc23a..65f6160b9c6d79f8b9511bec953ecd0d3c04b7d8 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1679,7 +1679,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 1.18.x update by Mojang. By removing this check, it enable hackers to use some modules of hack clients. diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 59eaa377ca7201d2c634ef30f588969b36f4d6e3..281a2eeed84b8d4c1db808edf0d40d5e1971c742 100644 +index b959abd801fa2d0646375a388f1d9053fff88f29..823ad91c82d96477655d9f895483a3dd07f30e84 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2089,7 +2089,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2101,7 +2101,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic Vec3 vec3d2 = vec3d.subtract(vec3d1); double d0 = 1.0000001D; diff --git a/patches/server/0017-KeYi-Player-Skull-API.patch b/patches/server/0017-KeYi-Player-Skull-API.patch index e25a067f..a081f641 100644 --- a/patches/server/0017-KeYi-Player-Skull-API.patch +++ b/patches/server/0017-KeYi-Player-Skull-API.patch @@ -7,7 +7,7 @@ Original license: MIT Original project: https://github.com/KeYiMC/KeYi diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index cdbbdb3f5a8b43811c564d1444a2b102add3ba72..01df6c21ea460fd0be1188088767dcb534db37ae 100644 +index 018cf3cd424ac85e8d84179bc05ab241f0a00827..3b769a430b736ea77d331e7bfea9c33b59868509 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -29,6 +29,11 @@ import java.util.Optional; @@ -22,7 +22,7 @@ index cdbbdb3f5a8b43811c564d1444a2b102add3ba72..01df6c21ea460fd0be1188088767dcb5 import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.Nullable; -@@ -164,6 +169,7 @@ import org.bukkit.event.player.PlayerUnregisterChannelEvent; +@@ -163,6 +168,7 @@ import org.bukkit.event.player.PlayerUnregisterChannelEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.InventoryView.Property; import org.bukkit.inventory.ItemStack; @@ -30,7 +30,7 @@ index cdbbdb3f5a8b43811c564d1444a2b102add3ba72..01df6c21ea460fd0be1188088767dcb5 import org.bukkit.map.MapCursor; import org.bukkit.map.MapView; import org.bukkit.metadata.MetadataValue; -@@ -3329,4 +3335,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3377,4 +3383,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message))); } // Purpur end diff --git a/patches/server/0021-Carpet-Fixes-Use-optimized-RecipeManager.patch b/patches/server/0021-Carpet-Fixes-Use-optimized-RecipeManager.patch index b02288a6..31da8d6c 100644 --- a/patches/server/0021-Carpet-Fixes-Use-optimized-RecipeManager.patch +++ b/patches/server/0021-Carpet-Fixes-Use-optimized-RecipeManager.patch @@ -11,7 +11,7 @@ This is a fully vanilla optimization. Improves: [Blast]Furnace/Campfire/Smoker/S This was mostly made for the auto crafting table, since the performance boost is much more visible while using that mod diff --git a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java -index ab6dc3449a1d3b7acf1d7bf5ac1c24224cc252c7..15db40b1bcf56e0eecb9b4a709aa0e4c1e8c9b75 100644 +index 9ffb6999171f602f0b113dac40e0130410cad870..3efac27f360b45e53a11374cf9a051f9eee8ddf3 100644 --- a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java +++ b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java @@ -11,8 +11,8 @@ import com.google.gson.JsonParseException; @@ -24,7 +24,7 @@ index ab6dc3449a1d3b7acf1d7bf5ac1c24224cc252c7..15db40b1bcf56e0eecb9b4a709aa0e4c import java.util.Comparator; import java.util.Iterator; import java.util.List; -@@ -131,7 +131,7 @@ public class RecipeManager extends SimpleJsonResourceReloadListener { +@@ -134,7 +134,7 @@ public class RecipeManager extends SimpleJsonResourceReloadListener { } public > List getAllRecipesFor(RecipeType type) { diff --git a/patches/server/0023-Slice-Smooth-Teleports.patch b/patches/server/0023-Slice-Smooth-Teleports.patch index b7926cc7..1fa68f8a 100644 --- a/patches/server/0023-Slice-Smooth-Teleports.patch +++ b/patches/server/0023-Slice-Smooth-Teleports.patch @@ -7,10 +7,10 @@ Original license: MIT Original project: https://github.com/Cryptite/Slice diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 7eb08a51474fa0ead38c57ee7b486a68f47251ab..9bac4b009ae35f86b1a3fa0215620eb695d12752 100644 +index ac12549e49f824aded913eb131117b750ea3db1b..49310193515273c1388dea7b651314bf7791d36a 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -283,6 +283,7 @@ public class ServerPlayer extends Player { +@@ -284,6 +284,7 @@ public class ServerPlayer extends Player { private boolean ramBar = false; // Purpur private boolean tpsBar = false; // Purpur private boolean compassBar = false; // Purpur @@ -19,10 +19,10 @@ index 7eb08a51474fa0ead38c57ee7b486a68f47251ab..9bac4b009ae35f86b1a3fa0215620eb6 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)); public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 155e5f5df5ba2d908f86d46fcff255469ba84597..0a927f938089e2d5dde9b3ab07e554d38014d118 100644 +index 3f60073c5ced65abf67f6fe175f9032c7bf49cfa..ba45ab1a76c9f98b134d0bd9798fa9a9830dbdac 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -945,12 +945,12 @@ public abstract class PlayerList { +@@ -953,12 +953,12 @@ public abstract class PlayerList { int i = flag ? 1 : 0; // CraftBukkit start LevelData worlddata = worldserver1.getLevelData(); @@ -38,7 +38,7 @@ index 155e5f5df5ba2d908f86d46fcff255469ba84597..0a927f938089e2d5dde9b3ab07e554d3 // entityplayer1.connection.teleport(entityplayer1.getX(), entityplayer1.getY(), entityplayer1.getZ(), entityplayer1.getYRot(), entityplayer1.getXRot()); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 01df6c21ea460fd0be1188088767dcb534db37ae..b9e3eadb481b07d339e92d1a9f6d7f0c91095f6a 100644 +index 3b769a430b736ea77d331e7bfea9c33b59868509..7675c36f0f31301964cdd35860c1295f6d827d18 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1258,6 +1258,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0024-PaperPR-Optimize-VarInts.patch b/patches/server/0024-PaperPR-Optimize-VarInts.patch deleted file mode 100644 index d18a5140..00000000 --- a/patches/server/0024-PaperPR-Optimize-VarInts.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: astei -Date: Sat, 1 Oct 2022 09:56:47 +0200 -Subject: [PATCH] PaperPR: Optimize VarInts - -Original license: GPLv3 -Original project: https://github.com/PaperMC/Velocity -Paper pull request: https://github.com/PaperMC/Paper/pull/8418 - -diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java -index 1f4b64a5f812376c499c98cb4be62469bd0b7dbe..1f4320d8243cc64b86892c23c601d14101d5a7ad 100644 ---- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java -+++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java -@@ -105,6 +105,18 @@ public class FriendlyByteBuf extends ByteBuf { - } - - public static int getVarIntSize(int value) { -+ //Paper start - Optimize VarInts -+ return VARINT_EXACT_BYTE_LENGTHS[Integer.numberOfLeadingZeros(value)]; // Paper - Optimize VarInts -+ } -+ private static final int[] VARINT_EXACT_BYTE_LENGTHS = new int[33]; -+ static { -+ for (int i = 0; i <= 32; ++i) { -+ VARINT_EXACT_BYTE_LENGTHS[i] = (int) Math.ceil((31d - (i - 1)) / 7d); -+ } -+ VARINT_EXACT_BYTE_LENGTHS[32] = 1; // Special case for the number 0. -+ } -+ public static int getVarIntSize_(int value) { -+ //Paper end - Optimize VarInts - for (int j = 1; j < 5; ++j) { - if ((value & -1 << j * 7) == 0) { - return j; -@@ -615,6 +627,21 @@ public class FriendlyByteBuf extends ByteBuf { - } - - public FriendlyByteBuf writeVarInt(int value) { -+ // Paper start - Optimize VarInts -+ // Peel the one and two byte count cases explicitly as they are the most common VarInt sizes -+ // that the proxy will write, to improve inlining. -+ if ((value & (0xFFFFFFFF << 7)) == 0) { -+ writeByte(value); -+ } else if ((value & (0xFFFFFFFF << 14)) == 0) { -+ int w = (value & 0x7F | 0x80) << 8 | (value >>> 7); -+ writeShort(w); -+ } else { -+ writeVarInt_(value); -+ } -+ return this; -+ } -+ public FriendlyByteBuf writeVarInt_(int value) { -+ // Paper end - Optimize VarInts - while ((value & -128) != 0) { - this.writeByte(value & 127 | 128); - value >>>= 7; diff --git a/patches/server/0025-Parchment-Make-FixLight-use-action-bar.patch b/patches/server/0024-Parchment-Make-FixLight-use-action-bar.patch similarity index 100% rename from patches/server/0025-Parchment-Make-FixLight-use-action-bar.patch rename to patches/server/0024-Parchment-Make-FixLight-use-action-bar.patch diff --git a/patches/server/0026-Leaves-Server-Utils.patch b/patches/server/0025-Leaves-Server-Utils.patch similarity index 96% rename from patches/server/0026-Leaves-Server-Utils.patch rename to patches/server/0025-Leaves-Server-Utils.patch index 889ad2b0..82ba0b09 100644 --- a/patches/server/0026-Leaves-Server-Utils.patch +++ b/patches/server/0025-Leaves-Server-Utils.patch @@ -7,18 +7,18 @@ Original license: GPLv3 Original project: https://github.com/LeavesMC/Leaves diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2763c93cc32b4b0954cb34c67cbeccd2258cd07c..0ef4711e37abee590abbfc249c9c6ffbf01265ce 100644 +index 9038588608baec2e02c88a727662c903adcf5da6..eeb611aab2887fce1e5a15831da625d5766e0fc4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -419,6 +419,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - public boolean freezeLocked = false; // Paper - Freeze Tick Lock API +@@ -420,6 +420,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public boolean collidingWithWorldBorder; // Paper + public boolean fixedPose = false; // Paper public @Nullable Boolean immuneToFire = null; // Purpur - Fire immune API + private CompoundTag leavesData = new CompoundTag(); // Leaves - Leaves ex data public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -2535,6 +2536,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2537,6 +2538,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { nbt.putBoolean("Purpur.FireImmune", immuneToFire); } // Purpur end @@ -26,7 +26,7 @@ index 2763c93cc32b4b0954cb34c67cbeccd2258cd07c..0ef4711e37abee590abbfc249c9c6ffb return nbt; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2708,6 +2710,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2710,6 +2712,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { immuneToFire = nbt.getBoolean("Purpur.FireImmune"); } // Purpur end @@ -38,7 +38,7 @@ index 2763c93cc32b4b0954cb34c67cbeccd2258cd07c..0ef4711e37abee590abbfc249c9c6ffb } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); -@@ -5042,4 +5049,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -5032,4 +5039,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return false; } // Purpur end diff --git a/patches/server/0027-Leaves-Jade-Protocol.patch b/patches/server/0026-Leaves-Jade-Protocol.patch similarity index 98% rename from patches/server/0027-Leaves-Jade-Protocol.patch rename to patches/server/0026-Leaves-Jade-Protocol.patch index 72c537bb..1a7793e9 100644 --- a/patches/server/0027-Leaves-Jade-Protocol.patch +++ b/patches/server/0026-Leaves-Jade-Protocol.patch @@ -9,7 +9,7 @@ Original project: https://github.com/LeavesMC/Leaves This patch is Powered by Jade(https://github.com/Snownee/Jade) diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 281a2eeed84b8d4c1db808edf0d40d5e1971c742..379218906cb02702d3a723c0ab42e768409ecacd 100644 +index 823ad91c82d96477655d9f895483a3dd07f30e84..577bcfdb715c116146c6e182073864b71b693385 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -250,6 +250,7 @@ import org.bukkit.inventory.CraftingInventory; @@ -20,7 +20,7 @@ index 281a2eeed84b8d4c1db808edf0d40d5e1971c742..379218906cb02702d3a723c0ab42e768 // CraftBukkit end public class ServerGamePacketListenerImpl implements ServerPlayerConnection, TickablePacketListener, ServerGamePacketListener { -@@ -3762,6 +3763,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3775,6 +3776,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic } // Paper end this.cserver.getMessenger().dispatchIncomingMessage(this.player.getBukkitEntity(), packet.identifier.toString(), data); @@ -31,7 +31,7 @@ index 281a2eeed84b8d4c1db808edf0d40d5e1971c742..379218906cb02702d3a723c0ab42e768 ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t dispatch custom payload", ex); this.disconnect("Invalid custom payload!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 0a927f938089e2d5dde9b3ab07e554d38014d118..847db9e18f0eebece00d49076ee8fababcd0c700 100644 +index ba45ab1a76c9f98b134d0bd9798fa9a9830dbdac..848baa457daaf3ffbbcad46b1a7fe69eae347fea 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -358,6 +358,8 @@ public abstract class PlayerList { @@ -57,7 +57,7 @@ index e91b4d63d42276f8a498cab7c439c785730f3f6f..a2d7c5008c6d6716d9530e00de0db027 } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index cc34d64ae522f69d1d4cbd0be75c50e12e9371f1..98b31a9e7e5bad4cfa1f21afd6eb77dc3ea346ec 100644 +index 40ce72ac4ca4f262ad77cf5ba47b8f2c8d9055d2..de1d2c270dc454b959694af03bb85b6e6616e336 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -484,6 +484,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0028-Leaves-Appleskin-Protocol.patch b/patches/server/0027-Leaves-Appleskin-Protocol.patch similarity index 95% rename from patches/server/0028-Leaves-Appleskin-Protocol.patch rename to patches/server/0027-Leaves-Appleskin-Protocol.patch index 1600c77b..641f2266 100644 --- a/patches/server/0028-Leaves-Appleskin-Protocol.patch +++ b/patches/server/0027-Leaves-Appleskin-Protocol.patch @@ -7,10 +7,10 @@ Original license: GPLv3 Original project: https://github.com/LeavesMC/Leaves diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 8f6dced165b6b35579f6efe4396864ae40a5a361..916362c7cdef8415b416d21b17d44b713f6e3160 100644 +index 65f6160b9c6d79f8b9511bec953ecd0d3c04b7d8..70573e0319060aeb6e9d33f4ba96053c15be8377 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1587,6 +1587,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop lastTrackerCandidates; @@ -294,7 +294,7 @@ index 194526c6e3ae338f163b02d7a8a34316db3bd3b3..6fc90433a87ff682e76fe37618dd9460 com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet oldTrackerCandidates = this.lastTrackerCandidates; this.lastTrackerCandidates = newTrackerCandidates; -@@ -1479,14 +1506,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1498,14 +1525,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public void broadcast(Packet packet) { @@ -312,7 +312,7 @@ index 194526c6e3ae338f163b02d7a8a34316db3bd3b3..6fc90433a87ff682e76fe37618dd9460 } public void broadcastAndSend(Packet packet) { -@@ -1498,18 +1522,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1517,18 +1541,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public void broadcastRemoved() { @@ -335,7 +335,7 @@ index 194526c6e3ae338f163b02d7a8a34316db3bd3b3..6fc90433a87ff682e76fe37618dd9460 if (this.seenBy.remove(player.connection)) { this.serverEntity.removePairing(player); } -@@ -1517,7 +1538,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1536,7 +1557,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public void updatePlayer(ServerPlayer player) { @@ -358,7 +358,7 @@ index ca42c2642a729b90d22b968af7258f3aee72e14b..c4d6d5be09c788bbc062c50d8547538e public boolean visible = true; diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 7eed6e8f586055b87717a5c4ee39c640a03b883e..cc644fcc08c6ab881c4cf86d8fb4a1b7a91e7b74 100644 +index 00e522a7db9ddfd0602e8423b2793f0bbd727b35..dc37a6cf4f64a950acc1743b71fbc3a425a557b1 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -277,7 +277,11 @@ public class ServerEntity { diff --git a/patches/server/0037-Petal-Sync-event-calls-on-async-threads.patch b/patches/server/0036-Petal-Sync-event-calls-on-async-threads.patch similarity index 100% rename from patches/server/0037-Petal-Sync-event-calls-on-async-threads.patch rename to patches/server/0036-Petal-Sync-event-calls-on-async-threads.patch diff --git a/patches/server/0038-Fix-tracker-NPE.patch b/patches/server/0037-Fix-tracker-NPE.patch similarity index 94% rename from patches/server/0038-Fix-tracker-NPE.patch rename to patches/server/0037-Fix-tracker-NPE.patch index 33dce115..d0fb30e1 100644 --- a/patches/server/0038-Fix-tracker-NPE.patch +++ b/patches/server/0037-Fix-tracker-NPE.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix tracker NPE diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 6fc90433a87ff682e76fe37618dd9460518a8387..755950c3797ccb3670f7cd12c941c226082ad010 100644 +index 9ff4472edf7ca079c9f3fe4afb8cbe242d7d280d..fac039d8aac50ad989e1180735dcc1d9badab5c0 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -115,8 +115,6 @@ import org.bukkit.craftbukkit.generator.CustomChunkGenerator; @@ -26,7 +26,7 @@ index 6fc90433a87ff682e76fe37618dd9460518a8387..755950c3797ccb3670f7cd12c941c226 // Paper - rewrite chunk system // Paper start - optimise checkDespawn -@@ -1452,7 +1450,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1471,7 +1469,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider public final Entity entity; // Mirai -> public private final int range; SectionPos lastSectionPos; @@ -36,7 +36,7 @@ index 6fc90433a87ff682e76fe37618dd9460518a8387..755950c3797ccb3670f7cd12c941c226 public TrackedEntity(Entity entity, int i, int j, boolean flag) { this.serverEntity = new ServerEntity(ChunkMap.this.level, entity, j, flag, this::broadcast, this.seenBy); // CraftBukkit diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 259727ca7956416afa0f425fc203103654673cef..6a5009b1935b11e4dd5a3dfb083df159d47da450 100644 +index aa81852cf5afe76bbba6dd7eef774ba5201f89c3..7379cbb9ccfc235370d6ddd222785be71a7ee398 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -10,6 +10,7 @@ import java.util.Arrays; @@ -55,7 +55,7 @@ index 259727ca7956416afa0f425fc203103654673cef..6a5009b1935b11e4dd5a3dfb083df159 public class ServerChunkCache extends ChunkSource { -@@ -642,7 +642,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -652,7 +652,7 @@ public class ServerChunkCache extends ChunkSource { // Paper start - use set of chunks requiring updates, rather than iterating every single one loaded this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { diff --git a/patches/server/0039-Cache-minecart-vehicle-collide-results.patch b/patches/server/0038-Cache-minecart-vehicle-collide-results.patch similarity index 100% rename from patches/server/0039-Cache-minecart-vehicle-collide-results.patch rename to patches/server/0038-Cache-minecart-vehicle-collide-results.patch