diff --git a/module/cmd-kick/nb-configuration.xml b/module/cmd-kick/nb-configuration.xml
new file mode 100644
index 00000000..7e465924
--- /dev/null
+++ b/module/cmd-kick/nb-configuration.xml
@@ -0,0 +1,31 @@
+
+
+    
+    
+        
+        project
+        NEW_LINE
+        NEW_LINE
+        NEW_LINE
+        true
+        true
+        true
+        true
+        true
+        true
+        true
+        true
+        true
+        true
+    
+
diff --git a/module/cmd-kick/pom.xml b/module/cmd-kick/pom.xml
new file mode 100644
index 00000000..a43919ef
--- /dev/null
+++ b/module/cmd-kick/pom.xml
@@ -0,0 +1,20 @@
+
+
+    4.0.0
+
+    
+        net.md-5
+        bungeecord-module
+        1.19-R0.1-SNAPSHOT
+        ../pom.xml
+    
+
+    net.md-5
+    bungeecord-module-cmd-kick
+    1.19-R0.1-SNAPSHOT
+    jar
+
+    cmd_kick
+    Provides the gkick command
+
diff --git a/module/cmd-kick/src/main/java/net/md_5/bungee/module/cmd/kick/CommandKick.java b/module/cmd-kick/src/main/java/net/md_5/bungee/module/cmd/kick/CommandKick.java
new file mode 100644
index 00000000..6dab5cc8
--- /dev/null
+++ b/module/cmd-kick/src/main/java/net/md_5/bungee/module/cmd/kick/CommandKick.java
@@ -0,0 +1,72 @@
+package net.md_5.bungee.module.cmd.kick;
+
+import com.google.common.base.Joiner;
+import com.google.common.collect.ImmutableSet;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Set;
+import net.md_5.bungee.api.ChatColor;
+import net.md_5.bungee.api.CommandSender;
+import net.md_5.bungee.api.ProxyServer;
+import net.md_5.bungee.api.chat.TextComponent;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
+import net.md_5.bungee.api.plugin.Command;
+import net.md_5.bungee.api.plugin.TabExecutor;
+
+public class CommandKick extends Command implements TabExecutor
+{
+
+    public CommandKick()
+    {
+        super( "gkick", "bungeecord.command.kick" );
+    }
+
+    @Override
+    public void execute(CommandSender sender, String[] args)
+    {
+        if ( args.length == 0 )
+        {
+            sender.sendMessage( ProxyServer.getInstance().getTranslation( "username_needed" ) );
+        } else
+        {
+            ProxiedPlayer player = ProxyServer.getInstance().getPlayer( args[0] );
+
+            if ( player == null )
+            {
+                sender.sendMessage( TextComponent.fromLegacyText( ProxyServer.getInstance().getTranslation( "user_not_online" ) ) );
+                return;
+            }
+
+            if ( args.length == 1 )
+            {
+                player.disconnect( TextComponent.fromLegacyText( ProxyServer.getInstance().getTranslation( "kick_message" ) ) );
+            } else
+            {
+                String[] reason = new String[ args.length - 1 ];
+                System.arraycopy( args, 1, reason, 0, reason.length );
+                player.disconnect( TextComponent.fromLegacyText( ChatColor.translateAlternateColorCodes( '&', Joiner.on( ' ' ).join( reason ) ) ) );
+            }
+        }
+    }
+
+    @Override
+    public Iterable onTabComplete(CommandSender sender, String[] args)
+    {
+        if ( args.length == 1 )
+        {
+            Set matches = new HashSet<>();
+            String search = args[0].toLowerCase( Locale.ROOT );
+            for ( ProxiedPlayer player : ProxyServer.getInstance().getPlayers() )
+            {
+                if ( player.getName().toLowerCase( Locale.ROOT ).startsWith( search ) )
+                {
+                    matches.add( player.getName() );
+                }
+            }
+            return matches;
+        } else
+        {
+            return ImmutableSet.of();
+        }
+    }
+}
diff --git a/module/cmd-kick/src/main/java/net/md_5/bungee/module/cmd/kick/PluginKick.java b/module/cmd-kick/src/main/java/net/md_5/bungee/module/cmd/kick/PluginKick.java
new file mode 100644
index 00000000..82b2332b
--- /dev/null
+++ b/module/cmd-kick/src/main/java/net/md_5/bungee/module/cmd/kick/PluginKick.java
@@ -0,0 +1,13 @@
+package net.md_5.bungee.module.cmd.kick;
+
+import net.md_5.bungee.api.plugin.Plugin;
+
+public class PluginKick extends Plugin
+{
+
+    @Override
+    public void onEnable()
+    {
+        getProxy().getPluginManager().registerCommand( this, new CommandKick() );
+    }
+}
diff --git a/module/cmd-kick/src/main/resources/plugin.yml b/module/cmd-kick/src/main/resources/plugin.yml
new file mode 100644
index 00000000..142d6901
--- /dev/null
+++ b/module/cmd-kick/src/main/resources/plugin.yml
@@ -0,0 +1,5 @@
+name: ${project.name}
+main: net.md_5.bungee.module.cmd.kick.PluginKick
+version: ${describe}
+description: ${project.description}
+author: ${module.author}
diff --git a/module/pom.xml b/module/pom.xml
index cbc26049..961560dc 100644
--- a/module/pom.xml
+++ b/module/pom.xml
@@ -21,6 +21,7 @@
     
         cmd-alert
         cmd-find
+        cmd-kick
         cmd-list
         cmd-send
         cmd-server
diff --git a/proxy/src/main/java/net/md_5/bungee/conf/YamlConfig.java b/proxy/src/main/java/net/md_5/bungee/conf/YamlConfig.java
index 2691b8b8..150d8739 100644
--- a/proxy/src/main/java/net/md_5/bungee/conf/YamlConfig.java
+++ b/proxy/src/main/java/net/md_5/bungee/conf/YamlConfig.java
@@ -95,7 +95,7 @@ public class YamlConfig implements ConfigurationAdapter
             } ) );
             set( "permissions.admin", Arrays.asList( new String[]
             {
-                "bungeecord.command.alert", "bungeecord.command.end", "bungeecord.command.ip", "bungeecord.command.reload"
+                "bungeecord.command.alert", "bungeecord.command.end", "bungeecord.command.ip", "bungeecord.command.reload", "bungeecord.command.kick"
             } ) );
         }
 
diff --git a/proxy/src/main/resources/messages.properties b/proxy/src/main/resources/messages.properties
index 2b05a2dd..58380d4a 100644
--- a/proxy/src/main/resources/messages.properties
+++ b/proxy/src/main/resources/messages.properties
@@ -39,3 +39,4 @@ command_perms_groups=\u00a76You have the following groups: {0}
 command_perms_permission=\u00a79- {0}
 command_ip=\u00a79IP of {0} is {1}
 illegal_chat_characters=\u00a7cillegal characters in chat ({0})
+kick_message=\u00a7cYou have been kicked off the proxy.