papermc/patches/api/0291-Add-Mob-lookAt-API.patch
2023-02-19 08:57:10 -06:00

99 lines
3 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: BillyGalbreath <blake.galbreath@gmail.com>
Date: Fri, 14 May 2021 13:42:06 -0500
Subject: [PATCH] Add Mob#lookAt API
diff --git a/src/main/java/org/bukkit/entity/Mob.java b/src/main/java/org/bukkit/entity/Mob.java
index 7eee2e561346ac1d672f9652edb78e76c910fc9d..11b6d1aba7d1f6ae1f3c822193486f5a1478e105 100644
--- a/src/main/java/org/bukkit/entity/Mob.java
+++ b/src/main/java/org/bukkit/entity/Mob.java
@@ -27,6 +27,88 @@ public interface Mob extends LivingEntity, Lootable {
* @return True if mob is exposed to daylight
*/
boolean isInDaylight();
+
+ /**
+ * Instruct this Mob to look at a specific Location
+ * <p>
+ * Useful when implementing custom mob goals
+ *
+ * @param location location to look at
+ */
+ void lookAt(@NotNull org.bukkit.Location location);
+
+ /**
+ * Instruct this Mob to look at a specific Location
+ * <p>
+ * Useful when implementing custom mob goals
+ *
+ * @param location location to look at
+ * @param headRotationSpeed head rotation speed
+ * @param maxHeadPitch max head pitch rotation
+ */
+ void lookAt(@NotNull org.bukkit.Location location, float headRotationSpeed, float maxHeadPitch);
+
+ /**
+ * Instruct this Mob to look at a specific Entity
+ * <p>
+ * If a LivingEntity, look at eye location
+ * <p>
+ * Useful when implementing custom mob goals
+ *
+ * @param entity entity to look at
+ */
+ void lookAt(@NotNull Entity entity);
+
+ /**
+ * Instruct this Mob to look at a specific Entity
+ * <p>
+ * If a LivingEntity, look at eye location
+ * <p>
+ * Useful when implementing custom mob goals
+ *
+ * @param entity entity to look at
+ * @param headRotationSpeed head rotation speed
+ * @param maxHeadPitch max head pitch rotation
+ */
+ void lookAt(@NotNull Entity entity, float headRotationSpeed, float maxHeadPitch);
+
+ /**
+ * Instruct this Mob to look at a specific position
+ * <p>
+ * Useful when implementing custom mob goals
+ *
+ * @param x x coordinate
+ * @param y y coordinate
+ * @param z z coordinate
+ */
+ void lookAt(double x, double y, double z);
+
+ /**
+ * Instruct this Mob to look at a specific position
+ * <p>
+ * Useful when implementing custom mob goals
+ *
+ * @param x x coordinate
+ * @param y y coordinate
+ * @param z z coordinate
+ * @param headRotationSpeed head rotation speed
+ * @param maxHeadPitch max head pitch rotation
+ */
+ void lookAt(double x, double y, double z, float headRotationSpeed, float maxHeadPitch);
+
+ /**
+ * Gets the head rotation speed
+ *
+ * @return the head rotation speed
+ */
+ int getHeadRotationSpeed();
+
+ /**
+ * Gets the max head pitch rotation
+ *
+ * @return the max head pitch rotation
+ */
+ int getMaxHeadPitch();
// Paper end
/**
* Instructs this Mob to set the specified LivingEntity as its target.