diff --git a/paper-server/patches/sources/net/minecraft/network/Connection.java.patch b/paper-server/patches/sources/net/minecraft/network/Connection.java.patch
index 7d2ca35d16..ef27d141a0 100644
--- a/paper-server/patches/sources/net/minecraft/network/Connection.java.patch
+++ b/paper-server/patches/sources/net/minecraft/network/Connection.java.patch
@@ -29,7 +29,7 @@
      @Nullable
      private volatile PacketListener disconnectListener;
      @Nullable
-@@ -114,6 +119,23 @@
+@@ -114,7 +119,25 @@
      private volatile DisconnectionDetails delayedDisconnect;
      @Nullable
      BandwidthDebugMonitor bandwidthDebugMonitor;
@@ -37,8 +37,9 @@
 +    // Paper start - NetworkClient implementation
 +    public int protocolVersion;
 +    public java.net.InetSocketAddress virtualHost;
++    private static boolean enableExplicitFlush = Boolean.getBoolean("paper.explicit-flush"); // Paper - Disable explicit network manager flushing
 +    // Paper end
-+
+ 
 +    // Paper start - add utility methods
 +    public final net.minecraft.server.level.ServerPlayer getPlayer() {
 +        if (this.packetListener instanceof net.minecraft.server.network.ServerGamePacketListenerImpl impl) {
@@ -50,10 +51,11 @@
 +        return null;
 +    }
 +    // Paper end - add utility methods
- 
++
      public Connection(PacketFlow side) {
          this.receiving = side;
-@@ -123,6 +145,9 @@
+     }
+@@ -123,6 +146,9 @@
          super.channelActive(channelhandlercontext);
          this.channel = channelhandlercontext.channel();
          this.address = this.channel.remoteAddress();
@@ -63,7 +65,7 @@
          if (this.delayedDisconnect != null) {
              this.disconnect(this.delayedDisconnect);
          }
-@@ -176,6 +201,7 @@
+@@ -176,6 +202,7 @@
  
              }
          }
@@ -71,7 +73,7 @@
      }
  
      protected void channelRead0(ChannelHandlerContext channelhandlercontext, Packet<?> packet) {
-@@ -205,7 +231,7 @@
+@@ -205,7 +232,7 @@
      }
  
      private static <T extends PacketListener> void genericsFtw(Packet<T> packet, PacketListener listener) {
@@ -80,7 +82,16 @@
      }
  
      private void validateListener(ProtocolInfo<?> state, PacketListener listener) {
-@@ -464,12 +490,15 @@
+@@ -431,7 +458,7 @@
+         }
+ 
+         if (this.channel != null) {
+-            this.channel.flush();
++            if (enableExplicitFlush) this.channel.eventLoop().execute(() -> this.channel.flush()); // Paper - Disable explicit network manager flushing; we don't need to explicit flush here, but allow opt in incase issues are found to a better version
+         }
+ 
+         if (this.tickCount++ % 20 == 0) {
+@@ -464,12 +491,15 @@
      }
  
      public void disconnect(DisconnectionDetails disconnectionInfo) {
@@ -97,7 +108,7 @@
              this.disconnectionDetails = disconnectionInfo;
          }
  
-@@ -537,7 +566,7 @@
+@@ -537,7 +567,7 @@
      }
  
      public void configurePacketHandler(ChannelPipeline pipeline) {
@@ -106,7 +117,7 @@
              public void write(ChannelHandlerContext channelhandlercontext, Object object, ChannelPromise channelpromise) throws Exception {
                  super.write(channelhandlercontext, object, channelpromise);
              }
-@@ -661,6 +690,7 @@
+@@ -661,6 +691,7 @@
  
                      packetlistener1.onDisconnect(disconnectiondetails);
                  }