From cbce3a66aa2954233cc20145de65687f325d3c12 Mon Sep 17 00:00:00 2001 From: booky10 <53302036+booky10@users.noreply.github.com> Date: Sat, 11 Nov 2023 22:17:36 +0100 Subject: [PATCH] Add aggressive mob API (#9838) --- patches/api/Add-more-Zombie-API.patch | 4 ++ patches/api/Left-handed-API.patch | 4 +- patches/api/Missing-Entity-API.patch | 43 +++++++++++++++++++ patches/api/RangedEntity-API.patch | 4 ++ .../Add-Mob-Experience-reward-API.patch | 2 +- patches/server/Left-handed-API.patch | 3 +- patches/server/Missing-Entity-API.patch | 21 +++++++++ 7 files changed, 77 insertions(+), 4 deletions(-) diff --git a/patches/api/Add-more-Zombie-API.patch b/patches/api/Add-more-Zombie-API.patch index 7f76c6e18f..6037d91a68 100644 --- a/patches/api/Add-more-Zombie-API.patch +++ b/patches/api/Add-more-Zombie-API.patch @@ -40,14 +40,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + * Set if zombie has its arms raised + * + * @param raised True to raise arms ++ * @deprecated use {{@link #setAggressive(boolean)}} + */ ++ @Deprecated + void setArmsRaised(boolean raised); + + /** + * Check if zombie has arms raised + * + * @return True if arms are raised ++ * @deprecated use {@link #isAggressive()} + */ ++ @Deprecated + boolean isArmsRaised(); + + /** diff --git a/patches/api/Left-handed-API.patch b/patches/api/Left-handed-API.patch index b1a1f49a27..68c65997b8 100644 --- a/patches/api/Left-handed-API.patch +++ b/patches/api/Left-handed-API.patch @@ -10,8 +10,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/org/bukkit/entity/Mob.java @@ -0,0 +0,0 @@ public interface Mob extends LivingEntity, Lootable { */ - @Nullable - public Sound getAmbientSound(); + void setAggressive(boolean aggressive); + // Paper end + + // Paper start + /** diff --git a/patches/api/Missing-Entity-API.patch b/patches/api/Missing-Entity-API.patch index 546eb6ddc0..846586e113 100644 --- a/patches/api/Missing-Entity-API.patch +++ b/patches/api/Missing-Entity-API.patch @@ -633,6 +633,49 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + */ + @org.jetbrains.annotations.Nullable + Llama getCaravanTail(); ++ // Paper end + } +diff --git a/src/main/java/org/bukkit/entity/Mob.java b/src/main/java/org/bukkit/entity/Mob.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/entity/Mob.java ++++ b/src/main/java/org/bukkit/entity/Mob.java +@@ -0,0 +0,0 @@ public interface Mob extends LivingEntity, Lootable { + */ + @Nullable + public Sound getAmbientSound(); ++ ++ // Paper start ++ /** ++ * Some mobs will raise their arm(s) when aggressive: ++ *
++ * Note: This doesn't always show the actual aggressive state as ++ * set by {@link #setAggressive(boolean)}. {@link Panda}'s are always ++ * aggressive if their combined {@link Panda.Gene} is {@link Panda.Gene#AGGRESSIVE}. ++ * ++ * @return wether the mob is aggressive or not ++ */ ++ boolean isAggressive(); ++ ++ /** ++ * Some mobs will raise their arm(s) when aggressive, ++ * see {@link #isAggressive()} for full list. ++ * ++ * @param aggressive wether the mob should be aggressive or not ++ * @see #isAggressive() ++ */ ++ void setAggressive(boolean aggressive); + // Paper end } diff --git a/src/main/java/org/bukkit/entity/MushroomCow.java b/src/main/java/org/bukkit/entity/MushroomCow.java diff --git a/patches/api/RangedEntity-API.patch b/patches/api/RangedEntity-API.patch index ba982d8813..bd8be7b42f 100644 --- a/patches/api/RangedEntity-API.patch +++ b/patches/api/RangedEntity-API.patch @@ -32,13 +32,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + * Sets that the Entity is "charging" up an attack, by raising its hands + * + * @param raiseHands Whether the entities hands are raised to charge attack ++ * @deprecated use {@link #isAggressive()} + */ ++ @Deprecated + void setChargingAttack(boolean raiseHands); + + /** + * Alias to {@link LivingEntity#isHandRaised()}, if the entity is charging an attack + * @return If entities hands are raised ++ * @deprecated use {@link #isHandRaised()} + */ ++ @Deprecated + default boolean isChargingAttack() { + return isHandRaised(); + } diff --git a/patches/server/Add-Mob-Experience-reward-API.patch b/patches/server/Add-Mob-Experience-reward-API.patch index ff62a69c52..f64f9ecbd1 100644 --- a/patches/server/Add-Mob-Experience-reward-API.patch +++ b/patches/server/Add-Mob-Experience-reward-API.patch @@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java @@ -0,0 +0,0 @@ public abstract class CraftMob extends CraftLivingEntity implements Mob { - getHandle().setLeftHanded(leftHanded); + this.getHandle().setAggressive(aggressive); } // Paper end + diff --git a/patches/server/Left-handed-API.patch b/patches/server/Left-handed-API.patch index ef472ebd9a..2501465b4b 100644 --- a/patches/server/Left-handed-API.patch +++ b/patches/server/Left-handed-API.patch @@ -23,4 +23,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + getHandle().setLeftHanded(leftHanded); + } // Paper end - } + + // Paper start diff --git a/patches/server/Missing-Entity-API.patch b/patches/server/Missing-Entity-API.patch index e20e5747d4..8f8286291d 100644 --- a/patches/server/Missing-Entity-API.patch +++ b/patches/server/Missing-Entity-API.patch @@ -837,6 +837,27 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + public void setPickupCooldown(int cooldown) { + throw new UnsupportedOperationException("Hopper minecarts don't have cooldowns"); + } ++ // Paper end + } +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java +@@ -0,0 +0,0 @@ public abstract class CraftMob extends CraftLivingEntity implements Mob { + return getHandle().getMaxHeadXRot(); + } + // Paper end ++ ++ // Paper start ++ @Override ++ public boolean isAggressive() { ++ return this.getHandle().isAggressive(); ++ } ++ ++ @Override ++ public void setAggressive(boolean aggressive) { ++ this.getHandle().setAggressive(aggressive); ++ } + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java