--- a/net/minecraft/server/CommandGamemode.java
+++ b/net/minecraft/server/CommandGamemode.java
@@ -55,6 +55,12 @@
 
             if (entityplayer.playerInteractManager.getGameMode() != enumgamemode) {
                 entityplayer.a(enumgamemode);
+                // CraftBukkit start - handle event cancelling the change
+                if (entityplayer.playerInteractManager.getGameMode() != enumgamemode) {
+                    commandcontext.getSource().sendFailureMessage(new ChatComponentText("Failed to set the gamemode of '" + entityplayer.getName() + "'"));
+                    continue;
+                }
+                // CraftBukkit end
                 a((CommandListenerWrapper) commandcontext.getSource(), entityplayer, enumgamemode);
                 ++i;
             }