diff --git a/patches/api/Goat-ram-API.patch b/patches/api/Goat-ram-API.patch
new file mode 100644
index 0000000000..d1b1e742c3
--- /dev/null
+++ b/patches/api/Goat-ram-API.patch
@@ -0,0 +1,23 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Seggan <segganew@gmail.com>
+Date: Thu, 5 Aug 2021 13:10:31 -0400
+Subject: [PATCH] Goat ram API
+
+
+diff --git a/src/main/java/org/bukkit/entity/Goat.java b/src/main/java/org/bukkit/entity/Goat.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/bukkit/entity/Goat.java
++++ b/src/main/java/org/bukkit/entity/Goat.java
+@@ -0,0 +0,0 @@ public interface Goat extends Animals {
+      * @param screaming screaming status
+      */
+     void setScreaming(boolean screaming);
++
++    // Paper start - Goat ram API
++    /**
++     * Makes the goat ram at the specified entity
++     * @param entity the entity to ram at
++     */
++    void ram(@org.jetbrains.annotations.NotNull LivingEntity entity);
++    // Paper end
+ }
diff --git a/patches/server/Goat-ram-API.patch b/patches/server/Goat-ram-API.patch
new file mode 100644
index 0000000000..064eb6377e
--- /dev/null
+++ b/patches/server/Goat-ram-API.patch
@@ -0,0 +1,44 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Seggan <segganew@gmail.com>
+Date: Thu, 5 Aug 2021 13:10:27 -0400
+Subject: [PATCH] Goat ram API
+
+
+diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
++++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
+@@ -0,0 +0,0 @@ public class Goat extends Animal {
+         return new Goat.GoatPathNavigation(this, world);
+     }
+ 
++    // Paper start - Goat ram API
++    public void ram(LivingEntity entity) {
++        Brain<Goat> brain = this.getBrain();
++        brain.setMemory(MemoryModuleType.RAM_TARGET, entity.position());
++        brain.eraseMemory(MemoryModuleType.RAM_COOLDOWN_TICKS);
++        brain.eraseMemory(MemoryModuleType.BREED_TARGET);
++        brain.eraseMemory(MemoryModuleType.TEMPTING_PLAYER);
++        brain.setActiveActivityIfPossible(net.minecraft.world.entity.schedule.Activity.RAM);
++    }
++    // Paper end
++
+     private static class GoatPathNavigation extends GroundPathNavigation {
+ 
+         GoatPathNavigation(Goat goat, Level world) {
+diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftGoat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftGoat.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftGoat.java
++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftGoat.java
+@@ -0,0 +0,0 @@ public class CraftGoat extends CraftAnimals implements Goat {
+     public void setScreaming(boolean screaming) {
+         this.getHandle().setScreamingGoat(screaming);
+     }
++
++    // Paper start - Goat ram API
++    @Override
++    public void ram(@org.jetbrains.annotations.NotNull org.bukkit.entity.LivingEntity entity) {
++        this.getHandle().ram(((CraftLivingEntity) entity).getHandle());
++    }
++    // Paper end
+ }