diff --git a/CLI/.classpath b/CLI/.classpath
new file mode 100644
index 0000000..d4e0e69
--- /dev/null
+++ b/CLI/.classpath
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CLI/.gitignore b/CLI/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/CLI/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/CLI/.project b/CLI/.project
new file mode 100644
index 0000000..f8a4694
--- /dev/null
+++ b/CLI/.project
@@ -0,0 +1,23 @@
+
+
+ pandalib-cli
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+
+
diff --git a/CLI/.settings/org.eclipse.core.resources.prefs b/CLI/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..e9441bb
--- /dev/null
+++ b/CLI/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding/=UTF-8
diff --git a/CLI/.settings/org.eclipse.jdt.core.prefs b/CLI/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..1b835cb
--- /dev/null
+++ b/CLI/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=16
+org.eclipse.jdt.core.compiler.compliance=16
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=16
diff --git a/CLI/.settings/org.eclipse.m2e.core.prefs b/CLI/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/CLI/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/CLI/pom.xml b/CLI/pom.xml
new file mode 100644
index 0000000..8504951
--- /dev/null
+++ b/CLI/pom.xml
@@ -0,0 +1,51 @@
+
+ 4.0.0
+
+
+ fr.pandacube.lib
+ pandalib-parent
+ 1.0-SNAPSHOT
+
+
+ pandalib-cli
+
+ PandaLib-CLI
+
+
+
+ minecraft-libraries
+ Minecraft Libraries
+ https://libraries.minecraft.net
+
+
+
+
+
+ fr.pandacube.lib
+ pandalib-core
+ ${project.version}
+ compile
+
+
+
+ fr.pandacube.bungeecord
+ bungeecord-log
+ ${bungeecord.version}
+ compile
+
+
+ fr.pandacube.bungeecord
+ bungeecord-config
+ ${bungeecord.version}
+ compile
+
+
+
+ com.mojang
+ brigadier
+ 1.0.17
+
+
+
+
+
diff --git a/CLI/src/main/java/fr/pandacube/lib/cli/BrigadierCommand.java b/CLI/src/main/java/fr/pandacube/lib/cli/BrigadierCommand.java
new file mode 100644
index 0000000..72a24be
--- /dev/null
+++ b/CLI/src/main/java/fr/pandacube/lib/cli/BrigadierCommand.java
@@ -0,0 +1,144 @@
+package fr.pandacube.lib.cli;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+import com.mojang.brigadier.arguments.ArgumentType;
+import com.mojang.brigadier.builder.LiteralArgumentBuilder;
+import com.mojang.brigadier.builder.RequiredArgumentBuilder;
+import com.mojang.brigadier.context.CommandContext;
+import com.mojang.brigadier.context.ParsedCommandNode;
+import com.mojang.brigadier.suggestion.Suggestion;
+import com.mojang.brigadier.suggestion.SuggestionProvider;
+import com.mojang.brigadier.suggestion.Suggestions;
+import com.mojang.brigadier.suggestion.SuggestionsBuilder;
+import com.mojang.brigadier.tree.LiteralCommandNode;
+
+import fr.pandacube.lib.core.chat.ChatStatic;
+import fr.pandacube.lib.core.commands.SuggestionsSupplier;
+import fr.pandacube.lib.core.util.Log;
+import fr.pandacube.lib.core.util.ReflexionUtil;
+
+public abstract class BrigadierCommand extends ChatStatic {
+
+ private LiteralCommandNode