diff --git a/gradle.properties b/gradle.properties index 283ae58d5..daf689916 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ version = 1.18.1-R0.1-SNAPSHOT mcVersion = 1.18.1 packageVersion = 1_18_R1 -paperCommit = 64f9225c94f3cd1b7793cb5234fa78423f222f23 +paperCommit = 3c5284dae90754acc45aba930c01f32593a3fed4 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0001-Build-System-Changes.patch b/patches/api/0001-Build-System-Changes.patch index c900be255..8d067bb49 100644 --- a/patches/api/0001-Build-System-Changes.patch +++ b/patches/api/0001-Build-System-Changes.patch @@ -6,12 +6,12 @@ Subject: [PATCH] Build System Changes todo: merge with rebrand patch diff --git a/build.gradle.kts b/build.gradle.kts -index a23b2bd8e1ca1ff8d0ad5ed5d5e41c89e4795090..46877e24c8e676fcc229090b96738ea79dceeaa1 100644 +index 001c2b963205012f340db0d539e4033c748124ce..1ab728d05891b3a17094a4a61b5af4ad6de5e074 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -40,6 +40,7 @@ dependencies { apiAndDocs("net.kyori:adventure-text-serializer-plain") - api("org.apache.logging.log4j:log4j-api:2.17.0") + api("org.apache.logging.log4j:log4j-api:2.17.1") api("org.slf4j:slf4j-api:1.8.0-beta4") + api("net.kyori:adventure-text-minimessage:4.1.0-SNAPSHOT") // Purpur diff --git a/patches/api/0017-ItemStack-convenience-methods.patch b/patches/api/0017-ItemStack-convenience-methods.patch index 71cb850fd..97d31a960 100644 --- a/patches/api/0017-ItemStack-convenience-methods.patch +++ b/patches/api/0017-ItemStack-convenience-methods.patch @@ -5,12 +5,12 @@ Subject: [PATCH] ItemStack convenience methods diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index f24820f14d689d49dfea25605199d5299ec28e7c..4e4fcce337047da575a9318c7094614d5270040e 100644 +index 56e5ab93096801277ec5162981ddf5275d2c7669..bfcd5b17898ae97340d813bb46506234bc03e229 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -9832,4 +9832,40 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata - // - } +@@ -9857,4 +9857,40 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata + + return Bukkit.getUnsafe().getDefaultAttributeModifiers(this, slot); } + + // Purpur start diff --git a/patches/api/0027-Fix-javadoc-warnings-missing-param-and-return.patch b/patches/api/0027-Fix-javadoc-warnings-missing-param-and-return.patch index 972350574..e882f7c13 100644 --- a/patches/api/0027-Fix-javadoc-warnings-missing-param-and-return.patch +++ b/patches/api/0027-Fix-javadoc-warnings-missing-param-and-return.patch @@ -503,10 +503,10 @@ index fa2a5c8ed947cd2beed01df82fcc5e450e3e5782..d5e7538f7c7f288e1710fb383b57683f @NotNull diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index 81e17ebb54f8b5c085842f223081f3d6d33a317d..9b17e6920dc3612e1787be1b74988a24bb6ad5a7 100644 +index f59030893eba2bf653207b040a5f54fdf7b7b50f..430525a74bd727c6c831aaa86784430bf7b221a8 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -88,6 +88,8 @@ public interface UnsafeValues { +@@ -94,6 +94,8 @@ public interface UnsafeValues { /** * Called once by the version command on first use, then cached. @@ -515,7 +515,7 @@ index 81e17ebb54f8b5c085842f223081f3d6d33a317d..9b17e6920dc3612e1787be1b74988a24 */ default com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { return new com.destroystokyo.paper.util.VersionFetcher.DummyVersionFetcher(); -@@ -114,6 +116,8 @@ public interface UnsafeValues { +@@ -120,6 +122,8 @@ public interface UnsafeValues { /** * Return the translation key for the Material, so the client can translate it into the active * locale when using a {@link net.kyori.adventure.text.TranslatableComponent}. @@ -524,7 +524,7 @@ index 81e17ebb54f8b5c085842f223081f3d6d33a317d..9b17e6920dc3612e1787be1b74988a24 * @return the translation key */ String getTranslationKey(Material mat); -@@ -121,6 +125,8 @@ public interface UnsafeValues { +@@ -127,6 +131,8 @@ public interface UnsafeValues { /** * Return the translation key for the Block, so the client can translate it into the active * locale when using a {@link net.kyori.adventure.text.TranslatableComponent}. @@ -533,7 +533,7 @@ index 81e17ebb54f8b5c085842f223081f3d6d33a317d..9b17e6920dc3612e1787be1b74988a24 * @return the translation key */ String getTranslationKey(org.bukkit.block.Block block); -@@ -129,6 +135,8 @@ public interface UnsafeValues { +@@ -135,6 +141,8 @@ public interface UnsafeValues { * Return the translation key for the EntityType, so the client can translate it into the active * locale when using a {@link net.kyori.adventure.text.TranslatableComponent}.
* This is null, when the EntityType isn't known to NMS (custom entities) @@ -542,7 +542,7 @@ index 81e17ebb54f8b5c085842f223081f3d6d33a317d..9b17e6920dc3612e1787be1b74988a24 * @return the translation key */ String getTranslationKey(org.bukkit.entity.EntityType type); -@@ -144,6 +152,8 @@ public interface UnsafeValues { +@@ -150,6 +158,8 @@ public interface UnsafeValues { * Creates and returns the next EntityId available. *

* Use this when sending custom packets, so that there are no collisions on the client or server. diff --git a/patches/server/0004-Purpur-client-support.patch b/patches/server/0004-Purpur-client-support.patch index 92b01e954..302510350 100644 --- a/patches/server/0004-Purpur-client-support.patch +++ b/patches/server/0004-Purpur-client-support.patch @@ -17,10 +17,10 @@ index 7b23535a680d2a8534dcb8dd87770f66fb982c13..4b842e78d3e8fbca90f5f3d975bee654 public double lastEntitySpawnRadiusSquared; // Paper - optimise isOutsideRange, this field is in blocks public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 3c7e3d5b06409bf2e98a35d678564f0e477481a9..2e60ee66d091f01128c6467b02d0791726b5813a 100644 +index 926d0a80cbb55184955ac6720948d2e86683cc57..7842e8098f044f20bee462a3c1c9ca8553b77e6a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3141,6 +3141,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3142,6 +3142,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser private static final ResourceLocation CUSTOM_UNREGISTER = new ResourceLocation("unregister"); private static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support @@ -28,7 +28,7 @@ index 3c7e3d5b06409bf2e98a35d678564f0e477481a9..2e60ee66d091f01128c6467b02d07917 @Override public void handleCustomPayload(ServerboundCustomPayloadPacket packet) { -@@ -3165,6 +3166,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3166,6 +3167,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t unregister custom payload", ex); this.disconnect("Invalid payload UNREGISTER!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause } diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 5ec7d18f5..b4e7f1ed4 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -73,18 +73,18 @@ index c516ad43cac2419bcf63e11eaa183785b462de5c..618595add09eef5381307ba2fe154adf + } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 2e60ee66d091f01128c6467b02d0791726b5813a..ff01b193a1f2372bc79bd864a689a6b36d53b4b8 100644 +index 7842e8098f044f20bee462a3c1c9ca8553b77e6a..1b50ee29ab8721807745e052e19c67e7db6cfd18 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2452,6 +2452,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -2453,6 +2453,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); + player.processClick(enumhand); // Purpur + - // Fish bucket - SPIGOT-4048 - if ((entity instanceof AbstractFish && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { - ServerGamePacketListenerImpl.this.send(new ClientboundAddMobPacket((AbstractFish) entity)); + // Entity in bucket - SPIGOT-4048 and SPIGOT-6859 + if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { + ServerGamePacketListenerImpl.this.send(new ClientboundAddMobPacket((LivingEntity) entity)); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java index 605a0e9cf68a4f698ac03b3477585861aeb354c7..43697061ddbbdf160453d3ab189097a6a56e6246 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java @@ -270,7 +270,7 @@ index fe7e22d9a69d69dfcce63faa28e90945ea45fc49..5d9e460c54068e0e05f975fa057a099c // Paper end if (!this.level.isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 8200e33ed4ebcae8a27cccf2a28daba5e10cf75d..b7e3091e9ce5b634c73ac573cf205278507270d5 100644 +index 153d866a09f598ae08cab7dedbcddfc9ce969d4b..184798f148fd6d3224de61747bce3142c0aefa7e 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -143,6 +143,8 @@ public abstract class Mob extends LivingEntity { @@ -2308,10 +2308,10 @@ index 51821a71bb0eb9cd22c657a46ef148c84a2355c1..a67061b875468777ee6256c0b28894c6 protected SoundEvent getAmbientSound() { super.getAmbientSound(); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 5f0ccd0181dd1c84580b91fdccdcbce0a619d10d..a693f5ff830662e3a958af28503bd55a52130952 100644 +index 80340a7543ff8287621c90b99b85886a5483810a..235dae1b47641fb69e6b34e419797a1a8bf499f2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -29,6 +29,13 @@ public class SkeletonHorse extends AbstractHorse { +@@ -30,6 +30,13 @@ public class SkeletonHorse extends AbstractHorse { super(type, world); } @@ -2323,17 +2323,18 @@ index 5f0ccd0181dd1c84580b91fdccdcbce0a619d10d..a693f5ff830662e3a958af28503bd55a + // Purpur end + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D); } -@@ -40,6 +47,7 @@ public class SkeletonHorse extends AbstractHorse { - - @Override - protected void addBehaviourGoals() { -+ if (level.purpurConfig.skeletonHorseCanSwim) goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur +@@ -40,7 +47,7 @@ public class SkeletonHorse extends AbstractHorse { } @Override -@@ -135,7 +143,7 @@ public class SkeletonHorse extends AbstractHorse { +- protected void addBehaviourGoals() {} ++ protected void addBehaviourGoals() { if (level.purpurConfig.skeletonHorseCanSwim) goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); } // Purpur + + @Override + protected SoundEvent getAmbientSound() { +@@ -135,7 +142,7 @@ public class SkeletonHorse extends AbstractHorse { @Override public boolean rideableUnderWater() { @@ -4101,10 +4102,10 @@ index 8ff606567297296e30e7e543890d9971d6c165b0..660b12722adbad6d80ed447b23e4718a Vec3 vec3d1 = Vex.this.getDeltaMovement(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index 85294ab8eaa654be9358f489cec7e1ae665fc34b..84af15aae78f9f50f358a3aee43eba683bd418dd 100644 +index b3a00bff85ade49b476c883350ff3563e1a4b842..489f604fda644f6cb576f1377fa31d23b1d83c48 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -57,14 +57,28 @@ public class Vindicator extends AbstractIllager { +@@ -58,15 +58,29 @@ public class Vindicator extends AbstractIllager { super(type, world); } @@ -4129,10 +4130,12 @@ index 85294ab8eaa654be9358f489cec7e1ae665fc34b..84af15aae78f9f50f358a3aee43eba68 this.goalSelector.addGoal(2, new AbstractIllager.RaiderOpenDoorGoal(this)); this.goalSelector.addGoal(3, new Raider.HoldGroundAttackGoal(this, 10.0F)); this.goalSelector.addGoal(4, new Vindicator.VindicatorMeleeAttackGoal(this)); +- this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Raider.class})).setAlertOthers()); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers()); ++ this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers()); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)); + this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.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 43e4562dcb0de8db42ff556134f649b5e0aa4284..75bc4ade487e92aa939b7a04bf3d22170bc6ea9e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Witch.java @@ -4425,7 +4428,7 @@ index ea0040a3494709efb4819c7530dbcc37aa62e86a..5025d4571a34fe9e0e58ada6b81b0647 this.level.getProfiler().pop(); PiglinBruteAi.updateActivity(this); 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 0ac3d6b25857bc5af0a4909a70053eeb86ea48ea..1b174af3c47cb49d4ee4b7a6968e24510b3730eb 100644 +index ea612b3c3ed7305b504d65eb6d38ed99547fd488..ed56e4f4e35d0425546a37455af3776c65d45f66 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -151,6 +151,23 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -4561,10 +4564,10 @@ index 15744949537430d8d8ae71ea72481126c9aff7bd..36417466ae30e9f7f3e953fd4ff98ed3 Projectile(EntityType type, Level world) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 5893d2028679d23315a32433f6affa0c8d63c01c..f79cd24ce66fa7ea79308912a1696b3ca9bdffba 100644 +index 69223b13e894d86d9529f2ef8b60a08a1f7a9267..c2581fb017f6579e59bd25e46b781aa95985abb2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1292,4 +1292,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1293,4 +1293,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return getHandle().isInPowderSnow || getHandle().wasInPowderSnow; // depending on the location in the entity "tick" either could be needed. } // Paper end diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch index ae076664d..b5d98b43c 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -641,10 +641,10 @@ index a67061b875468777ee6256c0b28894c62ebb926c..1ba32a3ba56974425762026026d1e5ba @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index a693f5ff830662e3a958af28503bd55a52130952..8bc2c6a3ee0eec08900b96eea3d0d545616bc513 100644 +index 235dae1b47641fb69e6b34e419797a1a8bf499f2..3c3be1a40f04def3f2ffb6567fa5be0581b5608d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -34,6 +34,21 @@ public class SkeletonHorse extends AbstractHorse { +@@ -35,6 +35,21 @@ public class SkeletonHorse extends AbstractHorse { public boolean isTamed() { return true; } @@ -1207,10 +1207,10 @@ index 660b12722adbad6d80ed447b23e4718a1a21d706..8747ebbc637ceb1c61a38baf063a3352 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index 84af15aae78f9f50f358a3aee43eba683bd418dd..780172760fbfe60216ac624598403c22a2fe30df 100644 +index 489f604fda644f6cb576f1377fa31d23b1d83c48..c92c948989543248b22db0830a3cb1b6f7940d60 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -67,6 +67,11 @@ public class Vindicator extends AbstractIllager { +@@ -68,6 +68,11 @@ public class Vindicator extends AbstractIllager { public boolean rideableUnderWater() { return level.purpurConfig.vindicatorRidableInWater; } @@ -1390,7 +1390,7 @@ index 5025d4571a34fe9e0e58ada6b81b064716b8f672..f6734f2eb44af7b2389de5079831e0e4 public static AttributeSupplier.Builder createAttributes() { 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 1b174af3c47cb49d4ee4b7a6968e24510b3730eb..9a8e08e9a44900ad3899a63992948941abe7c5d8 100644 +index ed56e4f4e35d0425546a37455af3776c65d45f66..6dcc96a2c939ebd0ca5e1934e69d61dfc2b5fa21 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -166,6 +166,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/patches/server/0011-AFK-API.patch b/patches/server/0011-AFK-API.patch index 444385f77..21d196331 100644 --- a/patches/server/0011-AFK-API.patch +++ b/patches/server/0011-AFK-API.patch @@ -68,10 +68,10 @@ index 618595add09eef5381307ba2fe154adfc97b2a0e..100d01814aca6cbb26c721f55851df27 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 ff01b193a1f2372bc79bd864a689a6b36d53b4b8..5267750302a16b43ec1ac5563322b798496234c8 100644 +index 1b50ee29ab8721807745e052e19c67e7db6cfd18..5ad2118d07c190eae3e76a7c8cb6e216d12c915e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -294,6 +294,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -295,6 +295,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser private boolean justTeleported = false; private boolean hasMoved; // Spigot @@ -92,7 +92,7 @@ index ff01b193a1f2372bc79bd864a689a6b36d53b4b8..5267750302a16b43ec1ac5563322b798 public CraftPlayer getCraftPlayer() { return (this.player == null) ? null : (CraftPlayer) this.player.getBukkitEntity(); } -@@ -390,6 +404,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -391,6 +405,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser } if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) (this.server.getPlayerIdleTimeout() * 1000 * 60) && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits. @@ -105,7 +105,7 @@ index ff01b193a1f2372bc79bd864a689a6b36d53b4b8..5267750302a16b43ec1ac5563322b798 this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(new TranslatableComponent("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -675,6 +695,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -676,6 +696,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -114,7 +114,7 @@ index ff01b193a1f2372bc79bd864a689a6b36d53b4b8..5267750302a16b43ec1ac5563322b798 // Skip the first time we do this if (true) { // Spigot - don't skip any move events Location oldTo = to.clone(); -@@ -1438,7 +1460,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1439,7 +1461,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser if (!this.player.isChangingDimension() && d11 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.gameMode.isCreative() && this.player.gameMode.getGameModeForPlayer() != GameType.SPECTATOR) { // Spigot flag1 = true; // Paper - diff on change, this should be moved wrongly @@ -123,7 +123,7 @@ index ff01b193a1f2372bc79bd864a689a6b36d53b4b8..5267750302a16b43ec1ac5563322b798 } this.player.absMoveTo(d0, d1, d2, f, f1); -@@ -1488,6 +1510,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1489,6 +1511,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -305,10 +305,10 @@ index 373bdce6590564bd9de4a571a91bbf05e287ee08..27d70e8e29902fe4275200cf75082980 public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index feec2b3b832fd2c490276e4360fcf6e2b40f01cf..f5eb57fa723941f50b94ed8efb08a47a8da90e4e 100644 +index 1732e753ea7748a66abecafb2136f93383f5ec4e..068238bc911d8458a321a920c3638d368449ac95 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -194,6 +194,7 @@ public class ActivationRange +@@ -195,6 +195,7 @@ public class ActivationRange { player.activatedTick = MinecraftServer.currentTick; diff --git a/patches/server/0018-Player-invulnerabilities.patch b/patches/server/0018-Player-invulnerabilities.patch index 7786f2376..b1070ccc0 100644 --- a/patches/server/0018-Player-invulnerabilities.patch +++ b/patches/server/0018-Player-invulnerabilities.patch @@ -82,10 +82,10 @@ index 100d01814aca6cbb26c721f55851df27dc654880..7d8853191eadf5f5d909dcc0269740d6 public Scoreboard getScoreboard() { return this.getBukkitEntity().getScoreboard().getHandle(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5267750302a16b43ec1ac5563322b798496234c8..9a2920d61111fd9ff99424ea356a6b64b47eead5 100644 +index 5ad2118d07c190eae3e76a7c8cb6e216d12c915e..728d6829d9fdf20176e7c8568b8acbf43fdf4d1e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1962,12 +1962,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1963,12 +1963,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @Override public void handleResourcePackResponse(ServerboundResourcePackPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel()); @@ -108,7 +108,7 @@ index 5267750302a16b43ec1ac5563322b798496234c8..9a2920d61111fd9ff99424ea356a6b64 this.cserver.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(this.getCraftPlayer(), packStatus)); // CraftBukkit // Paper end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 6ec5a8a52ec06be917f2ca682f5920ed5ae1a82c..aca10a81a90c7ef81b4167b868f3893a7f67ea62 100644 +index e07dd4a0d0918d306512487ee7e989c8b39a7222..0ae8af3be8d269a74dc9f64804891613a5d229b1 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -993,6 +993,8 @@ public abstract class PlayerList { diff --git a/patches/server/0021-Alternative-Keepalive-Handling.patch b/patches/server/0021-Alternative-Keepalive-Handling.patch index d61a0e509..e718cbbbf 100644 --- a/patches/server/0021-Alternative-Keepalive-Handling.patch +++ b/patches/server/0021-Alternative-Keepalive-Handling.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Alternative Keepalive Handling diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9a2920d61111fd9ff99424ea356a6b64b47eead5..96f2beae139609535a4ff79809ece95d99d0f01a 100644 +index 728d6829d9fdf20176e7c8568b8acbf43fdf4d1e..727f75ec771f68268904ea93b9da30427b8579fa 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -227,6 +227,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -228,6 +228,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser private long keepAliveTime = Util.getMillis(); private boolean keepAlivePending; private long keepAliveChallenge; @@ -16,7 +16,7 @@ index 9a2920d61111fd9ff99424ea356a6b64b47eead5..96f2beae139609535a4ff79809ece95d // CraftBukkit start - multithreaded fields private final AtomicInteger chatSpamTickCount = new AtomicInteger(); private final java.util.concurrent.atomic.AtomicInteger tabSpamLimiter = new java.util.concurrent.atomic.AtomicInteger(); // Paper - configurable tab spam limits -@@ -372,6 +373,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -373,6 +374,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser long currentTime = Util.getMillis(); long elapsedTime = currentTime - this.keepAliveTime; @@ -38,7 +38,7 @@ index 9a2920d61111fd9ff99424ea356a6b64b47eead5..96f2beae139609535a4ff79809ece95d if (this.keepAlivePending) { if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info -@@ -3133,6 +3149,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3134,6 +3150,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { diff --git a/patches/server/0057-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0057-Implement-configurable-search-radius-for-villagers-t.patch index 008eb5d69..a3383bfbc 100644 --- a/patches/server/0057-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0057-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn 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 7396963b9b405f7c0ff022176ce55b6f27ac3f4c..6e047f7d9a77e8da563c377e65b428479e4ca346 100644 +index bda88f38a2fb24a2fb6c405ab05259defa63543d..ed97980cc89e086099ff5c343a99a12d8f3e469d 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1032,6 +1032,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1037,6 +1037,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Nullable private IronGolem trySpawnGolem(ServerLevel world) { diff --git a/patches/server/0068-Item-entity-immunities.patch b/patches/server/0068-Item-entity-immunities.patch index 9273eec5e..6e274df45 100644 --- a/patches/server/0068-Item-entity-immunities.patch +++ b/patches/server/0068-Item-entity-immunities.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Item entity immunities diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index cd85d1d97b8fbc8979100f2097e77070a840f3b1..07edfbf3bfb21f1c1cd2ce210aa3aafa0286ab1e 100644 +index b127949def00b312266b9207264758bf60f5c136..45e2bb4d4b03f77cbf69d6bac382be39d5e28cae 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -2209,7 +2209,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -2206,7 +2206,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider public class TrackedEntity { diff --git a/patches/server/0078-Allow-color-codes-in-books.patch b/patches/server/0078-Allow-color-codes-in-books.patch index 3b5de70f4..1323b247e 100644 --- a/patches/server/0078-Allow-color-codes-in-books.patch +++ b/patches/server/0078-Allow-color-codes-in-books.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 96f2beae139609535a4ff79809ece95d99d0f01a..cceeff0b32a5b2f9fd625b28cb64c4fc24130b5f 100644 +index 727f75ec771f68268904ea93b9da30427b8579fa..36b2015e9639441744fec5babcf46475d14ed13a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1232,13 +1232,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1233,13 +1233,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser itemstack1.setTag(nbttagcompound.copy()); } @@ -28,7 +28,7 @@ index 96f2beae139609535a4ff79809ece95d99d0f01a..cceeff0b32a5b2f9fd625b28cb64c4fc this.updateBookPages(pages, (s) -> { return Component.Serializer.toJson(new TextComponent(s)); -@@ -1250,10 +1253,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1251,10 +1254,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser private void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit ListTag nbttaglist = new ListTag(); @@ -44,7 +44,7 @@ index 96f2beae139609535a4ff79809ece95d99d0f01a..cceeff0b32a5b2f9fd625b28cb64c4fc Objects.requireNonNull(nbttaglist); stream.forEach(nbttaglist::add); -@@ -1263,10 +1269,10 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1264,10 +1270,10 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser for (int j = list.size(); i < j; ++i) { TextFilter.FilteredText itextfilter_a = (TextFilter.FilteredText) list.get(i); @@ -57,7 +57,7 @@ index 96f2beae139609535a4ff79809ece95d99d0f01a..cceeff0b32a5b2f9fd625b28cb64c4fc if (!s.equals(s1)) { nbttagcompound.putString(String.valueOf(i), (String) unaryoperator.apply(s1)); -@@ -1282,6 +1288,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1283,6 +1289,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } diff --git a/patches/server/0081-Squid-EAR-immunity.patch b/patches/server/0081-Squid-EAR-immunity.patch index bd26ed2fc..d5d0b73e5 100644 --- a/patches/server/0081-Squid-EAR-immunity.patch +++ b/patches/server/0081-Squid-EAR-immunity.patch @@ -25,10 +25,10 @@ index b5d48e3979361e1b6407a1dcf0f5271542273974..71eef6cc623db385db98d3fe98ea6574 public boolean spiderRidable = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index f5eb57fa723941f50b94ed8efb08a47a8da90e4e..d96a5bc1bba1a5ed86bc5f096b7a69c34391fb9e 100644 +index 068238bc911d8458a321a920c3638d368449ac95..8ab99ce9dd678d45928c262b68741f10fd38f9a3 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -14,6 +14,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature; +@@ -15,6 +15,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature; import net.minecraft.world.entity.animal.Animal; import net.minecraft.world.entity.animal.Bee; import net.minecraft.world.entity.animal.Sheep; @@ -36,7 +36,7 @@ index f5eb57fa723941f50b94ed8efb08a47a8da90e4e..d96a5bc1bba1a5ed86bc5f096b7a69c3 import net.minecraft.world.entity.animal.WaterAnimal; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.boss.EnderDragonPart; -@@ -357,6 +358,7 @@ public class ActivationRange +@@ -362,6 +363,7 @@ public class ActivationRange */ public static boolean checkIfActive(Entity entity) { diff --git a/patches/server/0083-Configurable-villager-breeding.patch b/patches/server/0083-Configurable-villager-breeding.patch index ae9ad6b8e..abe5ff0b0 100644 --- a/patches/server/0083-Configurable-villager-breeding.patch +++ b/patches/server/0083-Configurable-villager-breeding.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable villager breeding 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 6e047f7d9a77e8da563c377e65b428479e4ca346..4e26e288a5bccd778a405b95f3a1d61931a398d1 100644 +index ed97980cc89e086099ff5c343a99a12d8f3e469d..854efbee2b67ed805ab10882a1be0a845fbbd825 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -754,7 +754,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -759,7 +759,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public boolean canBreed() { diff --git a/patches/server/0086-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0086-Add-vindicator-johnny-spawn-chance.patch index ea3087bd9..396af5e07 100644 --- a/patches/server/0086-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0086-Add-vindicator-johnny-spawn-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add vindicator johnny spawn chance diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index 780172760fbfe60216ac624598403c22a2fe30df..66ad217d541ce6a2071209abeedd1b688cc5d8eb 100644 +index c92c948989543248b22db0830a3cb1b6f7940d60..9db267a9a52aa1bde4423711bd0ac6b9949de61b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java @@ -7,6 +7,7 @@ import java.util.function.Predicate; @@ -16,8 +16,8 @@ index 780172760fbfe60216ac624598403c22a2fe30df..66ad217d541ce6a2071209abeedd1b68 import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; -@@ -147,6 +148,12 @@ public class Vindicator extends AbstractIllager { - ((GroundPathNavigation)this.getNavigation()).setCanOpenDoors(true); +@@ -146,6 +147,12 @@ public class Vindicator extends AbstractIllager { + ((GroundPathNavigation) this.getNavigation()).setCanOpenDoors(true); this.populateDefaultEquipmentSlots(difficulty); this.populateDefaultEquipmentEnchantments(difficulty); + // Purpur start @@ -26,7 +26,7 @@ index 780172760fbfe60216ac624598403c22a2fe30df..66ad217d541ce6a2071209abeedd1b68 + setCustomName(new TranslatableComponent("Johnny")); + } + // Purpur end - return spawnGroupData; + return groupdataentity1; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0111-Make-entity-breeding-times-configurable.patch b/patches/server/0111-Make-entity-breeding-times-configurable.patch index c5df01733..11a19f836 100644 --- a/patches/server/0111-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0111-Make-entity-breeding-times-configurable.patch @@ -396,10 +396,10 @@ index 1ba32a3ba56974425762026026d1e5ba21540b3b..88e61572f5dd8d05fadab131046f74bd @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 8bc2c6a3ee0eec08900b96eea3d0d545616bc513..9c6c7d3bdf6dad329bca4a64dc6ea1cf8db345c6 100644 +index 3c3be1a40f04def3f2ffb6567fa5be0581b5608d..e7910b0bbb061f524909757dab4c7e59c0dc40c9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -49,6 +49,11 @@ public class SkeletonHorse extends AbstractHorse { +@@ -50,6 +50,11 @@ public class SkeletonHorse extends AbstractHorse { public double generateRandomSpeed() { return generateRandomSpeed(this.level.purpurConfig.skeletonHorseMovementSpeedMin, this.level.purpurConfig.skeletonHorseMovementSpeedMax); } diff --git a/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 3c3432b22..c67cf0d47 100644 --- a/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -145,7 +145,7 @@ index b615dc2a2127f0874775d1707e96edfb4d95b987..72ae6b3282aac806ae11b87024ee940e brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { 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 4e26e288a5bccd778a405b95f3a1d61931a398d1..2c9f0dc3db951befa9152c6fe17a5c5a788df774 100644 +index 854efbee2b67ed805ab10882a1be0a845fbbd825..a78b5416a850d6533b71e3d288224141d5077a77 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -215,7 +215,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -157,7 +157,7 @@ index 4e26e288a5bccd778a405b95f3a1d61931a398d1..2c9f0dc3db951befa9152c6fe17a5c5a } brain.addActivity(Activity.CORE, VillagerGoalPackages.getCorePackage(villagerprofession, 0.5F)); -@@ -969,6 +969,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -974,6 +974,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public boolean hasFarmSeeds() { diff --git a/patches/server/0129-PlayerBookTooLargeEvent.patch b/patches/server/0129-PlayerBookTooLargeEvent.patch index e000f47f2..466c669e3 100644 --- a/patches/server/0129-PlayerBookTooLargeEvent.patch +++ b/patches/server/0129-PlayerBookTooLargeEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index cceeff0b32a5b2f9fd625b28cb64c4fc24130b5f..e95c07f01730613f2df8a093b12e05b8d31a2409 100644 +index 36b2015e9639441744fec5babcf46475d14ed13a..93f8d5b707811b73fb15cedc4bac83d825ba9e15 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1154,10 +1154,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1155,10 +1155,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser int maxBookPageSize = com.destroystokyo.paper.PaperConfig.maxBookPageSize; double multiplier = Math.max(0.3D, Math.min(1D, com.destroystokyo.paper.PaperConfig.maxBookTotalSizeMultiplier)); long byteAllowed = maxBookPageSize; @@ -21,7 +21,7 @@ index cceeff0b32a5b2f9fd625b28cb64c4fc24130b5f..e95c07f01730613f2df8a093b12e05b8 server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1181,6 +1183,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1182,6 +1184,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch index a1d22b334..f86e3715e 100644 --- a/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch @@ -21,7 +21,7 @@ index ca2bf36120ba09ed27ad7b1064431f9feffa3420..2feec97ffe62cfe063085e3767937e8a @Override diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 861dd2603a82b26cb0f003b5defc34446feb6fdf..1c819db60f278ba902471ae69720f6ff30930886 100644 +index aa0b3e5ce098660cea74d3703cdd3106d6b26be4..d2049c5d4cf2dc6469450b6ee83961adafa7736d 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -868,7 +868,7 @@ public abstract class Mob extends LivingEntity { @@ -511,10 +511,10 @@ index 88e61572f5dd8d05fadab131046f74bd8131f42b..610282c7be7355f0800c1265cc8b19dd @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 9c6c7d3bdf6dad329bca4a64dc6ea1cf8db345c6..75b85b5a6ff38f32d0344a76d9f626c2d8f8077b 100644 +index e7910b0bbb061f524909757dab4c7e59c0dc40c9..5683136ec1ebf6671092a635f026decfc6d7733d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -54,6 +54,11 @@ public class SkeletonHorse extends AbstractHorse { +@@ -55,6 +55,11 @@ public class SkeletonHorse extends AbstractHorse { public int getPurpurBreedTime() { return 6000; } @@ -982,10 +982,10 @@ index 8747ebbc637ceb1c61a38baf063a3352aa093a1f..1606f15ee56383533b3e2bfca9cf00b6 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index 66ad217d541ce6a2071209abeedd1b688cc5d8eb..626784961ac0ee2de987ee8e5a996683960ff878 100644 +index 9db267a9a52aa1bde4423711bd0ac6b9949de61b..9ce98a7682d648cf8ba9cb4892b67d764477fbc2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -73,6 +73,11 @@ public class Vindicator extends AbstractIllager { +@@ -74,6 +74,11 @@ public class Vindicator extends AbstractIllager { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.vindicatorMaxHealth); } @@ -1142,7 +1142,7 @@ index f6734f2eb44af7b2389de5079831e0e4f8a1c742..d3a298734e4434d29b66e94fc6c299d3 public static AttributeSupplier.Builder createAttributes() { 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 2c9f0dc3db951befa9152c6fe17a5c5a788df774..f82d4019aba5fd89e0f8d41a4dc6e42abd228510 100644 +index a78b5416a850d6533b71e3d288224141d5077a77..4420cc8f05f98a2f69507386f7f2893602ef3a59 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/0142-Dont-run-with-scissors.patch b/patches/server/0142-Dont-run-with-scissors.patch index e04f4aefd..15e2c4847 100644 --- a/patches/server/0142-Dont-run-with-scissors.patch +++ b/patches/server/0142-Dont-run-with-scissors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e95c07f01730613f2df8a093b12e05b8d31a2409..6ac5f27c24363814961f0494ca8ca42b4da28eff 100644 +index 93f8d5b707811b73fb15cedc4bac83d825ba9e15..6ce4f59b25d8b546bc7c9c1f544b49ba529ee45c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1587,6 +1587,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1588,6 +1588,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.player.resetFallDistance(); } @@ -22,7 +22,7 @@ index e95c07f01730613f2df8a093b12e05b8d31a2409..6ac5f27c24363814961f0494ca8ca42b 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(); -@@ -1620,6 +1627,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1621,6 +1628,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser } // Paper end - optimise out extra getCubes diff --git a/patches/server/0183-Config-for-unverified-username-message.patch b/patches/server/0183-Config-for-unverified-username-message.patch index d6595b467..66a91859b 100644 --- a/patches/server/0183-Config-for-unverified-username-message.patch +++ b/patches/server/0183-Config-for-unverified-username-message.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for unverified username message diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 33a29890435d6065a2cc4f8e8bf8209c01d5d114..b86d5e736d786ac3c74fec3ad1285400f6f4e583 100644 +index 96593919db8b140e55fe1a120c2835b679771e92..c25df7de9adf6cc06d8d49d53c51d843f61565fa 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -310,7 +310,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener +@@ -338,7 +338,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener ServerLoginPacketListenerImpl.this.gameProfile = ServerLoginPacketListenerImpl.this.createFakeProfile(gameprofile); ServerLoginPacketListenerImpl.this.state = ServerLoginPacketListenerImpl.State.READY_TO_ACCEPT; } else { diff --git a/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch index 2e51684e5..c794375a4 100644 --- a/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch @@ -36,10 +36,10 @@ index 61d0fcaf3c96a2b241b35b2b21104b9fbf403160..c5c7fd414953fb432549e46918fe7e32 + // 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 6ac5f27c24363814961f0494ca8ca42b4da28eff..6175444c9cbe1d0e00a22f9a0e877bd110c47b72 100644 +index 6ce4f59b25d8b546bc7c9c1f544b49ba529ee45c..9a57f6ad29798adbd0b1d55deb47745c353fdac4 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1958,6 +1958,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1959,6 +1959,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { diff --git a/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch index fab8f55f8..e8337d3f4 100644 --- a/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep 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 fae4a7c79baac15a06b737b6081956a55b024c8d..e95210c6deee2c6431ef01d23953174465f199e0 100644 +index 9688755b7d5e8125d411404ea23a06f38c6a7a0c..5b058a8c4ecb7a8b8f5600d761b6df234c35f574 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1156,6 +1156,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1161,6 +1161,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { diff --git a/patches/server/0242-Signs-allow-color-codes.patch b/patches/server/0242-Signs-allow-color-codes.patch index 6b89c189c..e0d336aed 100644 --- a/patches/server/0242-Signs-allow-color-codes.patch +++ b/patches/server/0242-Signs-allow-color-codes.patch @@ -17,10 +17,10 @@ index e2e83d8b39ddb154c0e69b63d5b996644926ac43..a9885f92e0a3494b27376a7a01edbd0e this.connection.send(new ClientboundBlockUpdatePacket(this.level, sign.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos())); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 6175444c9cbe1d0e00a22f9a0e877bd110c47b72..1b77d003513bb03616bb584997a2b8a3a04c3761 100644 +index 9a57f6ad29798adbd0b1d55deb47745c353fdac4..05d2e761dba6351c39a5927bbb2480e0c3dc0030 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3156,11 +3156,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3157,11 +3157,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser } // Paper end diff --git a/patches/server/0244-Mobs-always-drop-experience.patch b/patches/server/0244-Mobs-always-drop-experience.patch index 591165ac4..d21690a4c 100644 --- a/patches/server/0244-Mobs-always-drop-experience.patch +++ b/patches/server/0244-Mobs-always-drop-experience.patch @@ -501,10 +501,10 @@ index 610282c7be7355f0800c1265cc8b19dd557d065a..7c52b316c24c8cf55bf4a68337dd7051 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 75b85b5a6ff38f32d0344a76d9f626c2d8f8077b..63269c9788fdc860fdde79f1bf56f4f3b28dc72f 100644 +index 5683136ec1ebf6671092a635f026decfc6d7733d..2b8c7458775363813eb6f996a008284f59e0ea40 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -59,6 +59,11 @@ public class SkeletonHorse extends AbstractHorse { +@@ -60,6 +60,11 @@ public class SkeletonHorse extends AbstractHorse { public boolean isSensitiveToWater() { return this.level.purpurConfig.skeletonHorseTakeDamageFromWater; } @@ -965,10 +965,10 @@ index 1606f15ee56383533b3e2bfca9cf00b63c7c474a..6b450486e50d95a65b3ef8d0521d14e3 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index 626784961ac0ee2de987ee8e5a996683960ff878..fe9acbae2ddf69c97582d283fa3d8a266298df3f 100644 +index 9ce98a7682d648cf8ba9cb4892b67d764477fbc2..9c0af17c7732216e4c2e9f62fe4523dac0aea8c2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -78,6 +78,11 @@ public class Vindicator extends AbstractIllager { +@@ -79,6 +79,11 @@ public class Vindicator extends AbstractIllager { public boolean isSensitiveToWater() { return this.level.purpurConfig.vindicatorTakeDamageFromWater; } @@ -1125,7 +1125,7 @@ index d3a298734e4434d29b66e94fc6c299d34e0ad432..eb194daac43571a5eb6282c1465a695d public static AttributeSupplier.Builder createAttributes() { 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 e95210c6deee2c6431ef01d23953174465f199e0..efb98dd788b5b8ce51c92847c585e5ee9c0465f3 100644 +index 5b058a8c4ecb7a8b8f5600d761b6df234c35f574..be19a48e9127b24856212ab39a11e00ec1941a52 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -184,6 +184,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler