diff --git a/Spigot-API-Patches/Add-EntityTeleportEndGatewayEvent.patch b/Spigot-API-Patches/Add-EntityTeleportEndGatewayEvent.patch
new file mode 100644
index 0000000000..4b05c47835
--- /dev/null
+++ b/Spigot-API-Patches/Add-EntityTeleportEndGatewayEvent.patch
@@ -0,0 +1,42 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Shane Freeder <theboyetronic@gmail.com>
+Date: Sat, 9 Jun 2018 13:08:21 +0100
+Subject: [PATCH] Add EntityTeleportEndGatewayEvent
+
+
+diff --git a/src/main/java/com/destroystokyo/paper/event/entity/EntityTeleportEndGatewayEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/EntityTeleportEndGatewayEvent.java
+new file mode 100644
+index 00000000..80899ecb
+--- /dev/null
++++ b/src/main/java/com/destroystokyo/paper/event/entity/EntityTeleportEndGatewayEvent.java
+@@ -0,0 +0,0 @@
++package com.destroystokyo.paper.event.entity;
++
++import org.bukkit.Location;
++import org.bukkit.block.EndGateway;
++import org.bukkit.entity.Entity;
++import org.bukkit.event.entity.EntityTeleportEvent;
++
++/**
++ * Fired any time an entity attempts to teleport in an end gateway
++ */
++public class EntityTeleportEndGatewayEvent extends EntityTeleportEvent {
++
++    private final EndGateway gateway;
++
++    public EntityTeleportEndGatewayEvent(Entity what, Location from, Location to, EndGateway gateway) {
++        super(what, from, to);
++        this.gateway = gateway;
++    }
++
++    /**
++     * The gateway triggering the teleport
++     *
++     * @return EndGateway used
++     */
++    public EndGateway getGateway() {
++        return gateway;
++    }
++
++}
+--
\ No newline at end of file
diff --git a/Spigot-Server-Patches/Implement-EntityTeleportEndGatewayEvent.patch b/Spigot-Server-Patches/Implement-EntityTeleportEndGatewayEvent.patch
new file mode 100644
index 0000000000..3a10792550
--- /dev/null
+++ b/Spigot-Server-Patches/Implement-EntityTeleportEndGatewayEvent.patch
@@ -0,0 +1,32 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Shane Freeder <theboyetronic@gmail.com>
+Date: Sat, 9 Jun 2018 13:08:39 +0100
+Subject: [PATCH] Implement EntityTeleportEndGatewayEvent
+
+
+diff --git a/src/main/java/net/minecraft/server/TileEntityEndGateway.java b/src/main/java/net/minecraft/server/TileEntityEndGateway.java
+index ecbc48b0c..c84569612 100644
+--- a/src/main/java/net/minecraft/server/TileEntityEndGateway.java
++++ b/src/main/java/net/minecraft/server/TileEntityEndGateway.java
+@@ -0,0 +0,0 @@ public class TileEntityEndGateway extends TileEntityEnderPortal implements ITick
+ 
+                 }
+                 // CraftBukkit end
++                // Paper start - EntityTeleportEndGatewayEvent - replicated from above
++                org.bukkit.craftbukkit.entity.CraftEntity bukkitEntity = entity.getBukkitEntity();
++                org.bukkit.Location location = new Location(world.getWorld(), (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D);
++                location.setPitch(bukkitEntity.getLocation().getPitch());
++                location.setYaw(bukkitEntity.getLocation().getYaw());
++
++                com.destroystokyo.paper.event.entity.EntityTeleportEndGatewayEvent event = new com.destroystokyo.paper.event.entity.EntityTeleportEndGatewayEvent(bukkitEntity, bukkitEntity.getLocation(), location, new org.bukkit.craftbukkit.block.CraftEndGateway(MCUtil.toLocation(world, this.getPosition()).getBlock()));
++                if (event.isCancelled()) {
++                    return;
++                }
+ 
+-                entity.enderTeleportTo((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D);
++                entity.enderTeleportTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ());
++                // Paper end - EntityTeleportEndGatewayEvent
+             }
+ 
+             this.h();
+--
\ No newline at end of file