diff --git a/nms-patches/PortalTravelAgent.patch b/nms-patches/PortalTravelAgent.patch
index eef8a8d6e8..8094e731c9 100644
--- a/nms-patches/PortalTravelAgent.patch
+++ b/nms-patches/PortalTravelAgent.patch
@@ -85,7 +85,7 @@
 +        return true;
 +    }
 +
-+    public BlockPosition findPortal(double x, double y, double z, int short1) {
++    public BlockPosition findPortal(double x, double y, double z, int radius) {
 +        if (this.world.getWorld().getEnvironment() == org.bukkit.World.Environment.THE_END) {
 +            return this.findEndPortal(this.world.worldProvider.h());
 +        }
@@ -100,15 +100,22 @@
          boolean flag1 = true;
          Object object = BlockPosition.ZERO;
          long k = ChunkCoordIntPair.a(i, j);
-@@ -65,7 +129,7 @@
+@@ -65,12 +129,12 @@
              portaltravelagent_chunkcoordinatesportal.c = this.world.getTime();
              flag1 = false;
          } else {
 -            BlockPosition blockposition = new BlockPosition(entity);
 +            BlockPosition blockposition = new BlockPosition(x, y, z); // CraftBukkit
  
-             for (int l = -128; l <= 128; ++l) {
+-            for (int l = -128; l <= 128; ++l) {
++            for (int l = -radius; l <= radius; ++l) {
                  BlockPosition blockposition1;
+ 
+-                for (int i1 = -128; i1 <= 128; ++i1) {
++                for (int i1 = -radius; i1 <= radius; ++i1) {
+                     for (BlockPosition blockposition2 = blockposition.a(l, this.world.Z() - 1 - blockposition.getY(), i1); blockposition2.getY() >= 0; blockposition2 = blockposition1) {
+                         blockposition1 = blockposition2.down();
+                         if (this.world.getType(blockposition2).getBlock() == Blocks.PORTAL) {
 @@ -95,6 +159,29 @@
                  this.c.put(k, new PortalTravelAgent.ChunkCoordinatesPortal((BlockPosition) object, this.world.getTime()));
                  this.d.add(Long.valueOf(k));