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 d726453c041a980576312b6bee96a07837f37974..7d4ce660adb21e579e564796568945ee20f0ca59 100644
--- a/src/main/java/org/bukkit/entity/Mob.java
+++ b/src/main/java/org/bukkit/entity/Mob.java
@@ -23,6 +23,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
 
     /**
