diff --git a/patches/api/0282-More-Enchantment-API.patch b/patches/api/0282-More-Enchantment-API.patch index ef1d03e34..bef111a62 100644 --- a/patches/api/0282-More-Enchantment-API.patch +++ b/patches/api/0282-More-Enchantment-API.patch @@ -36,7 +36,7 @@ index 0000000000000000000000000000000000000000..e6a40c1fcea761bd66743b50e3da3d14 + } +} diff --git a/src/main/java/org/bukkit/enchantments/Enchantment.java b/src/main/java/org/bukkit/enchantments/Enchantment.java -index 3375ce0f9ac50cd3f145291ceb587d4e6f72569c..d38a23dcab5312e610d7ea328b167a6105bbc0a7 100644 +index 3375ce0f9ac50cd3f145291ceb587d4e6f72569c..a72202b653549b4074feb89748849fcb495ba0d4 100644 --- a/src/main/java/org/bukkit/enchantments/Enchantment.java +++ b/src/main/java/org/bukkit/enchantments/Enchantment.java @@ -291,11 +291,7 @@ public abstract class Enchantment implements Keyed, Translatable, net.kyori.adve @@ -51,7 +51,7 @@ index 3375ce0f9ac50cd3f145291ceb587d4e6f72569c..d38a23dcab5312e610d7ea328b167a61 public abstract boolean isCursed(); /** -@@ -329,6 +325,70 @@ public abstract class Enchantment implements Keyed, Translatable, net.kyori.adve +@@ -329,6 +325,84 @@ public abstract class Enchantment implements Keyed, Translatable, net.kyori.adve * @return the name of the enchantment with {@code level} applied */ public abstract net.kyori.adventure.text.@NotNull Component displayName(int level); @@ -109,10 +109,24 @@ index 3375ce0f9ac50cd3f145291ceb587d4e6f72569c..d38a23dcab5312e610d7ea328b167a61 + * @param level the level of enchantment + * @param entityCategory the category of entity + * @return the damage increase ++ * @deprecated Use {@link #getDamageIncrease(int, org.bukkit.entity.EntityType)} instead. ++ * Enchantment damage increase is no longer handled via {@link org.bukkit.entity.EntityCategory}s, but ++ * is instead controlled by tags, e.g. {@link org.bukkit.Tag#ENTITY_TYPES_SENSITIVE_TO_BANE_OF_ARTHROPODS}. ++ * As such, a category cannot properly represent all entities defined by the tags. + */ ++ @Deprecated(forRemoval = true, since = "1.20.5") + public abstract float getDamageIncrease(int level, @NotNull org.bukkit.entity.EntityCategory entityCategory); + + /** ++ * Gets the damage increase as a result of the level and entity type specified ++ * ++ * @param level the level of enchantment ++ * @param entityType the type of entity. ++ * @return the damage increase ++ */ ++ public abstract float getDamageIncrease(int level, @NotNull org.bukkit.entity.EntityType entityType); ++ ++ /** + * Gets the equipment slots where this enchantment is considered "active". + * + * @return the equipment slots diff --git a/patches/server/0553-More-Enchantment-API.patch b/patches/server/0553-More-Enchantment-API.patch index 02483779b..fdc915396 100644 --- a/patches/server/0553-More-Enchantment-API.patch +++ b/patches/server/0553-More-Enchantment-API.patch @@ -9,7 +9,7 @@ public net.minecraft.world.item.enchantment.Enchantment slots Co-authored-by: Luis diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -index bb8a3e670924ebcce48669c5dce57e2df03fad77..5b6490786a7670a836fbf0a99545f77ae04771a6 100644 +index bb8a3e670924ebcce48669c5dce57e2df03fad77..58a24e149ae9500c9db90693ac9eb6446794535c 100644 --- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java @@ -71,7 +71,7 @@ public class CraftEnchantment extends Enchantment implements Handleable guessEntityTypeFromEnchantmentCategory( ++ final org.bukkit.entity.EntityCategory entityCategory ++ ) { ++ final net.minecraft.tags.TagKey> tag = switch (entityCategory) { ++ case ARTHROPOD -> net.minecraft.tags.EntityTypeTags.SENSITIVE_TO_BANE_OF_ARTHROPODS; ++ case UNDEAD -> net.minecraft.tags.EntityTypeTags.SENSITIVE_TO_SMITE; ++ case WATER -> net.minecraft.tags.EntityTypeTags.SENSITIVE_TO_IMPALING; ++ default -> null; ++ }; ++ if (tag == null) return null; ++ ++ return net.minecraft.core.registries.BuiltInRegistries.ENTITY_TYPE.getTag(tag) ++ .map(e -> e.size() > 0 ? e.get(0).value() : null) ++ .orElse(null); + } + + @Override @@ -77,33 +99,6 @@ index bb8a3e670924ebcce48669c5dce57e2df03fad77..5b6490786a7670a836fbf0a99545f77a // Paper end @Override -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 2701e53086f4be07c341cd1e4fcd7a351e77c486..ab4008a94ba622cbe423b0ce1d45333334850494 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1010,4 +1010,22 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - throw new UnsupportedOperationException("Cannot set the hurt direction on a non player"); - } - // Paper end - hurt direction API -+ -+ // Paper start - more enchant API -+ public static MobType fromBukkitEntityCategory(EntityCategory entityCategory) { -+ switch (entityCategory) { -+ case NONE: -+ return MobType.UNDEFINED; -+ case UNDEAD: -+ return MobType.UNDEAD; -+ case ARTHROPOD: -+ return MobType.ARTHROPOD; -+ case ILLAGER: -+ return MobType.ILLAGER; -+ case WATER: -+ return MobType.WATER; -+ } -+ throw new IllegalArgumentException(entityCategory + " is an unrecognized entity category"); -+ } -+ // Paper end - more enchant API - } diff --git a/src/test/java/io/papermc/paper/enchantments/EnchantmentRarityTest.java b/src/test/java/io/papermc/paper/enchantments/EnchantmentRarityTest.java new file mode 100644 index 0000000000000000000000000000000000000000..03a53ceb0dc3aaff7b5d10ec57f74d71be90ec3a diff --git a/patches/server/0573-Line-Of-Sight-Changes.patch b/patches/server/0573-Line-Of-Sight-Changes.patch index b5ad641e5..681130752 100644 --- a/patches/server/0573-Line-Of-Sight-Changes.patch +++ b/patches/server/0573-Line-Of-Sight-Changes.patch @@ -45,7 +45,7 @@ index 1e720b96f0367652db6924b8654deaa9467e3d2c..4932ba59a6b70b405f7dd05358f6bb00 // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index ab4008a94ba622cbe423b0ce1d45333334850494..6e3bddcbf13eae3707f600fed35ca23873f515ea 100644 +index 2701e53086f4be07c341cd1e4fcd7a351e77c486..1cfc3d18fb785410f5acfcf3c338776858efe25a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -627,6 +627,23 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0578-Missing-Entity-API.patch b/patches/server/0578-Missing-Entity-API.patch index 735acae9f..5ef76ed85 100644 --- a/patches/server/0578-Missing-Entity-API.patch +++ b/patches/server/0578-Missing-Entity-API.patch @@ -796,7 +796,7 @@ index 2cec61a1bb050c1ef81c5fc3d0afafe9ff29d459..97fa4e1e70203194bd939618b2fad926 + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 6e3bddcbf13eae3707f600fed35ca23873f515ea..f95e991f1cc7187fc1795af5a4d85a91dd6b66f8 100644 +index 1cfc3d18fb785410f5acfcf3c338776858efe25a..ea929ca51bd35447da4bdb42379dfc12ea2aae67 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -906,14 +906,29 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0588-Stinger-API.patch b/patches/server/0588-Stinger-API.patch index 0f26339ad..3abe3d922 100644 --- a/patches/server/0588-Stinger-API.patch +++ b/patches/server/0588-Stinger-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stinger API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index f95e991f1cc7187fc1795af5a4d85a91dd6b66f8..0c718dc32beb7c4afec64c19edcef41bdf1b8e39 100644 +index ea929ca51bd35447da4bdb42379dfc12ea2aae67..f0e9d68381fb75900bcd6976a83fd94028fd2712 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -353,6 +353,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0620-Improve-and-expand-AsyncCatcher.patch b/patches/server/0620-Improve-and-expand-AsyncCatcher.patch index f79b8d5c9..b0e0c6260 100644 --- a/patches/server/0620-Improve-and-expand-AsyncCatcher.patch +++ b/patches/server/0620-Improve-and-expand-AsyncCatcher.patch @@ -202,7 +202,7 @@ index 321da9572b896b54ad961e1c7179929b145ae0ac..cbad6add9186a151e1994bb3ed0b11d6 ClientboundSoundEntityPacket packet = new ClientboundSoundEntityPacket(Holder.direct(SoundEvent.createVariableRangeEvent(new ResourceLocation(sound))), net.minecraft.sounds.SoundSource.valueOf(category.name()), craftEntity.getHandle(), volume, pitch, seed); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 0c718dc32beb7c4afec64c19edcef41bdf1b8e39..6344ab27c113dd42c729e0b05b957670c4930722 100644 +index f0e9d68381fb75900bcd6976a83fd94028fd2712..a4c6fd2f6066ecc4a36a423cb2980ec60d9c7ec1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -516,6 +516,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0765-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch b/patches/server/0765-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch index f36e95fca..c6ff862ed 100644 --- a/patches/server/0765-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch +++ b/patches/server/0765-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add a consumer parameter to ProjectileSource#launchProjectile diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 6344ab27c113dd42c729e0b05b957670c4930722..bf58fb8acd09723cbc55f6ac41c24cccda97bac8 100644 +index a4c6fd2f6066ecc4a36a423cb2980ec60d9c7ec1..f3ec9ae17355abf430ebb781b9acd9f529d88a11 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -561,8 +561,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0780-Add-entity-knockback-API.patch b/patches/server/0780-Add-entity-knockback-API.patch index 24a5eb02f..c5c8da6eb 100644 --- a/patches/server/0780-Add-entity-knockback-API.patch +++ b/patches/server/0780-Add-entity-knockback-API.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Add entity knockback API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index bf58fb8acd09723cbc55f6ac41c24cccda97bac8..a188aefec543352b4e0d9ce03103ac842db61fc8 100644 +index f3ec9ae17355abf430ebb781b9acd9f529d88a11..3e8740f39a0ecd853d7aa9dcee6f8a3d09b14460 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1106,4 +1106,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - throw new IllegalArgumentException(entityCategory + " is an unrecognized entity category"); +@@ -1088,4 +1088,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { + throw new UnsupportedOperationException("Cannot set the hurt direction on a non player"); } - // Paper end - more enchant API + // Paper end - hurt direction API + + // Paper start - knockback API + @Override diff --git a/patches/server/0797-ItemStack-damage-API.patch b/patches/server/0797-ItemStack-damage-API.patch index 10e5c5147..807a916f4 100644 --- a/patches/server/0797-ItemStack-damage-API.patch +++ b/patches/server/0797-ItemStack-damage-API.patch @@ -11,10 +11,10 @@ the logic associated with damaging them public net.minecraft.world.entity.LivingEntity entityEventForEquipmentBreak(Lnet/minecraft/world/entity/EquipmentSlot;)B diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index a188aefec543352b4e0d9ce03103ac842db61fc8..e03cd68d6636dbd35249c0535072f22e3bd0d1ab 100644 +index 3e8740f39a0ecd853d7aa9dcee6f8a3d09b14460..5fe3e5b9f52dc1d2b9b4adb7ccaaa2bbf591af9c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1114,4 +1114,48 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1096,4 +1096,48 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { this.getHandle().knockback(strength, directionX, directionZ); }; // Paper end - knockback API diff --git a/patches/server/0798-Friction-API.patch b/patches/server/0798-Friction-API.patch index 4a83941b0..d4359b9c8 100644 --- a/patches/server/0798-Friction-API.patch +++ b/patches/server/0798-Friction-API.patch @@ -133,10 +133,10 @@ index 1a291dd8a287db30e71dcb315599fc4b038764c4..30d62ee4d5cd2ddacb8783b5bbbf475d public int getHealth() { return this.getHandle().health; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index e03cd68d6636dbd35249c0535072f22e3bd0d1ab..e9172aa5e3ff3ae0a507dcc059468416b9c475f6 100644 +index 5fe3e5b9f52dc1d2b9b4adb7ccaaa2bbf591af9c..e87a52f5dbb8cd984fd2203d912ac3f1ff9d68aa 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1158,4 +1158,18 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1140,4 +1140,18 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { nmsStack.hurtAndBreak(amount, this.getHandle(), slot); } // Paper end - ItemStack damage API diff --git a/patches/server/0824-Add-Entity-Body-Yaw-API.patch b/patches/server/0824-Add-Entity-Body-Yaw-API.patch index ff77ac634..47d59d578 100644 --- a/patches/server/0824-Add-Entity-Body-Yaw-API.patch +++ b/patches/server/0824-Add-Entity-Body-Yaw-API.patch @@ -43,10 +43,10 @@ index 365281dfc0308c5db0c72b56208d9b87be0e955e..991b94ff1186b1071a94b2662873dc07 @Override public boolean isInvisible() { // Paper - moved up from LivingEntity diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index e9172aa5e3ff3ae0a507dcc059468416b9c475f6..9440a10f060fce2f7dd78b9d99605022c7b7f000 100644 +index e87a52f5dbb8cd984fd2203d912ac3f1ff9d68aa..2e614eb8cdc249670c3ca2be42704e4de69f3175 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1172,4 +1172,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1154,4 +1154,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { this.getHandle().frictionState = state; } // Paper end - friction API diff --git a/patches/server/0856-Add-method-to-remove-all-active-potion-effects.patch b/patches/server/0856-Add-method-to-remove-all-active-potion-effects.patch index 519d993cb..a3bf117ed 100644 --- a/patches/server/0856-Add-method-to-remove-all-active-potion-effects.patch +++ b/patches/server/0856-Add-method-to-remove-all-active-potion-effects.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add method to remove all active potion effects diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 9440a10f060fce2f7dd78b9d99605022c7b7f000..22dabf38945c5ee2b5b66cf81e62a83fbca20b9e 100644 +index 2e614eb8cdc249670c3ca2be42704e4de69f3175..aa351df679f300018367244c7ccb3e5a59e9276f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -555,6 +555,13 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {