diff --git a/paper-api/src/main/java/org/bukkit/entity/Creaking.java b/paper-api/src/main/java/org/bukkit/entity/Creaking.java
index 2e85cc40e0..4d02eb150c 100644
--- a/paper-api/src/main/java/org/bukkit/entity/Creaking.java
+++ b/paper-api/src/main/java/org/bukkit/entity/Creaking.java
@@ -1,8 +1,43 @@
 package org.bukkit.entity;
 
+import org.bukkit.Location;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
+
 /**
  * Represents a Creaking.
  */
+@NullMarked
 public interface Creaking extends Monster {
 
+    /**
+     * Gets the home location for this creaking (where its {@link org.bukkit.block.CreakingHeart} could be found).
+     *
+     * @return the location of the home if available, null otherwise
+     */
+    @Nullable
+    Location getHome();
+
+    /**
+     * Activates this creaking to target and follow a player.
+     *
+     * @param player the target
+     */
+    void activate(final Player player);
+
+    /**
+     * Deactivates the creaking, clearing its current attack target and
+     * marking it as inactive.
+     */
+    void deactivate();
+
+    /**
+     * Returns if this creaking is currently active and hunting.
+     *
+     * @see #activate(Player)
+     *
+     * @return true if active
+     */
+    boolean isActive();
+
 }
diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftCreaking.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftCreaking.java
index 267f3c8505..d9b7ad7f3b 100644
--- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftCreaking.java
+++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftCreaking.java
@@ -1,11 +1,19 @@
 package org.bukkit.craftbukkit.entity;
 
+import com.google.common.base.Preconditions;
+import net.minecraft.Optionull;
 import net.minecraft.world.entity.monster.creaking.Creaking;
+import org.bukkit.Location;
 import org.bukkit.craftbukkit.CraftServer;
+import org.bukkit.craftbukkit.util.CraftLocation;
+import org.bukkit.entity.Player;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
 
+@NullMarked
 public class CraftCreaking extends CraftMonster implements org.bukkit.entity.Creaking {
 
-    public CraftCreaking(CraftServer server, Creaking entity) {
+    public CraftCreaking(final CraftServer server, final Creaking entity) {
         super(server, entity);
     }
 
@@ -14,6 +22,28 @@ public class CraftCreaking extends CraftMonster implements org.bukkit.entity.Cre
         return (Creaking) this.entity;
     }
 
+    @Nullable
+    @Override
+    public Location getHome() {
+        return Optionull.map(this.getHandle().getHomePos(), pos -> CraftLocation.toBukkit(pos, this.getHandle().level()));
+    }
+
+    @Override
+    public void activate(final Player player) {
+        Preconditions.checkArgument(player != null, "player cannot be null");
+        this.getHandle().activate(((CraftPlayer) player).getHandle());
+    }
+
+    @Override
+    public void deactivate() {
+        this.getHandle().deactivate();
+    }
+
+    @Override
+    public boolean isActive() {
+        return this.getHandle().isActive();
+    }
+
     @Override
     public String toString() {
         return "CraftCreaking";