From 03a732c8eacd4eac7507d1220eaee381072c5866 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 2 Feb 2024 19:00:40 -0800 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@294347b [ci skip] Cleanup events (#10202) PaperMC/Paper@87ce7c7 Small refactor of Paper plugin context preparation PaperMC/Paper@7f856a1 Fix sleeping pos desync PaperMC/Paper@8bc5be8 Add missing catch PaperMC/Paper@c5d168c More provider source fixup --- gradle.properties | 2 +- .../0001-Pufferfish-Server-Changes.patch | 42 ++++++++--------- .../server/0003-Fix-pufferfish-issues.patch | 8 ++-- patches/server/0004-Purpur-config-files.patch | 8 ++-- patches/server/0008-Ridables.patch | 46 +++++++++---------- ...-Configurable-entity-base-attributes.patch | 32 ++++++------- patches/server/0012-AFK-API.patch | 16 +++---- .../0015-LivingEntity-safeFallDistance.patch | 14 +++--- ...017-PlayerSetSpawnerTypeWithEggEvent.patch | 6 +-- ...-Minecart-settings-and-WASD-controls.patch | 10 ++-- ...able-loot-drops-on-death-by-cramming.patch | 6 +-- ...Add-player-death-exp-control-options.patch | 4 +- ...urable-void-damage-height-and-damage.patch | 6 +-- .../0060-Implement-elytra-settings.patch | 4 +- ...-Add-allow-water-in-end-world-option.patch | 4 +- .../0071-Allow-color-codes-in-books.patch | 10 ++-- patches/server/0072-Entity-lifespan.patch | 6 +-- ...leport-to-spawn-if-outside-world-bor.patch | 8 ++-- ...ing-obsidian-valid-for-portal-frames.patch | 4 +- ...justable-breeding-cooldown-to-config.patch | 6 +-- ...-when-using-a-Name-Tag-on-an-Armor-S.patch | 10 ++-- .../server/0119-PlayerBookTooLargeEvent.patch | 6 +-- ...therite-armor-grants-fire-resistance.patch | 4 +- ...iefing-bypass-to-everything-affected.patch | 14 +++--- .../server/0132-Dont-run-with-scissors.patch | 6 +-- patches/server/0133-One-Punch-Man.patch | 4 +- ...0143-Sneak-to-bulk-process-composter.patch | 8 ++-- patches/server/0147-Drowning-Settings.patch | 8 ++-- ...nge-multiplier-critical-damage-value.patch | 4 +- ...173-API-for-any-mob-to-burn-daylight.patch | 10 ++-- ...after-eating-food-fills-hunger-bar-c.patch | 4 +- .../0181-Add-portal-permission-bypass.patch | 4 +- ...89-Store-placer-on-Block-when-placed.patch | 6 +-- .../0194-Player-ridable-in-water-option.patch | 4 +- .../0197-Toggle-for-kinetic-damage.patch | 4 +- ...t-right-click-to-use-exp-for-mending.patch | 8 ++-- ...ent-BlockEntity-Lore-and-DisplayName.patch | 20 ++++---- ...rable-valid-characters-for-usernames.patch | 4 +- ...Configurable-player-pickup-exp-delay.patch | 4 +- patches/server/0256-Spark-Profiler.patch | 8 ++-- ...o-disable-kick-for-out-of-order-chat.patch | 4 +- patches/server/0264-Remove-Timings.patch | 20 ++++---- .../server/0265-Remove-Mojang-Profiler.patch | 38 +++++++-------- ...er-output-for-invalid-movement-kicks.patch | 6 +-- ...0275-Add-item-packet-serialize-event.patch | 6 +-- ...-Configurable-block-blast-resistance.patch | 4 +- ...igurable-block-fall-damage-modifiers.patch | 6 +-- .../0287-Log-skipped-entity-s-position.patch | 4 +- 48 files changed, 234 insertions(+), 236 deletions(-) diff --git a/gradle.properties b/gradle.properties index 52c81fada..1f87acbe4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = b3c81089ae26cc3ad2e7388c7b64457f3f83c98a +paperCommit = c5d168cef92148a6799141832fdb5f95732c1a38 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 88e64874a..69c756f4b 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1471,7 +1471,7 @@ index 0000000000000000000000000000000000000000..facd55463d44cb7e3d2ca6892982f549 + } +} diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java -index 1ccf71be865af4d3c5ab8f4323a228a947e0bf3f..3f3f8443563e4ca6c7fb236e7a98eaae3be3b43e 100644 +index 850f75172e9efa72cabb8e5bd124b96a0b1a945f..3db1de70c76e1427e257d988d1a7f26e986b5617 100644 --- a/src/main/java/io/papermc/paper/util/MCUtil.java +++ b/src/main/java/io/papermc/paper/util/MCUtil.java @@ -212,7 +212,7 @@ public final class MCUtil { @@ -1497,7 +1497,7 @@ index ba12919c3f9aec34a9e64993b143ae92be5eb172..9efeab9078e2d08903e482718b840797 } else { this.lastTimeStamp = body.timeStamp(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 90ae7e8c81f6a9ede8aeaeec3bf784023522cefc..1dc91ef47d336abe06be1cfd90e8164605e5f37e 100644 +index d06185566b447c432d4dc2e3ba04d121bcdbc71b..d1c21d36de331905aedb08b0a8d4fbf97e100a13 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -312,6 +312,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0.0D) { if (k1 > 0) { diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index edc723ea5ca3a325106e7af38c60dbf9f0f5fb77..ab6cd363231a668c9b16df825a72d3205746ee49 100644 +index 09e8445a3f8c6b3ebc852a75a9a25b41a51ba659..dc11683ee4d8a6b7a1c42bcae36dc6e8105cd994 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -305,6 +305,8 @@ public class EntityType implements FeatureElement, EntityTypeT @@ -2074,10 +2074,10 @@ index edc723ea5ca3a325106e7af38c60dbf9f0f5fb77..ab6cd363231a668c9b16df825a72d320 private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 6071451339080bbdd98fb634791a56988984c8bc..5641bc7f50cef7819ddaeb76a4a4f9c80f473d31 100644 +index 6523795e715e5d472739e9bc6433143115c3de8f..317ff325f0a30d9ed83d3049cf96c53838c050ee 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; +@@ -141,7 +141,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; // CraftBukkit end @@ -2085,7 +2085,7 @@ index 6071451339080bbdd98fb634791a56988984c8bc..5641bc7f50cef7819ddaeb76a4a4f9c8 public abstract class LivingEntity extends Entity implements Attackable { -@@ -413,7 +412,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -412,7 +411,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = this instanceof net.minecraft.world.entity.player.Player; if (!this.level().isClientSide) { @@ -2114,7 +2114,7 @@ index 6071451339080bbdd98fb634791a56988984c8bc..5641bc7f50cef7819ddaeb76a4a4f9c8 @Override public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { -@@ -2002,6 +2014,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2003,6 +2015,20 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.lastClimbablePos; } @@ -2697,19 +2697,19 @@ index 27b0a79f7a7c47047216aae42944bac2a2151181..a097cfc528f709c80575f35483b68783 autorecipestackmanager.initialize(this); // Paper - better exact choice recipes int i = 0; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 8f437225d2a4e08ca47873cd42277d9f0f9f5529..c10efc14ca83f07b27a2f12776ab2fd2a953c5a1 100644 +index 19f23a6c8fb5c02843c27fb8a242ec9d0d1b538b..9c02040543825e99f576c6f8995133ec6a329940 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -211,6 +211,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - // Paper end - Use getChunkIfLoadedImmediately +@@ -207,6 +207,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public abstract ResourceKey getTypeKey(); -+ -+ protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter ++ protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter ++ protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot -@@ -1313,14 +1315,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config +@@ -1308,14 +1310,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { try { tickConsumer.accept(entity); MinecraftServer.getServer().executeMidTickTasks(); // Paper - execute chunk tasks mid tick @@ -2719,7 +2719,7 @@ index 8f437225d2a4e08ca47873cd42277d9f0f9f5529..c10efc14ca83f07b27a2f12776ab2fd2 // Paper start - Prevent block entity and entity crashes final String msg = String.format("Entity threw exception at %s:%s,%s,%s", entity.level().getWorld().getName(), entity.getX(), entity.getY(), entity.getZ()); MinecraftServer.LOGGER.error(msg, throwable); - getCraftServer().getPluginManager().callEvent(new ServerExceptionEvent(new ServerInternalException(msg, throwable))); // Paper - ServerExceptionEvent + getCraftServer().getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerInternalException(msg, throwable))); // Paper - ServerExceptionEvent - entity.discard(); - // Paper end - Prevent block entity and entity crashes + entity.discard(); // Pufferfish - diff on change ServerLevel.tick @@ -2727,7 +2727,7 @@ index 8f437225d2a4e08ca47873cd42277d9f0f9f5529..c10efc14ca83f07b27a2f12776ab2fd2 } } // Paper start - Option to prevent armor stands from doing entity lookups -@@ -1793,6 +1795,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1788,6 +1790,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { @@ -2736,10 +2736,10 @@ index 8f437225d2a4e08ca47873cd42277d9f0f9f5529..c10efc14ca83f07b27a2f12776ab2fd2 } diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 17e9f3a30e287faf210e08dc7eb177a70f049f43..96fc603c2fccc1d9610248b2116d35696bc65e4e 100644 +index da7489986848316fed029b71d1bc4e1248c9c9a8..661acdf4b1f33d150b0caf179e925d3162d7be35 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -429,12 +429,12 @@ public final class NaturalSpawner { +@@ -425,12 +425,12 @@ public final class NaturalSpawner { } } @@ -3271,7 +3271,7 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 34cd96dba5f11e64d7c90f4246b513b0ea943aa6..8344f9f693879639c484edf575c7df14df616776 100644 +index 4df3b94c8126f00188f5e125757411a0359728fa..b69c1af655a26615982f0256626bc8c9992bf694 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -264,7 +264,7 @@ import javax.annotation.Nullable; // Paper diff --git a/patches/server/0003-Fix-pufferfish-issues.patch b/patches/server/0003-Fix-pufferfish-issues.patch index 62a4b4ae2..9fa74dca5 100644 --- a/patches/server/0003-Fix-pufferfish-issues.patch +++ b/patches/server/0003-Fix-pufferfish-issues.patch @@ -53,16 +53,14 @@ index dbe612427b894df9da1335b94163ba9b89b090c0..0982d44b9dd30c13d9d879095cc9a839 private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Pufferfish diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index c10efc14ca83f07b27a2f12776ab2fd2a953c5a1..a0ef35bee70e6888879a8ede64c4cabad2be85ae 100644 +index 9c02040543825e99f576c6f8995133ec6a329940..d6a08f06812bc15813559eb8ff66eddf7cf22888 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -211,8 +211,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - // Paper end - Use getChunkIfLoadedImmediately +@@ -207,7 +207,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public abstract ResourceKey getTypeKey(); -- + - protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter -+ + //protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter // Purpur - dont break ABI protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch index 22812af79..9dd3e1671 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -92,10 +92,10 @@ index c5f92c80d7ca1e1c7f5b9304a5a1173ebfd9c269..1fbfe61b3d7fc372f044d2e9f3500d66 io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // Paper - init PaperBrigadierProvider gg.pufferfish.pufferfish.PufferfishConfig.load(); // Pufferfish diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index a0ef35bee70e6888879a8ede64c4cabad2be85ae..9a8c80c256020cdbcd307e7032df4b47852e9f50 100644 +index d6a08f06812bc15813559eb8ff66eddf7cf22888..bce8df10ac9dfb7a9bba76fc05357c8b6a0520e4 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -178,6 +178,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -173,6 +173,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { // Paper end - add paper world config public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray @@ -103,7 +103,7 @@ index a0ef35bee70e6888879a8ede64c4cabad2be85ae..9a8c80c256020cdbcd307e7032df4b47 public final co.aikar.timings.WorldTimingsHandler timings; // Paper public static BlockPos lastPhysicsProblem; // Spigot private org.spigotmc.TickLimiter entityLimiter; -@@ -217,6 +218,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -212,6 +213,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config @@ -112,7 +112,7 @@ index a0ef35bee70e6888879a8ede64c4cabad2be85ae..9a8c80c256020cdbcd307e7032df4b47 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 09f976c3a98327d95515fce5f7881b826baa11a6..2f0b2807b35c4d3a172e85fb8b60ef8b764ca48e 100644 +index d564c7107fe2ac887a55461ea5107a0fb325a150..4925d320748fa62e63f2dce0a52c3869ee1ff432 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1037,6 +1037,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 3b6e68cce..54966b2e2 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -22,13 +22,13 @@ index e17fa30966dea2836fb791becd032fc7d5cc2611..dd06323731533fb9b1b25a56844a4e39 super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index efebfd62ec415ca47cb116ab66a24478489fe080..bebb1f089783ee84faad3ed3b08c40b9fd2518c0 100644 +index a6d3f90f7867cfbda0ef406ff3ce1bd8b9f787b0..0831d305a3b9d8d27cef946f46c0b03fccbc54c1 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1702,6 +1702,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - BlockPhysicsEvent - net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent + net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers + worldserver.updateLagCompensationTick(); // Paper - lag compensation + worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur this.profiler.push(() -> { @@ -66,10 +66,10 @@ index 6c3e5ad96ff1c33181663d89c3c227e1a96e4912..62fd29f19b93f07a87377f26d9e5b169 public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index dbcf025c07abafee639d8b94bf963962b5e85478..d9ebf31a51e25706b3964ffe1aa2834bae8076f4 100644 +index fc4a526ea9445fd9af3af714608dad9b0abf50f0..996177293fa1d65df7d497d88da0677bfc124ccb 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2704,6 +2704,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2703,6 +2703,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -79,7 +79,7 @@ index dbcf025c07abafee639d8b94bf963962b5e85478..d9ebf31a51e25706b3964ffe1aa2834b if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2323f36e011b375204fc792a7091c85c801344d0..48521627d1ba4003727c04f337e96e3a61f6b0c8 100644 +index 5e68978874a30c4e7bb90dfabdcc2aacf4987841..b4bcfd6ebb94ae5f497b8f92e88fa3be9e1207f2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -378,7 +378,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -190,10 +190,10 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5641bc7f50cef7819ddaeb76a4a4f9c80f473d31..5e663a0d0c4fe1f32ac3483b86c085ec2205b3dc 100644 +index 317ff325f0a30d9ed83d3049cf96c53838c050ee..2a3fa4cf65ba2c79de34256ae29a35b5903c7c37 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -217,9 +217,9 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -216,9 +216,9 @@ public abstract class LivingEntity extends Entity implements Attackable { protected int deathScore; public float lastHurt; public boolean jumping; @@ -206,7 +206,7 @@ index 5641bc7f50cef7819ddaeb76a4a4f9c80f473d31..5e663a0d0c4fe1f32ac3483b86c085ec protected int lerpSteps; protected double lerpX; protected double lerpY; -@@ -285,7 +285,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -284,7 +284,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.effectsDirty = true; this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); @@ -215,7 +215,7 @@ index 5641bc7f50cef7819ddaeb76a4a4f9c80f473d31..5e663a0d0c4fe1f32ac3483b86c085ec this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -336,6 +336,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -335,6 +335,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public static AttributeSupplier.Builder createLivingAttributes() { return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS).add(Attributes.MAX_ABSORPTION); } @@ -223,7 +223,7 @@ index 5641bc7f50cef7819ddaeb76a4a4f9c80f473d31..5e663a0d0c4fe1f32ac3483b86c085ec @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { -@@ -2728,7 +2729,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2729,7 +2730,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } protected long lastJumpTime = 0L; // Paper - Prevent excessive velocity through repeated crits @@ -232,7 +232,7 @@ index 5641bc7f50cef7819ddaeb76a4a4f9c80f473d31..5e663a0d0c4fe1f32ac3483b86c085ec Vec3 vec3d = this.getDeltaMovement(); // Paper start - Prevent excessive velocity through repeated crits long time = System.nanoTime(); -@@ -3506,8 +3507,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3507,8 +3508,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); this.level().getProfiler().pop(); // Paper start - Add EntityMoveEvent @@ -243,9 +243,9 @@ index 5641bc7f50cef7819ddaeb76a4a4f9c80f473d31..5e663a0d0c4fe1f32ac3483b86c085ec + if (((ServerLevel) this.level()).hasEntityMoveEvent && !(this instanceof net.minecraft.world.entity.player.Player)) { + // Purpur end Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); - Location to = new Location (this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); + Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3517,6 +3520,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3518,6 +3521,21 @@ public abstract class LivingEntity extends Entity implements Attackable { this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -2010,7 +2010,7 @@ index b05b560b7570e97bc234b75f26233909fcf575b3..71234b258157579d3a47064e7e299bb7 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index f97bdfbd07db000845d3b791de64056c3c23f7ba..79924fabbc11664f5731524c0190a4ddf7ef53da 100644 +index d595f1590619b24d460fc2c10a5412844f62cba0..55566dd9d6fa032f3436247be039d6ed3d8a1fee 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -86,6 +86,23 @@ public class Turtle extends Animal { @@ -2781,7 +2781,7 @@ index a6f3fba3b02b0b4d2a4e9e5205301c6f52d0188a..4eebfc27ded55e4d764d04f35d3e9c9e protected void defineSynchedData() { } 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 dd9800094b132954f0677eb6610fe27db4cec711..dcbb202f2da0ee507ce090c7654ca6e8ea65be33 100644 +index a86ae40b945b1ecdf42a69d753d0412f39ee3001..8f0bd246d41627bf9725f88268530ac6ead32b0a 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 @@ -107,6 +107,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -3423,7 +3423,7 @@ index 01897af1e6253b987734a24c052daf2ce1314092..02141c89708a60c396dc89bc202bc231 } diff --git a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java -index 6d4810626980ce46e02042a5660f615c58d0d5fd..dd2037d4c50e622f249406eee49add29bf261865 100644 +index 91ff663b2260d1cdd1388c93068e4cd9d0331aea..865f2bf27674f46cbf87cf3433915701273473c3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java @@ -36,6 +36,18 @@ public class ElderGuardian extends Guardian { @@ -4641,7 +4641,7 @@ index a6af5ac9d09834940d3dd4c80b16450b90484edb..e5d3bf2e8934d97760eaf165a0ac930d this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java -index 02386e7eabc6669296ce35158fa35a3c88c6b563..330974f7fcc435cd45c744cc9c8e0f1bac2305ef 100644 +index f9ffc5f4cbfdcf5c7351a883d2e5c26492175283..881e026f86916cf3ec5bc3c30f5c0f3cee4e5e1b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Witch.java +++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java @@ -59,6 +59,23 @@ public class Witch extends Raider implements RangedAttackMob { @@ -5114,7 +5114,7 @@ index 1c89f20debfad9807c90a21cc336d5790294ebce..3782209c6d3408393e91ffe64976a15c this.setTradingPlayer(player); this.openTradingScreen(player, this.getDisplayName(), 1); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 44a17a8e763455e834dcf488044a0f4907ce346e..16e90cc84433a0cdabcf3fec8d9734d074b73c71 100644 +index df8d6f3eb675354ce0d180fc56886ce12788d6ae..3549f83b37f5b895381ead73fc59e96ed79f042c 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -192,6 +192,19 @@ public abstract class Player extends LivingEntity { @@ -5204,7 +5204,7 @@ index 8698104e3eb98e2cc5da5de87a8f538860c1d91d..39ae3335866669be54f31ee6cd10d41b + // 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 b9e90f589749dfc9324c4aa2062c505fbd4447bc..118483d7342117c4bc172db89df9fab391f30378 100644 +index 23b4b5d63d45108534bde330079c7a12b3aa4f5f..038461f693e38a26b16f465ce43a6661ea91c345 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -591,6 +591,15 @@ public class CraftEventFactory { @@ -5223,7 +5223,7 @@ index b9e90f589749dfc9324c4aa2062c505fbd4447bc..118483d7342117c4bc172db89df9fab3 return event; } -@@ -1068,6 +1077,7 @@ public class CraftEventFactory { +@@ -1070,6 +1079,7 @@ public class CraftEventFactory { damageCause = DamageCause.ENTITY_EXPLOSION; } event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), entity.getBukkitEntity(), damageCause, modifiers, modifierFunctions, source.isCritical()); // Paper - add critical damage API @@ -5231,7 +5231,7 @@ index b9e90f589749dfc9324c4aa2062c505fbd4447bc..118483d7342117c4bc172db89df9fab3 } event.setCancelled(cancelled); -@@ -1182,6 +1192,7 @@ public class CraftEventFactory { +@@ -1184,6 +1194,7 @@ public class CraftEventFactory { } else { entity.lastDamageCancelled = true; // SPIGOT-5339, SPIGOT-6252, SPIGOT-6777: Keep track if the event was canceled } @@ -5239,7 +5239,7 @@ index b9e90f589749dfc9324c4aa2062c505fbd4447bc..118483d7342117c4bc172db89df9fab3 return event; } -@@ -1245,6 +1256,7 @@ public class CraftEventFactory { +@@ -1247,6 +1258,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, modifiers, modifierFunctions, critical); // Paper - add critical damage API diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch index 1670248e3..b33a3cfe6 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f0216a0ac90aa1c0851dea13dd2250a2560c0e17..036688d52541dda8d8eef6fee43823844f245124 100644 +index b4bcfd6ebb94ae5f497b8f92e88fa3be9e1207f2..88700c88c5487224f9d4a2ba1648a70860b173a3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -159,7 +159,7 @@ import org.bukkit.plugin.PluginManager; @@ -34,10 +34,10 @@ index 75c278b67ad2b78766efd8f89c4c2ca7eb7cdcb2..dc99e7f0e6f173c1313c0d5e9ea5dd6b protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b225b9823e5edf81dfc916c3817caab93927118d..ea7cb84dab429f1a9495b05e578775ac9d94f08a 100644 +index 2a3fa4cf65ba2c79de34256ae29a35b5903c7c37..cc8553b95fd2c3b68f952b54e96de048ae8f07c1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -285,6 +285,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur @@ -45,7 +45,7 @@ index b225b9823e5edf81dfc916c3817caab93927118d..ea7cb84dab429f1a9495b05e578775ac this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -301,6 +302,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -300,6 +301,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(dynamicopsnbt, (Tag) dynamicopsnbt.createMap((Map) ImmutableMap.of(dynamicopsnbt.createString("memories"), (Tag) dynamicopsnbt.emptyMap())))); } @@ -395,7 +395,7 @@ index bc57978d89db43e97a38ea56c3541e8f6318c2d2..0c128449fbe51aa7e437568ba4bc857c protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 7fa03dbc442942b70f374096e346d54089d8f0a0..913b66be2111da862e706d4978825c64cfe8b00b 100644 +index 0ee9d5eeabb0352d0a92fa0106b7a3a834a9c146..f9db04ee35928d76dc504808a2acfca85295a6e6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -70,6 +70,11 @@ public class Squid extends WaterAnimal { @@ -427,7 +427,7 @@ index 71234b258157579d3a47064e7e299bb7fb90908f..7d02e552a27632939bb9c40a62f4e0df return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 79924fabbc11664f5731524c0190a4ddf7ef53da..0687ca21827e882b1a82af5b7b16f5701d5ee2d1 100644 +index 55566dd9d6fa032f3436247be039d6ed3d8a1fee..3fcc57ed165203a36b35e121c2c0cc88ba5f73b8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -103,6 +103,11 @@ public class Turtle extends Animal { @@ -759,7 +759,7 @@ index 7fb2c28b567c6c338a68bdc29d24cb652a4a15bf..074835d3e315eb78d318e81c5fd04e5e @Override protected void defineSynchedData() { 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 dcbb202f2da0ee507ce090c7654ca6e8ea65be33..b8c5979ac03103893bfc6d57227e083d185edbf6 100644 +index 8f0bd246d41627bf9725f88268530ac6ead32b0a..61365fc2d9b1726cb7c50bf4f0c178d17674044a 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 @@ -186,6 +186,11 @@ public class EnderDragon extends Mob implements Enemy { @@ -832,7 +832,7 @@ index 562faf0257388d9c22146a418f25716cef7471b8..c8bac8cb738ad96003a014b468681c43 public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index b3d1e3158165c940ad1081e80f5bd2dd9d0152f8..e40554a64ab1f375cf77592959acd703d30ea43a 100644 +index 577a829595f67708b220407b53dca1bd145a3479..27bcebb3b71842bc4ae5d440334d7d6dd51b741a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -250,6 +250,11 @@ public class Creeper extends Monster implements PowerableMob { @@ -869,7 +869,7 @@ index 02141c89708a60c396dc89bc202bc2316a7e419f..0d4e1c734491028dac0084bd26ed9a26 protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D)); diff --git a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java -index dd2037d4c50e622f249406eee49add29bf261865..63980f518ecd00bf2fa601f65823985003111920 100644 +index 865f2bf27674f46cbf87cf3433915701273473c3..baa41e05f66457a6b4638915a1deab775665f01f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java @@ -48,6 +48,11 @@ public class ElderGuardian extends Guardian { @@ -885,7 +885,7 @@ index dd2037d4c50e622f249406eee49add29bf261865..63980f518ecd00bf2fa601f658239850 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 8ef8894733ead4f440de1847723cdb405bee17f8..fbd5e2b5e0b571fb805afd698d26a7cebf9c0c29 100644 +index 01dd5347bc8fa25b9b1f6cb746c25ca68eda95bb..d973adad5411b390464d7a654d8e8c1dcf69729c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -115,6 +115,11 @@ public class EnderMan extends Monster implements NeutralMob { @@ -1123,7 +1123,7 @@ index 73220bd6989855ac82420219c841421612cb3f11..226b44ba4cd3a08562c8cb0d79c1d880 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index e78d869069bc018f29c5fbc6a7811806c4b2fb2f..9efda5d6cf9a235b5039ed622e917124aae7be82 100644 +index a695ac9b9e4c3e423d74d082e24928581333947e..2d8d88a3552516becdd7adb11b7706fc9bddbf96 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -114,6 +114,11 @@ public class Shulker extends AbstractGolem implements VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index aa6533c40b73bc72a4906f0533f13e74e58c091a..65a22067af226751053c9df5e0771a960439f5fe 100644 +index 3be3e46408b2d43f2cbb27b516be8c466ab0ed79..2e956c5a76573c1966c9d927bd4f7254eee4af4d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -124,6 +124,11 @@ public class Zombie extends Monster { @@ -1472,7 +1472,7 @@ index 2d842c0dfce1c7e7229bd42b2a92c024a4162b68..04e54c241078e6cd6419a21ba1bf913f return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 6e42633cc7393d579bfd4b756a5f651a71e2f02e..0d3ce8b8cc3a431ff28837179cd3e0080fe47649 100644 +index 3f9945db1970c6356e3fbde3520c07e2a75fbb48..36e360a3b72ad20b4fe2e3a57ce1a1c6caaa494f 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -179,6 +179,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index 084d189c3..4f91036af 100644 --- a/patches/server/0012-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -78,10 +78,10 @@ index 62fd29f19b93f07a87377f26d9e5b169b9d80f4f..e4f36920d54688b515b86ada943765d4 return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index d9ebf31a51e25706b3964ffe1aa2834bae8076f4..9c6d4f93a068a14adf601a562e78be8c68fd3528 100644 +index 996177293fa1d65df7d497d88da0677bfc124ccb..ea3f177e93127cab65f208189742af641adb22b7 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -325,6 +325,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -324,6 +324,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private boolean justTeleported = false; // CraftBukkit end @@ -102,7 +102,7 @@ index d9ebf31a51e25706b3964ffe1aa2834bae8076f4..9c6d4f93a068a14adf601a562e78be8c @Override public void tick() { if (this.ackBlockChangesUpTo > -1) { -@@ -392,6 +406,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -391,6 +405,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits @@ -115,7 +115,7 @@ index d9ebf31a51e25706b3964ffe1aa2834bae8076f4..9c6d4f93a068a14adf601a562e78be8c this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -639,6 +659,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -638,6 +658,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -124,7 +124,7 @@ index d9ebf31a51e25706b3964ffe1aa2834bae8076f4..9c6d4f93a068a14adf601a562e78be8c Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1491,7 +1513,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1490,7 +1512,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (!event.isAllowed()) { movedWrongly = true; if (event.getLogWarning()) @@ -133,7 +133,7 @@ index d9ebf31a51e25706b3964ffe1aa2834bae8076f4..9c6d4f93a068a14adf601a562e78be8c } } -@@ -1558,6 +1580,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1557,6 +1579,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -177,7 +177,7 @@ index d8cc5614502db7025349e085381b6b32ad32296a..f1b9e83206cc67e6ef29ebe088351b0a private EntitySelector() {} // Paper start - Affects Spawning API diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index 3c4f4af85a3f2d4f9f52827164e63727b916c33a..aa4dec55c1d4cd9796587ea3a3343131a4d2f0a4 100644 +index 931cbbe41905d7ed3fd46c53d3ddd06a6b9a7c8a..d8642979b7296737d08529f6db4f64e463d9f936 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java @@ -64,6 +64,10 @@ public class TargetingConditions { @@ -192,7 +192,7 @@ index 3c4f4af85a3f2d4f9f52827164e63727b916c33a..aa4dec55c1d4cd9796587ea3a3343131 if (baseEntity == null) { if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level().getDifficulty() == Difficulty.PEACEFUL)) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 9d3e681faa5639b540e8c9b68dc9098ace3ecf03..dac631ffd190829e299ab30415ade7c06f70f4c3 100644 +index dc502d0b247f56e4a2df8500d66695e20ef55998..62f47598dfb32dbe811f448c10196896c65fb9d6 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -187,6 +187,13 @@ public abstract class Player extends LivingEntity { diff --git a/patches/server/0015-LivingEntity-safeFallDistance.patch b/patches/server/0015-LivingEntity-safeFallDistance.patch index 6408c5c0d..4aa52fe41 100644 --- a/patches/server/0015-LivingEntity-safeFallDistance.patch +++ b/patches/server/0015-LivingEntity-safeFallDistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e81bed7121b4f4bef5d7b5bd98979b790b2b92d7..5d55704235ba54ada99dc6107d0da25c80ad4172 100644 +index cc8553b95fd2c3b68f952b54e96de048ae8f07c1..fe4b5878a0d9dffb8602f01344fb4c828ee71fe0 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -252,6 +252,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -251,6 +251,7 @@ public abstract class LivingEntity extends Entity implements Attackable { protected boolean skipDropExperience; // CraftBukkit start public int expToDrop; @@ -16,7 +16,7 @@ index e81bed7121b4f4bef5d7b5bd98979b790b2b92d7..5d55704235ba54ada99dc6107d0da25c public boolean forceDrops; public ArrayList drops = new ArrayList<>(); // Paper - Restore vanilla drops behavior public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; -@@ -352,7 +353,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -351,7 +352,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.tryAddSoulSpeed(); } @@ -25,7 +25,7 @@ index e81bed7121b4f4bef5d7b5bd98979b790b2b92d7..5d55704235ba54ada99dc6107d0da25c double d1 = this.getX(); double d2 = this.getY(); double d3 = this.getZ(); -@@ -367,7 +368,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -366,7 +367,7 @@ public abstract class LivingEntity extends Entity implements Attackable { d3 = (double) landedPosition.getZ() + 0.5D + d5 / d6 * 0.5D; } @@ -34,7 +34,7 @@ index e81bed7121b4f4bef5d7b5bd98979b790b2b92d7..5d55704235ba54ada99dc6107d0da25c double d7 = Math.min((double) (0.2F + f / 15.0F), 2.5D); int i = (int) (150.0D * d7); -@@ -2095,7 +2096,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2096,7 +2097,7 @@ public abstract class LivingEntity extends Entity implements Attackable { MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); @@ -44,7 +44,7 @@ index e81bed7121b4f4bef5d7b5bd98979b790b2b92d7..5d55704235ba54ada99dc6107d0da25c } 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 b50d30a22704efade7b87d4cf5817b2068a18084..97684d00c79ab2e5712a3d44b7690b1bca15b4a7 100644 +index 24fb38499092d8cbee3818bf5c873a55465b1edb..3170f9044f18b8c609433ddbd3ef9ac330644a0f 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 @@ -386,7 +386,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @@ -69,7 +69,7 @@ index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf // Purpur start diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 1b75b8286f6203a7268746b5a487d6f089405127..a79273b50233cbabad37392b57e6236ad78a981a 100644 +index ea966037755ba552dc6cf2f4792e9d23f0e77b1c..32392a780eb078b792991c6f00b8eb161a3ff509 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -1118,4 +1118,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0017-PlayerSetSpawnerTypeWithEggEvent.patch b/patches/server/0017-PlayerSetSpawnerTypeWithEggEvent.patch index 9611e71bf..dc325eb00 100644 --- a/patches/server/0017-PlayerSetSpawnerTypeWithEggEvent.patch +++ b/patches/server/0017-PlayerSetSpawnerTypeWithEggEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PlayerSetSpawnerTypeWithEggEvent diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index a63399eedb896c06e96c7fba5cac7102e1c40ba6..44aa32b49fa32fbaf86625c0eed7c2e01d8f212c 100644 +index dc11683ee4d8a6b7a1c42bcae36dc6e8105cd994..22f2b1b445f383b2e784688908a92b90ece21cb3 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -320,6 +320,16 @@ public class EntityType implements FeatureElement, EntityTypeT @@ -25,7 +25,7 @@ index a63399eedb896c06e96c7fba5cac7102e1c40ba6..44aa32b49fa32fbaf86625c0eed7c2e0 public static ResourceLocation getKey(EntityType type) { return BuiltInRegistries.ENTITY_TYPE.getKey(type); } -@@ -535,6 +545,16 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -531,6 +541,16 @@ public class EntityType implements FeatureElement, EntityTypeT return this.category; } @@ -43,7 +43,7 @@ index a63399eedb896c06e96c7fba5cac7102e1c40ba6..44aa32b49fa32fbaf86625c0eed7c2e0 if (this.descriptionId == null) { this.descriptionId = Util.makeDescriptionId("entity", BuiltInRegistries.ENTITY_TYPE.getKey(this)); diff --git a/src/main/java/net/minecraft/world/item/SpawnEggItem.java b/src/main/java/net/minecraft/world/item/SpawnEggItem.java -index 4f10f801dc126e9135432939b6663770c0e7a0bc..8f89a1c7e6214f549490ecf75afbdd72b897b120 100644 +index 3bfbf7daa190b03f978b9fc72233c18c383b6659..32996934bb47f4b7b2aa65dfd8739d8f67c740ef 100644 --- a/src/main/java/net/minecraft/world/item/SpawnEggItem.java +++ b/src/main/java/net/minecraft/world/item/SpawnEggItem.java @@ -68,6 +68,16 @@ public class SpawnEggItem extends Item { diff --git a/patches/server/0040-Minecart-settings-and-WASD-controls.patch b/patches/server/0040-Minecart-settings-and-WASD-controls.patch index d3b4fa832..d4279864c 100644 --- a/patches/server/0040-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0040-Minecart-settings-and-WASD-controls.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e20f86d9167929e463b0e179db7e22e72fa6a1b3..5156368507e56ec423a04e02e3cdcd8de502bc18 100644 +index e4f36920d54688b515b86ada943765d460361889..0e2a165a86ee59cd27c68d5b96ecdbb49d74b15f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1112,6 +1112,7 @@ public class ServerPlayer extends Player { @@ -17,7 +17,7 @@ index e20f86d9167929e463b0e179db7e22e72fa6a1b3..5156368507e56ec423a04e02e3cdcd8d if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index c906ca07509939a06b9aaf2da0dafb172830a638..d5e2797b392527de4027b20f29c73a16eb0d6af9 100644 +index d514ec1e4cbdc579c3a61533998437903afdc8b6..93f42963816caa2a5f5b94c3bc1b87bbc9052a01 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java @@ -105,12 +105,14 @@ public abstract class AbstractMinecart extends VehicleEntity { @@ -136,10 +136,10 @@ index 3aa73cd44aa8c86b78c35bc1788e4f83018c49ed..66a8b28275619079e3bcbcc460146976 } } diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 3ab8b99837b1d1faea722c598b0228b2780be8b1..06b07927aba82084bd2996be92b9e340a9bf2ad2 100644 +index 2892e586146cbc560f0bcf4b9af6d0575cb0a82e..63c4d52c348d9297a24abb17e105b2f4c7758740 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -93,7 +93,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -92,7 +92,7 @@ public abstract class BlockBehaviour implements FeatureElement { protected final float jumpFactor; protected final boolean dynamicShape; protected final FeatureFlagSet requiredFeatures; @@ -149,7 +149,7 @@ index 3ab8b99837b1d1faea722c598b0228b2780be8b1..06b07927aba82084bd2996be92b9e340 protected ResourceLocation drops; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ae393a6c34e79ea3ac0f4a17792f296f18c3f06b..269fa073b53b5434d19d6705eb2fb2d0550ba0ac 100644 +index 113d827713b409cc3093c39a56439d7c0d04e129..24dcdf3ca52129d3d35902c94ae302e35385cd50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,6 +95,68 @@ public class PurpurWorldConfig { diff --git a/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch index 5f70ddacd..7865c8be7 100644 --- a/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5d55704235ba54ada99dc6107d0da25c80ad4172..65a3949679b3d600b972eb6058af6eebc7367d6a 100644 +index fe4b5878a0d9dffb8602f01344fb4c828ee71fe0..8fece4bf10534f899d0609891211946d1aa650be 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1841,6 +1841,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1842,6 +1842,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.dropEquipment(); // CraftBukkit - from below if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -16,7 +16,7 @@ index 5d55704235ba54ada99dc6107d0da25c80ad4172..65a3949679b3d600b972eb6058af6eeb this.dropFromLootTable(source, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1849,6 +1850,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1850,6 +1851,7 @@ public abstract class LivingEntity extends Entity implements Attackable { // Paper end this.dropCustomDeathLoot(source, i, flag); this.clearEquipmentSlots = prev; // Paper diff --git a/patches/server/0053-Add-player-death-exp-control-options.patch b/patches/server/0053-Add-player-death-exp-control-options.patch index 0403d260d..e7764a896 100644 --- a/patches/server/0053-Add-player-death-exp-control-options.patch +++ b/patches/server/0053-Add-player-death-exp-control-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add player death exp control options diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index dac631ffd190829e299ab30415ade7c06f70f4c3..346b4027006d5cde97ec5bc4599635b145a76de1 100644 +index 62f47598dfb32dbe811f448c10196896c65fb9d6..ed24084bc7db7b0b1ef577fdab96b28a5fd81d52 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1933,9 +1933,19 @@ public abstract class Player extends LivingEntity { +@@ -1935,9 +1935,19 @@ public abstract class Player extends LivingEntity { @Override public int getExperienceReward() { if (!this.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) { diff --git a/patches/server/0054-Configurable-void-damage-height-and-damage.patch b/patches/server/0054-Configurable-void-damage-height-and-damage.patch index a24a0ced8..6ee8ebe9e 100644 --- a/patches/server/0054-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0054-Configurable-void-damage-height-and-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable void damage height and damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 73454dbffd3def4ab40ff215dcbb4a4a7b839e6d..31c51f882fa1e6c45daeb9b8c2cd32388ed2367e 100644 +index 2cfc4445dc24f5593206d567b7af309a48b77cf0..509fec946781d0553b44606ceb296d7db20467dc 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -899,7 +899,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -18,10 +18,10 @@ index 73454dbffd3def4ab40ff215dcbb4a4a7b839e6d..31c51f882fa1e6c45daeb9b8c2cd3238 && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b1e6a65769d0915712571214f82f225437b02706..f4c1fd338dc1f37859eb13b5c9e9dae52aac0218 100644 +index 8fece4bf10534f899d0609891211946d1aa650be..56264e06623206d1c545bc40775ad3034ed962a4 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2541,7 +2541,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2542,7 +2542,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @Override protected void onBelowWorld() { diff --git a/patches/server/0060-Implement-elytra-settings.patch b/patches/server/0060-Implement-elytra-settings.patch index a3e77c30e..727698175 100644 --- a/patches/server/0060-Implement-elytra-settings.patch +++ b/patches/server/0060-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d668fd41d2bc2ab6a782cf5415507cbd83754c18..579f3d49c2804f1a7de687426402cdf9d950fad9 100644 +index 56264e06623206d1c545bc40775ad3034ed962a4..e9529e1a1f799911484e0a4c0d725408580c01b9 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3567,7 +3567,16 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3568,7 +3568,16 @@ public abstract class LivingEntity extends Entity implements Attackable { int j = i / 10; if (j % 2 == 0) { diff --git a/patches/server/0070-Add-allow-water-in-end-world-option.patch b/patches/server/0070-Add-allow-water-in-end-world-option.patch index 27e70d056..3f65f2b65 100644 --- a/patches/server/0070-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0070-Add-allow-water-in-end-world-option.patch @@ -27,10 +27,10 @@ index 6371f326fc86cfc53e39bf8ed13b646f7705fbbc..3dec0c5fc8dece5341634eaf8e94fe19 return true; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 3c2bc3a24bb6ec282e61f35856775d9bc61d6462..3a634ac6d8a7538ec75fc848ca252e062857a4f9 100644 +index bce8df10ac9dfb7a9bba76fc05357c8b6a0520e4..c2e6f6d2c4bdda3cafd2f7b42f3586242cdff738 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1907,4 +1907,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1902,4 +1902,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return null; } // Paper end - optimize redstone (Alternate Current) diff --git a/patches/server/0071-Allow-color-codes-in-books.patch b/patches/server/0071-Allow-color-codes-in-books.patch index 89fece660..6e28dcdb8 100644 --- a/patches/server/0071-Allow-color-codes-in-books.patch +++ b/patches/server/0071-Allow-color-codes-in-books.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7c829f26b29bb3e02248bfd8d63b600c232ebd3e..063a1a979755d63bd3d099f07348c7a587adbe3d 100644 +index ea3f177e93127cab65f208189742af641adb22b7..133879448881bbe360cac7631343ee1d587dda14 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1231,13 +1231,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1230,13 +1230,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl itemstack1.setTag(nbttagcompound.copy()); } @@ -28,7 +28,7 @@ index 7c829f26b29bb3e02248bfd8d63b600c232ebd3e..063a1a979755d63bd3d099f07348c7a5 this.updateBookPages(pages, (s) -> { return Component.Serializer.toJson(Component.literal(s)); -@@ -1249,10 +1252,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1248,10 +1251,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit ListTag nbttaglist = new ListTag(); @@ -44,7 +44,7 @@ index 7c829f26b29bb3e02248bfd8d63b600c232ebd3e..063a1a979755d63bd3d099f07348c7a5 Objects.requireNonNull(nbttaglist); stream.forEach(nbttaglist::add); -@@ -1262,11 +1268,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1261,11 +1267,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl for (int j = list.size(); i < j; ++i) { FilteredText filteredtext = (FilteredText) list.get(i); @@ -58,7 +58,7 @@ index 7c829f26b29bb3e02248bfd8d63b600c232ebd3e..063a1a979755d63bd3d099f07348c7a5 } } -@@ -1279,6 +1285,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1278,6 +1284,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(this.player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } diff --git a/patches/server/0072-Entity-lifespan.patch b/patches/server/0072-Entity-lifespan.patch index ee38a357d..5de78d4ab 100644 --- a/patches/server/0072-Entity-lifespan.patch +++ b/patches/server/0072-Entity-lifespan.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 29537f37bc0c0d5b46813c700d9bd96fefc8d599..9d008bc7d99e0fc61260a2bf3f7ace118596d5f3 100644 +index 133879448881bbe360cac7631343ee1d587dda14..0eba0fcdb6161347175cf9599ce95cda0e7dc6fc 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2731,6 +2731,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2730,6 +2730,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) { @@ -17,7 +17,7 @@ index 29537f37bc0c0d5b46813c700d9bd96fefc8d599..9d008bc7d99e0fc61260a2bf3f7ace11 private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index f1df9e038d919f7dc0404fda796426037833b778..ed2909d3eee566771ea910e1937009bbdb73e159 100644 +index fe9c41287a9e5adc8179f581fc93649a846e839e..c31cfdb7ce2964dcf61cecf441f5bc275e7ef2db 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -136,6 +136,7 @@ public abstract class Mob extends LivingEntity implements Targeting { diff --git a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index fb74fb3dc..2417920cf 100644 --- a/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 5156368507e56ec423a04e02e3cdcd8de502bc18..fd48f333747ec79083adea4053e643d93efca714 100644 +index 0e2a165a86ee59cd27c68d5b96ecdbb49d74b15f..710a4177acd4c25c2b1d193f2e9f7ef92b08e1e6 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -2848,4 +2848,26 @@ public class ServerPlayer extends Player { @@ -36,10 +36,10 @@ index 5156368507e56ec423a04e02e3cdcd8de502bc18..fd48f333747ec79083adea4053e643d9 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index aac03f78f88ff0b7ace9694093d4fbc649cd0cd5..e10a96335d9534a7c0a17d20d6563bf3e157f494 100644 +index e9529e1a1f799911484e0a4c0d725408580c01b9..537dae595f7b6df016db7fe2ee2591b78f853f4c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -426,6 +426,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -425,6 +425,7 @@ public abstract class LivingEntity extends Entity implements Attackable { double d1 = this.level().getWorldBorder().getDamagePerBlock(); if (d1 > 0.0D) { @@ -48,7 +48,7 @@ index aac03f78f88ff0b7ace9694093d4fbc649cd0cd5..e10a96335d9534a7c0a17d20d6563bf3 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9df1e909f4dc21d5c3d11fa67adc15efd5d82eca..3d7726bd54781e922f9d2b5b1fea510d6295919e 100644 +index f88bcb94067626daf8fe080f85de15dc81536fee..e813fa037ca17bec29db916eac882cbfab432e56 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -242,6 +242,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch index 2b58bd680..f3310fe8a 100644 --- a/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Crying obsidian valid for portal frames diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -index 590cd053a1b1c2a489772a2879998725fe0d783c..ba3f79cc1f7e672f0a9d32d262122ec6eba22b97 100644 +index 912cee9ec45876f831ca230b59a1be3b48ce6aa5..46910a3bdacc9df1835e16b300f9e107744d2660 100644 --- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java +++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -@@ -34,7 +34,7 @@ public class PortalShape { +@@ -33,7 +33,7 @@ public class PortalShape { private static final int MIN_HEIGHT = 3; public static final int MAX_HEIGHT = 21; private static final BlockBehaviour.StatePredicate FRAME = (iblockdata, iblockaccess, blockposition) -> { diff --git a/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch index 02ca3d7ca..262949f52 100644 --- a/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch @@ -42,10 +42,10 @@ index 081d1e38b7b1f286e138b0981aaa760e58761215..d94928a78d166dd3d836261b4f99fb4f EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityageable, this, other, breeder, this.breedItem, experience); if (entityBreedEvent.isCancelled()) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 1c8653222f07f5aa12639a95c13fdcdfd5dd87c0..29ff1ca5180aee623cd56c7310c2c0843f9a0b0a 100644 +index c2e6f6d2c4bdda3cafd2f7b42f3586242cdff738..85d0a644fa876978d1295d8a2d88ab2869b33904 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -196,6 +196,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -191,6 +191,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } // Paper end - fix and optimise world upgrading @@ -95,7 +95,7 @@ index 1c8653222f07f5aa12639a95c13fdcdfd5dd87c0..29ff1ca5180aee623cd56c7310c2c084 public CraftWorld getWorld() { return this.world; } -@@ -219,6 +262,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -214,6 +257,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur diff --git a/patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 2214737a5..6e974047f 100644 --- a/patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -5,16 +5,16 @@ Subject: [PATCH] Set name visible when using a Name Tag on an Armor Stand diff --git a/src/main/java/net/minecraft/world/item/NameTagItem.java b/src/main/java/net/minecraft/world/item/NameTagItem.java -index d12b3fb8b5e28ba4524d163878be978b1b42d019..f570ad65b746b596479c987f2fdf37d1ae94ab47 100644 +index a0b3c2d3b3f86ecd6cb80ff767839d29ca4f4f68..61b4430d6dd73b5406c4879e41ff80a1b6f67f84 100644 --- a/src/main/java/net/minecraft/world/item/NameTagItem.java +++ b/src/main/java/net/minecraft/world/item/NameTagItem.java @@ -20,6 +20,7 @@ public class NameTagItem extends Item { if (!event.callEvent()) return InteractionResult.PASS; - LivingEntity newEntityLiving = ((org.bukkit.craftbukkit.entity.CraftLivingEntity) event.getEntity()).getHandle(); - newEntityLiving.setCustomName(event.getName() != null ? io.papermc.paper.adventure.PaperAdventure.asVanilla(event.getName()) : null); + LivingEntity newEntity = ((org.bukkit.craftbukkit.entity.CraftLivingEntity) event.getEntity()).getHandle(); + newEntity.setCustomName(event.getName() != null ? io.papermc.paper.adventure.PaperAdventure.asVanilla(event.getName()) : null); + if (user.level().purpurConfig.armorstandFixNametags && entity instanceof net.minecraft.world.entity.decoration.ArmorStand) entity.setCustomNameVisible(true); // Purpur - if (event.isPersistent() && newEntityLiving instanceof Mob) { - ((Mob) newEntityLiving).setPersistenceRequired(); + if (event.isPersistent() && newEntity instanceof Mob) { + ((Mob) newEntity).setPersistenceRequired(); // Paper end - Add PlayerNameEntityEvent diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 2ac5c8b427e2615b7522f745d431e78ff784d90c..a2b22b2b96cc476e7ed7b804ea175833853a9495 100644 diff --git a/patches/server/0119-PlayerBookTooLargeEvent.patch b/patches/server/0119-PlayerBookTooLargeEvent.patch index a1e95701a..b507efa21 100644 --- a/patches/server/0119-PlayerBookTooLargeEvent.patch +++ b/patches/server/0119-PlayerBookTooLargeEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 2cb344c02a3812225679d7392b9f557309d05010..afcf996540d2482b0a1afac5b2656beb53b41619 100644 +index 0eba0fcdb6161347175cf9599ce95cda0e7dc6fc..8fcd264000593ce8bcaba0bbc6df0074ea91e13d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1151,10 +1151,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1150,10 +1150,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl 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; @@ -24,7 +24,7 @@ index 2cb344c02a3812225679d7392b9f557309d05010..afcf996540d2482b0a1afac5b2656beb server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1178,6 +1183,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1177,6 +1182,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch index 8d1d153d3..cd97f625b 100644 --- a/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Full netherite armor grants fire resistance diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 346b4027006d5cde97ec5bc4599635b145a76de1..7126eab84084620661c1fd3c3311ac24fbcfad09 100644 +index ed24084bc7db7b0b1ef577fdab96b28a5fd81d52..8dd11cb347b0451ad3e6245339a080ca57f99fe8 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -365,6 +365,16 @@ public abstract class Player extends LivingEntity { +@@ -367,6 +367,16 @@ public abstract class Player extends LivingEntity { this.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 200, 0, false, false, true), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.TURTLE_HELMET); // CraftBukkit } diff --git a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch index d41648361..61be60f0e 100644 --- a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 43428fecf9b29cbf53ee18567ac797b9e84da6ad..e3723269a5651d02521da5cc0bca615bb3c81c61 100644 +index 2d73af861457b41447c66ce84e38bb91e0aa7bf6..2688d7d5a9427bc55f8661c7337cdeede582f01e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1808,7 +1808,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1809,7 +1809,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper @@ -18,7 +18,7 @@ index 43428fecf9b29cbf53ee18567ac797b9e84da6ad..e3723269a5651d02521da5cc0bca615b BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index aa9c5397361bc109d9d910b9c9510ca7394a4da4..4383b2555cb416fce7b62b046211dbc3e8c75601 100644 +index 004d6a378d2fb4b2f6429fd10d63a73aefef6a3f..de8c9905e4fec3d77501871ae3041860f1ce2e50 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -705,7 +705,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -131,7 +131,7 @@ index 6fac5dbbbd9600e82b1dd1496680f551ab44313e..fd64a12c7f215f47d366af60882981c2 } 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 277e0ef0c5dfd61ea21de7898bfe3ffdb7f7e17b..066dc828681ac665e807038d1a2afccb886c3ca6 100644 +index 88bc3710cf7229f85805ec210a06b224aec65a4b..50f6b8977866248d1a69f0c82d427eb8ef480952 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 @@ -604,7 +604,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -157,7 +157,7 @@ index 6bc0713a8bc8ac86f1febe3414bed135c1cd5336..a655c38eccc41d97cfb6d329e104bad6 j = Mth.floor(this.getX()); int i1 = Mth.floor(this.getZ()); diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 1851cd59230447f0d2beed10846de96d497e8a04..4ed9592387531d0880ba322b07ea776cd0b05f03 100644 +index ca2d247be50c1f7c69aeafeafa5b33ea296bf323..93420c7e9b34b40845f12a0058e50e6fd809e6f7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -549,7 +549,15 @@ public class EnderMan extends Monster implements NeutralMob { @@ -284,7 +284,7 @@ index 6b67eec90cd0dc1b20762514eac97f75fdbdf182..2dec28091d1816e9d4c749a5155e8303 // CraftBukkit start - fire ExplosionPrimeEvent ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 2d09d39a5971615a40b33baa0991c3e432f3ca18..f0c72be4a0dacad52ded87fa051b8505c1b79eae 100644 +index 837f68825f601971f374be47952b23108bf66ba6..422145f30b7c8e11366705cd9b974a5a89ba5e10 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java @@ -334,7 +334,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { @@ -336,7 +336,7 @@ index 5b96d1ae4bd8546311e986bc312b1f85883a67f4..07b148fc31aee3ce009d1d768ae16d98 } diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 386841341b59f05be0473bbfd2baf14c9b8e94c8..7f2943caa60fd8607fb525b746663a761bf1951c 100644 +index e8514465772a748afe19039d7ce5be0baa303243..e9ab88a5c68565f2245b3397edcffb0544a29fea 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -110,7 +110,7 @@ public class FarmBlock extends Block { diff --git a/patches/server/0132-Dont-run-with-scissors.patch b/patches/server/0132-Dont-run-with-scissors.patch index 9b6683973..f8a116da6 100644 --- a/patches/server/0132-Dont-run-with-scissors.patch +++ b/patches/server/0132-Dont-run-with-scissors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 1de057f671018b47087cd87b16bcd54de1ff7753..60fbeef064be1ce044ae870efa38e69d95afbaa2 100644 +index 8fcd264000593ce8bcaba0bbc6df0074ea91e13d..06ee25fb24123659b9134ac68e7076b5bb98999c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1639,6 +1639,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1638,6 +1638,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.resetFallDistance(); } @@ -22,7 +22,7 @@ index 1de057f671018b47087cd87b16bcd54de1ff7753..60fbeef064be1ce044ae870efa38e69d 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(); -@@ -1678,6 +1685,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1677,6 +1684,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return false; } // Paper end - optimise out extra getCubes diff --git a/patches/server/0133-One-Punch-Man.patch b/patches/server/0133-One-Punch-Man.patch index e20db9f05..b543db0c2 100644 --- a/patches/server/0133-One-Punch-Man.patch +++ b/patches/server/0133-One-Punch-Man.patch @@ -5,10 +5,10 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 29260e8898bb68f4bf31e0bb4b7c721eb5a94344..3922a378360771d8a550c26debbed08222a57d6c 100644 +index 2688d7d5a9427bc55f8661c7337cdeede582f01e..10c0f0e757331338c7747e9704f57eb4b7c5b848 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2334,6 +2334,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2335,6 +2335,20 @@ public abstract class LivingEntity extends Entity implements Attackable { } } diff --git a/patches/server/0143-Sneak-to-bulk-process-composter.patch b/patches/server/0143-Sneak-to-bulk-process-composter.patch index fe94c5f48..6d4748273 100644 --- a/patches/server/0143-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0143-Sneak-to-bulk-process-composter.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Sneak to bulk process composter diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 58f972832c39a27a8ccd606f9144e1c54adbf6f3..ecf0b6f30d5791f6c7097d352eafa8ecbcdf4aa8 100644 +index a7b217ddbcbf92513bd38101fdfca2075505e267..ac49288d59eee3657e0db9ed385248f6b91095cc 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -579,7 +579,7 @@ public class ServerPlayerGameMode { +@@ -577,7 +577,7 @@ public class ServerPlayerGameMode { boolean flag1 = player.isSecondaryUseActive() && flag; ItemStack itemstack1 = stack.copy(); @@ -18,7 +18,7 @@ index 58f972832c39a27a8ccd606f9144e1c54adbf6f3..ecf0b6f30d5791f6c7097d352eafa8ec if (enuminteractionresult.consumesAction()) { 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 de8b5cab7925c1c46478952ed2cb2bd40f9a9c48..27ff4a3de2253177a6f4a0dbf131d437eb24f2e8 100644 +index f9084e2605d7403721fe6b714bfad051f932aaef..47b7baa41f341087bcd5dfec1d2a13b96f8357ca 100644 --- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java @@ -236,20 +236,28 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { @@ -90,7 +90,7 @@ index de8b5cab7925c1c46478952ed2cb2bd40f9a9c48..27ff4a3de2253177a6f4a0dbf131d437 int i = (Integer) state.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a855bb2e4f04a64e47611b20342e1eb484f6bf22..71d472912a2c8dda6102357f6ed619e543e3b534 100644 +index 70b740ae9efc960266900a1c5b1d478d1794f5eb..419ddcb1197fe839d8fd5ab2fd65a22b0ff1bae5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -479,6 +479,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0147-Drowning-Settings.patch b/patches/server/0147-Drowning-Settings.patch index 0f8a82597..f483cd3db 100644 --- a/patches/server/0147-Drowning-Settings.patch +++ b/patches/server/0147-Drowning-Settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e2a11e9928e2ad39ce2dca85ada1108884cad568..6e397dddf129f0e2c598145c0d39f093e7671143 100644 +index 61bc2ca4255478a208101381f0d4eb17c401e679..26193b816e8cfd1aefba64ae05bbcf6af9d4559f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3393,7 +3393,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -18,10 +18,10 @@ index e2a11e9928e2ad39ce2dca85ada1108884cad568..6e397dddf129f0e2c598145c0d39f093 public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index a64a41c521aea5f90fcfe72dc24ae5261c5f0b6d..be5c0141d40864bbf7338f2f5b389ec8ea41e4a8 100644 +index 10c0f0e757331338c7747e9704f57eb4b7c5b848..c1a8e3e2d0b804aecf32119cdd6f04b894679222 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -438,7 +438,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -437,7 +437,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -30,7 +30,7 @@ index a64a41c521aea5f90fcfe72dc24ae5261c5f0b6d..be5c0141d40864bbf7338f2f5b389ec8 this.setAirSupply(0); Vec3 vec3d = this.getDeltaMovement(); -@@ -450,7 +450,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -449,7 +449,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.level().addParticle(ParticleTypes.BUBBLE, this.getX() + d2, this.getY() + d3, this.getZ() + d4, vec3d.x, vec3d.y, vec3d.z); } diff --git a/patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch index 201053b38..09b6bffcc 100644 --- a/patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add config change multiplier critical damage value diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 7126eab84084620661c1fd3c3311ac24fbcfad09..63ab4eaf21d69ab40ea4d659322b429cb640db60 100644 +index 8dd11cb347b0451ad3e6245339a080ca57f99fe8..906cbe8d6a03202da897ffe79e98976ee303d6f9 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1312,7 +1312,7 @@ public abstract class Player extends LivingEntity { +@@ -1314,7 +1314,7 @@ public abstract class Player extends LivingEntity { flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits flag2 = flag2 && !this.isSprinting(); if (flag2) { diff --git a/patches/server/0173-API-for-any-mob-to-burn-daylight.patch b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch index 27575a477..52c1e73e8 100644 --- a/patches/server/0173-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0173-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6e397dddf129f0e2c598145c0d39f093e7671143..fce22f388cae1e125528004457e917e3cbc86d38 100644 +index 26193b816e8cfd1aefba64ae05bbcf6af9d4559f..a0b9ef437e47de350e22acf510a535d3cb45c001 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -561,6 +561,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -32,10 +32,10 @@ index 6e397dddf129f0e2c598145c0d39f093e7671143..fce22f388cae1e125528004457e917e3 return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d2b1d362a0187a6eefa9d2a1d47971b783c252b7..6ba0fbaba03d9b7dede1b869f004bb020d25c885 100644 +index 4ef9f18b59c5ff6d0dc108e82db1ec17fccd79b8..a8d7992fc2d263f6898cf3025fa15cef6d24b439 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -262,6 +262,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -261,6 +261,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API @@ -43,7 +43,7 @@ index d2b1d362a0187a6eefa9d2a1d47971b783c252b7..6ba0fbaba03d9b7dede1b869f004bb02 @Override public float getBukkitYaw() { -@@ -803,6 +804,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -802,6 +803,7 @@ public abstract class LivingEntity extends Entity implements Attackable { dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); @@ -63,7 +63,7 @@ index d2b1d362a0187a6eefa9d2a1d47971b783c252b7..6ba0fbaba03d9b7dede1b869f004bb02 } // CraftBukkit start -@@ -3585,6 +3592,27 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3586,6 +3593,27 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } diff --git a/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index e030101a2..5b884de74 100644 --- a/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0179-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Burp delay, burp after eating food fills hunger bar diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 63ab4eaf21d69ab40ea4d659322b429cb640db60..59a6836778ee11c66455c29a4dbbe94d6940c812 100644 +index 906cbe8d6a03202da897ffe79e98976ee303d6f9..090d5e04aee2aa318739965aa275a239f8071486 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -182,6 +182,7 @@ public abstract class Player extends LivingEntity { @@ -30,7 +30,7 @@ index 63ab4eaf21d69ab40ea4d659322b429cb640db60..59a6836778ee11c66455c29a4dbbe94d this.noPhysics = this.isSpectator(); if (this.isSpectator()) { this.setOnGround(false); -@@ -2311,7 +2318,7 @@ public abstract class Player extends LivingEntity { +@@ -2313,7 +2320,7 @@ public abstract class Player extends LivingEntity { public ItemStack eat(Level world, ItemStack stack) { this.getFoodData().eat(stack.getItem(), stack); this.awardStat(Stats.ITEM_USED.get(stack.getItem())); diff --git a/patches/server/0181-Add-portal-permission-bypass.patch b/patches/server/0181-Add-portal-permission-bypass.patch index 8a9e3eb08..daca126fd 100644 --- a/patches/server/0181-Add-portal-permission-bypass.patch +++ b/patches/server/0181-Add-portal-permission-bypass.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add portal permission bypass diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 59a6836778ee11c66455c29a4dbbe94d6940c812..f0e910a738d71a7759f41e6294e16db256c9c641 100644 +index 090d5e04aee2aa318739965aa275a239f8071486..4db05f2de856c5ea023ee8ce4a6052257cc32549 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -183,6 +183,7 @@ public abstract class Player extends LivingEntity { @@ -16,7 +16,7 @@ index 59a6836778ee11c66455c29a4dbbe94d6940c812..f0e910a738d71a7759f41e6294e16db2 // CraftBukkit start public boolean fauxSleeping; -@@ -472,7 +473,7 @@ public abstract class Player extends LivingEntity { +@@ -474,7 +475,7 @@ public abstract class Player extends LivingEntity { @Override public int getPortalWaitTime() { diff --git a/patches/server/0189-Store-placer-on-Block-when-placed.patch b/patches/server/0189-Store-placer-on-Block-when-placed.patch index 4df8044d1..decf00fd1 100644 --- a/patches/server/0189-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0189-Store-placer-on-Block-when-placed.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Store placer on Block when placed diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 7490893e2e419e3b8d15bf1b2fa776c6e07a7dec..4122154bdefca80286a8da128feee31f5fa183ee 100644 +index 46fafca45014292b1a8993e826c8710db9812876..6c6e6d8f3fd9d71cc13a53639dce1e8781de05af 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -453,6 +453,7 @@ public final class ItemStack { @@ -25,10 +25,10 @@ index 7490893e2e419e3b8d15bf1b2fa776c6e07a7dec..4122154bdefca80286a8da128feee31f world.notifyAndUpdatePhysics(newblockposition, null, oldBlock, block, world.getBlockState(newblockposition), updateFlag, 512); // send null chunk as chunk.k() returns false by this point } 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 3f2fdf73e2e520838c7b59fe994e67ab2d1a4d6b..cd9996b03974d44ba0285a6eab7d2923c2533446 100644 +index 22036ed3ea0629bc12981a8d91a03e55cc2117d6..3dc71c4ee8fc9846e49e659c6b5e7b55ea084f14 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -445,7 +445,17 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -446,7 +446,17 @@ public class Block extends BlockBehaviour implements ItemLike { } // Paper - fix drops not preventing stats/food exhaustion } diff --git a/patches/server/0194-Player-ridable-in-water-option.patch b/patches/server/0194-Player-ridable-in-water-option.patch index dcf0e411d..f9f226202 100644 --- a/patches/server/0194-Player-ridable-in-water-option.patch +++ b/patches/server/0194-Player-ridable-in-water-option.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Player ridable in water option diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index f0e910a738d71a7759f41e6294e16db256c9c641..712d4a9cae11f75ffce45c912bf14ff92fe4735e 100644 +index 4db05f2de856c5ea023ee8ce4a6052257cc32549..d9b12e2b4e5d3039bde74a847a484c0dae319a92 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -2039,6 +2039,11 @@ public abstract class Player extends LivingEntity { +@@ -2041,6 +2041,11 @@ public abstract class Player extends LivingEntity { return this.inventory.armor; } diff --git a/patches/server/0197-Toggle-for-kinetic-damage.patch b/patches/server/0197-Toggle-for-kinetic-damage.patch index 32c34ccb3..2735193b2 100644 --- a/patches/server/0197-Toggle-for-kinetic-damage.patch +++ b/patches/server/0197-Toggle-for-kinetic-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 338e9bef962f9090070a9c76e565c6aeab66975e..665bfee6a54269847cbab3669d771494a8dae422 100644 +index a8d7992fc2d263f6898cf3025fa15cef6d24b439..be06f0adaa7ea31139900162fd4128222a0b5ea3 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2932,6 +2932,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2933,6 +2933,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (f3 > 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); diff --git a/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch index 7b02fba7f..aa30c8892 100644 --- a/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0212-Shift-right-click-to-use-exp-for-mending.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shift right click to use exp for mending diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 3e00cdf0a8fbf559b62b09b3086feb5786169e09..ac325b200bf5091d190f6c1a97caa3dc0434a707 100644 +index 1aa98f8ff062a906035c62875c454aeb0bc6f179..f8edb6b0d119582cf404b9931adc09484465fc9d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -517,6 +517,7 @@ public class ServerPlayerGameMode { @@ -16,7 +16,7 @@ index 3e00cdf0a8fbf559b62b09b3086feb5786169e09..ac325b200bf5091d190f6c1a97caa3dc BlockPos blockposition = hitResult.getBlockPos(); BlockState iblockdata = world.getBlockState(blockposition); InteractionResult enuminteractionresult = InteractionResult.PASS; -@@ -621,4 +622,18 @@ public class ServerPlayerGameMode { +@@ -619,4 +620,18 @@ public class ServerPlayerGameMode { public void setLevel(ServerLevel world) { this.level = world; } @@ -36,10 +36,10 @@ index 3e00cdf0a8fbf559b62b09b3086feb5786169e09..ac325b200bf5091d190f6c1a97caa3dc + // 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 60fbeef064be1ce044ae870efa38e69d95afbaa2..9695492472a6b14d75a8dac4a2cbc196bce75937 100644 +index 06ee25fb24123659b9134ac68e7076b5bb98999c..620530cf5c18fa93cd1fd2adefd136bbbc9e59a3 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2037,6 +2037,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2036,6 +2036,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { diff --git a/patches/server/0222-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0222-Persistent-BlockEntity-Lore-and-DisplayName.patch index 27a26762c..7266c3d26 100644 --- a/patches/server/0222-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0222-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -37,7 +37,7 @@ index b1779e3cf4b01afc15aa367cfadb999366e46d19..f33fcd7bca6f315c4b4cf1f5063f4772 @Nullable 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 345c0299e95be5f3c46237ba0626311553260506..b17def87be9e96fa0c94f50b359d83fd82c90f01 100644 +index 3dc71c4ee8fc9846e49e659c6b5e7b55ea084f14..34b4c19220e73efad9ff22f3798ee7fbbd5a1968 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java @@ -63,6 +63,13 @@ import net.minecraft.world.phys.shapes.Shapes; @@ -63,16 +63,16 @@ index 345c0299e95be5f3c46237ba0626311553260506..b17def87be9e96fa0c94f50b359d83fd }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); } -@@ -338,7 +345,7 @@ public class Block extends BlockBehaviour implements ItemLike { - event.setExpToDrop(block.getExpDrop(state, (ServerLevel) world, pos, net.minecraft.world.item.ItemStack.EMPTY, true)); // Paper - Properly handle xp dropping +@@ -339,7 +346,7 @@ public class Block extends BlockBehaviour implements ItemLike { + event.setExpToDrop(block.getExpDrop(state, serverLevel, pos, net.minecraft.world.item.ItemStack.EMPTY, true)); // Paper - Properly handle xp dropping event.callEvent(); - for (var drop : event.getDrops()) { -- popResource(world.getMinecraftWorld(), pos, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(drop)); -+ popResource(world.getMinecraftWorld(), pos, applyDisplayNameAndLoreFromTile(org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(drop), blockEntity)); // Purpur + for (org.bukkit.inventory.ItemStack drop : event.getDrops()) { +- popResource(serverLevel, pos, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(drop)); ++ popResource(serverLevel, pos, applyDisplayNameAndLoreFromTile(org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(drop), blockEntity)); // Purpur } - state.spawnAfterBreak(world.getMinecraftWorld(), pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping - block.popExperience((ServerLevel) world, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping -@@ -355,13 +362,53 @@ public class Block extends BlockBehaviour implements ItemLike { + state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping + block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping +@@ -356,13 +363,53 @@ public class Block extends BlockBehaviour implements ItemLike { // Paper end - Properly handle xp dropping if (world instanceof ServerLevel) { Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, tool).forEach((itemstack1) -> { @@ -128,7 +128,7 @@ index 345c0299e95be5f3c46237ba0626311553260506..b17def87be9e96fa0c94f50b359d83fd double d0 = (double) EntityType.ITEM.getHeight() / 2.0D; double d1 = (double) pos.getX() + 0.5D + Mth.nextDouble(world.random, -0.25D, 0.25D); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index 4ce7a7947fa727e64556148f923508ce76c128c4..96995d9163d34fa55cb4b6a28f8b0c51752e1357 100644 +index 9ea74d37cd951e0dc76d20ed8234b5871035566c..8e1afae66742fc69d5aab1074ba94a3999cbf9b8 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java @@ -6,6 +6,8 @@ import net.minecraft.CrashReportCategory; diff --git a/patches/server/0231-Configurable-valid-characters-for-usernames.patch b/patches/server/0231-Configurable-valid-characters-for-usernames.patch index 37b49e476..2cbdcc4b1 100644 --- a/patches/server/0231-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0231-Configurable-valid-characters-for-usernames.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable valid characters for usernames diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 712d4a9cae11f75ffce45c912bf14ff92fe4735e..6e697e132bd654dd7c8a4170648bfd4aaedc47a4 100644 +index d9b12e2b4e5d3039bde74a847a484c0dae319a92..ec4ca16e4f7307b9993717fefc48c305a1f58418 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -2418,6 +2418,7 @@ public abstract class Player extends LivingEntity { +@@ -2420,6 +2420,7 @@ public abstract class Player extends LivingEntity { } public static boolean isValidUsername(String name) { diff --git a/patches/server/0236-Configurable-player-pickup-exp-delay.patch b/patches/server/0236-Configurable-player-pickup-exp-delay.patch index 86565b9bd..11c9f53aa 100644 --- a/patches/server/0236-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0236-Configurable-player-pickup-exp-delay.patch @@ -22,10 +22,10 @@ index 673b3aee680bb8a2d20f96be661d5fa9c61f4ce3..19144edcc449dc2f992228612340cf21 int i = this.repairPlayerItems(player, this.value); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 6e697e132bd654dd7c8a4170648bfd4aaedc47a4..208189cec91b298b5843473f065c5372ef67f20d 100644 +index ec4ca16e4f7307b9993717fefc48c305a1f58418..dfc73cd1b4fd9a2572a71b653e6e3d9133ec634c 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -629,7 +629,7 @@ public abstract class Player extends LivingEntity { +@@ -631,7 +631,7 @@ public abstract class Player extends LivingEntity { while (iterator.hasNext()) { Entity entity = (Entity) iterator.next(); diff --git a/patches/server/0256-Spark-Profiler.patch b/patches/server/0256-Spark-Profiler.patch index c1d92008a..a0e179155 100644 --- a/patches/server/0256-Spark-Profiler.patch +++ b/patches/server/0256-Spark-Profiler.patch @@ -6,12 +6,12 @@ Subject: [PATCH] Spark Profiler Co-authored-by: granny diff --git a/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java b/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java -index 89bf48fd581ee6580b91e2eb31dd532cb622df5e..e35da199be67e04c34df6bc09afd8d8122cb0487 100644 +index 708e5bb9bbf0476fcc2c4b92c6830b094703b43e..6141f716b15ad47ac2ac4c9ce92a3897b3ad8807 100644 --- a/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java +++ b/src/main/java/io/papermc/paper/plugin/PluginInitializerManager.java -@@ -102,6 +102,7 @@ public class PluginInitializerManager { - java.util.List files = (java.util.List) optionSet.valuesOf("add-plugin"); - // Register plugins from the flag +@@ -104,6 +104,7 @@ public class PluginInitializerManager { + @SuppressWarnings("unchecked") + java.util.List files = ((java.util.List) optionSet.valuesOf("add-plugin")).stream().map(File::toPath).toList(); io.papermc.paper.plugin.util.EntrypointUtil.registerProvidersFromSource(io.papermc.paper.plugin.provider.source.PluginFlagProviderSource.INSTANCE, files); + io.papermc.paper.plugin.util.EntrypointUtil.registerProvidersFromSource(io.papermc.paper.plugin.provider.source.SparkProviderSource.INSTANCE, new File("cache", "spark.jar").toPath()); // Purpur } diff --git a/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch index 79d477c73..b23ff0ff9 100644 --- a/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9695492472a6b14d75a8dac4a2cbc196bce75937..962dd813a9422ae14f7a149c605c7df4fee61f91 100644 +index 620530cf5c18fa93cd1fd2adefd136bbbc9e59a3..c36d2dc918b0fe14c634a765524af06e65ddc104 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1702,7 +1702,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1701,7 +1701,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl do { if (!iterator.hasNext()) { diff --git a/patches/server/0264-Remove-Timings.patch b/patches/server/0264-Remove-Timings.patch index f4140f944..957214388 100644 --- a/patches/server/0264-Remove-Timings.patch +++ b/patches/server/0264-Remove-Timings.patch @@ -56,7 +56,7 @@ index 3e2d5dcd62775b6ed7c0ce0ba51a71b635b1d644..166cd0f8e72189d10e56cd7bc095409a } catch (Exception exception) { label25: diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 48f4122696dfb9ebc6c09b0036f5fa3591ce7c5e..6e996eef388bb154fde7ae285375900e9e7a2f6c 100644 +index 0088180c3574ace7eb4170c385d2ca9fc098d6f3..b1d2464fc151d4c636c3c2dc4e7b9446ff5dc0a0 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1429,7 +1429,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -642,7 +642,7 @@ index 26ca065482fac4649cf6108789d69b95ea93ea83..af22ffb1fceb2402a2ee82cce844cec0 if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2452,7 +2452,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2451,7 +2451,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -651,7 +651,7 @@ index 26ca065482fac4649cf6108789d69b95ea93ea83..af22ffb1fceb2402a2ee82cce844cec0 return; } -@@ -2465,7 +2465,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2464,7 +2464,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { @@ -661,7 +661,7 @@ index 26ca065482fac4649cf6108789d69b95ea93ea83..af22ffb1fceb2402a2ee82cce844cec0 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index d1afad129159d5ce7cf9530a7dfb6ed5b4fa25f3..b230739cf929c8f2b51a812fffe54be343ce3e05 100644 +index 8458adda210e10254d5564a6b84894805b7ddbfe..323391509c2efd49c54d7b36d7aa880c63ae5fd4 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1273,7 +1273,7 @@ public abstract class PlayerList { @@ -732,10 +732,10 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 1b6701b3e844610a443d85e7fe387860443a0ee4..81a38b3384f6c0111d3e10397d21aba3f2d57325 100644 +index 85d0a644fa876978d1295d8a2d88ab2869b33904..4999f9f3a4296df3d7f933cc4011e85527da3a17 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1313,15 +1313,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1308,15 +1308,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("blockEntities"); @@ -754,7 +754,7 @@ index 1b6701b3e844610a443d85e7fe387860443a0ee4..81a38b3384f6c0111d3e10397d21aba3 // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); boolean flag = this.tickRateManager().runsNormally(); -@@ -1350,7 +1350,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1345,7 +1345,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 @@ -764,7 +764,7 @@ index 1b6701b3e844610a443d85e7fe387860443a0ee4..81a38b3384f6c0111d3e10397d21aba3 co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 96fc603c2fccc1d9610248b2116d35696bc65e4e..3d99667fa297ea15c5d3a0526a846ce177a5037a 100644 +index 661acdf4b1f33d150b0caf179e925d3162d7be35..78eb2d8ba58f2937c1145147e2d9e7de802e541e 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -133,7 +133,7 @@ public final class NaturalSpawner { diff --git a/patches/server/0265-Remove-Mojang-Profiler.patch b/patches/server/0265-Remove-Mojang-Profiler.patch index 6c0e5c5d8..32d0817dc 100644 --- a/patches/server/0265-Remove-Mojang-Profiler.patch +++ b/patches/server/0265-Remove-Mojang-Profiler.patch @@ -89,7 +89,7 @@ index 821dc4aeaf48460000682604fba51b340b9738e7..3aa2ce6a2a3d3cdfc372a60419a09f49 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 6e996eef388bb154fde7ae285375900e9e7a2f6c..1c416ff1bb7cdbf361c096987705bc55e9837dab 100644 +index b1d2464fc151d4c636c3c2dc4e7b9446ff5dc0a0..8384f72d408f6f31c4c8a1ba47b8caba600faaad 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -341,13 +341,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent + worldserver.updateLagCompensationTick(); // Paper - lag compensation worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur - this.profiler.push(() -> { @@ -1095,7 +1095,7 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6a3fa8bec23e2405091eae560c1edef02023a8a9..eb36f7a9e0f0def9a42947e3b056e6986a57efd9 100644 +index 2c8cc87353450e2d99c80bcefaf30bc5819a6061..b58a9ea6ec03d6cd434923d2354061e624126191 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -848,7 +848,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -1221,10 +1221,10 @@ index 6a3fa8bec23e2405091eae560c1edef02023a8a9..eb36f7a9e0f0def9a42947e3b056e698 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 87c4e2ef041238f84a00f2b032ed10c3f250eb0d..66abff00db43413b07d51d48654eab7be821bc93 100644 +index 38c639d0c38e07908ac26a9c998ff06f28a09089..4fe150e70b5ecd74263f67a343a5af513ab471d1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -409,7 +409,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -408,7 +408,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } super.baseTick(); @@ -1233,7 +1233,7 @@ index 87c4e2ef041238f84a00f2b032ed10c3f250eb0d..66abff00db43413b07d51d48654eab7b if (this.fireImmune() || this.level().isClientSide) { this.clearFire(); } -@@ -512,7 +512,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -511,7 +511,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO = this.yHeadRot; this.yRotO = this.getYRot(); this.xRotO = this.getXRot(); @@ -1242,7 +1242,7 @@ index 87c4e2ef041238f84a00f2b032ed10c3f250eb0d..66abff00db43413b07d51d48654eab7b } public boolean canSpawnSoulSpeedParticle() { -@@ -3165,10 +3165,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3166,10 +3166,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1256,7 +1256,7 @@ index 87c4e2ef041238f84a00f2b032ed10c3f250eb0d..66abff00db43413b07d51d48654eab7b // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3180,7 +3180,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3181,7 +3181,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1265,7 +1265,7 @@ index 87c4e2ef041238f84a00f2b032ed10c3f250eb0d..66abff00db43413b07d51d48654eab7b this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3475,19 +3475,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3476,19 +3476,19 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d0, d1, d2); @@ -1290,7 +1290,7 @@ index 87c4e2ef041238f84a00f2b032ed10c3f250eb0d..66abff00db43413b07d51d48654eab7b if (this.jumping && this.isAffectedByFluids()) { double d3; -@@ -3514,8 +3514,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3515,8 +3515,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1301,7 +1301,7 @@ index 87c4e2ef041238f84a00f2b032ed10c3f250eb0d..66abff00db43413b07d51d48654eab7b this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3542,8 +3542,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3543,8 +3543,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1312,7 +1312,7 @@ index 87c4e2ef041238f84a00f2b032ed10c3f250eb0d..66abff00db43413b07d51d48654eab7b if (!this.level().isClientSide && !this.isDeadOrDying() && !this.freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3560,15 +3560,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3561,15 +3561,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } @@ -1821,10 +1821,10 @@ index 28ef910885dbd48965fba6f08cec412697b1b7f0..02dae407069a0200e271cc9c6f3ec6ff if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 81a38b3384f6c0111d3e10397d21aba3f2d57325..c37b1fb81e6e8a8af5d17420892ee930b31ca019 100644 +index 4999f9f3a4296df3d7f933cc4011e85527da3a17..bc797f1872f86b59a8aae3e70823249c9b8d8922 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1310,9 +1310,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1305,9 +1305,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } protected void tickBlockEntities() { @@ -1836,7 +1836,7 @@ index 81a38b3384f6c0111d3e10397d21aba3f2d57325..c37b1fb81e6e8a8af5d17420892ee930 //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1353,7 +1353,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1348,7 +1348,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1845,7 +1845,7 @@ index 81a38b3384f6c0111d3e10397d21aba3f2d57325..c37b1fb81e6e8a8af5d17420892ee930 this.spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1563,7 +1563,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1558,7 +1558,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1854,7 +1854,7 @@ index 81a38b3384f6c0111d3e10397d21aba3f2d57325..c37b1fb81e6e8a8af5d17420892ee930 List list = Lists.newArrayList(); ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call return list; -@@ -1582,7 +1582,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1577,7 +1577,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public void getEntities(EntityTypeTest filter, AABB box, Predicate predicate, List result, int limit) { @@ -1863,7 +1863,7 @@ index 81a38b3384f6c0111d3e10397d21aba3f2d57325..c37b1fb81e6e8a8af5d17420892ee930 // Paper start - optimise this call //TODO use limit if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) { -@@ -1841,7 +1841,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1836,7 +1836,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { @@ -1873,7 +1873,7 @@ index 81a38b3384f6c0111d3e10397d21aba3f2d57325..c37b1fb81e6e8a8af5d17420892ee930 } diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 3d99667fa297ea15c5d3a0526a846ce177a5037a..a0ab8be389a175b5e6c42798650a06882a7b3886 100644 +index 78eb2d8ba58f2937c1145147e2d9e7de802e541e..d657de0bcc0684d1ba49ddad4db35e0e23fac108 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -132,7 +132,7 @@ public final class NaturalSpawner { diff --git a/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch index 618477cb5..29e603d8c 100644 --- a/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 3451fc27983d6ae2bc53568843d9f87f4e456b57..dc2c43794841af062b325a90fd5f68f581b99317 100644 +index 80be383a1cf12695430a75d2bd11ad0cf6104e80..15a9a4b135bd92a7304cb4257c1ddcfbf0e340a6 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -734,6 +734,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -733,6 +733,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause @@ -16,7 +16,7 @@ index 3451fc27983d6ae2bc53568843d9f87f4e456b57..dc2c43794841af062b325a90fd5f68f5 return; } -@@ -1350,8 +1351,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1349,8 +1350,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/server/0275-Add-item-packet-serialize-event.patch b/patches/server/0275-Add-item-packet-serialize-event.patch index 71883b70e..1edb46095 100644 --- a/patches/server/0275-Add-item-packet-serialize-event.patch +++ b/patches/server/0275-Add-item-packet-serialize-event.patch @@ -36,7 +36,7 @@ index b863249ff7e13cf4939c8961601f0564c62fd661..bdcfd80f937c34956911373905d66424 this.writeId(BuiltInRegistries.ITEM, item); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1c416ff1bb7cdbf361c096987705bc55e9837dab..0dc5b32fbd3b3d9bb1189f46aab32057f30b18d1 100644 +index 8384f72d408f6f31c4c8a1ba47b8caba600faaad..b1dd8d66a524254a270a725f5f7a46f28e13b749 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1721,6 +1721,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements FeatureElement, EntityTypeT +@@ -619,6 +619,12 @@ public class EntityType implements FeatureElement, EntityTypeT entity.load(nbt); }, () -> { EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id"));