diff --git a/.classpath b/.classpath
index 4c6378c..c9ea35b 100644
--- a/.classpath
+++ b/.classpath
@@ -4,7 +4,7 @@
-
+
diff --git a/Format des fichiers de configuration.md b/Format des fichiers de configuration.md
index c71a4d5..cacc436 100644
--- a/Format des fichiers de configuration.md
+++ b/Format des fichiers de configuration.md
@@ -28,15 +28,23 @@ Les lignes vides seront ignorés (ou ne contenant que des caractères non imprim
___________________
## automessages
-Chaque messages automatiques se trouvent dans un fichier se trouvant dans le sous-dossier. L'ordre est défini selon la numérotation des fichiers. Les fichiers sont nommés selon ce format :
+Chaque messages automatiques se trouve dans un fichier se trouvant dans le sous-dossier. L'ordre est défini selon la numérotation des fichiers. Les fichiers sont nommés selon ce format :
X.txt
Où `X` est un nombre entier positif ou nul. Le nombre ne peut pas avoir de 0 initial (par exemple, `0014` n'est pas valide, préférez plutôt `14`)
-La première ligne du fichier représente les noeux de permissions correspondant au message automatique, sachant qu'un joueur doit avoir un moins une de ces permissions pour voir le message. Les permissions sont séparés par des `;`.
+La première ligne du fichier représente les noeux de permissions correspondant au message automatique, sachant qu'un joueur doit avoir un moins une de ces permissions pour voir le message. Les permissions sont séparés par des `;`. Si le message automatique s'applique à tous les joueurs, on peut utiliser `*`.
Le reste du fichier correspond au message automatique, avec les codes couleurs de la forme `&X`.
+___________________
+## commandalias
+Chaque alias se trouve dans un fichier se trouvant dans le sous-dossier.
+le nom du fichier importe peu.
+La structure d'un fichier se présente comme ce qui suit.
+En première ligne, on a la commande d'origine (celle tapée par le joueur) avec le `/` devant.
+La deuxième ligne est la commande de remplacement, toujours avec le `/` devant.
+La troisième ligne correspond aux permissions associés à cet alias, séparé par des `;`. Le joueur doit avoir au moins une de ces permissions pour que l'alias s'applique. Si l'alias s'applique à tous les joueurs, on peut utiliser `*`.
diff --git a/lib/bukkit-1.7.2-R0.3-javadoc.jar b/lib/bukkit-1.7.2-R0.3-javadoc.jar
new file mode 100644
index 0000000..d5a2d8f
Binary files /dev/null and b/lib/bukkit-1.7.2-R0.3-javadoc.jar differ
diff --git a/src/net/mc_pandacraft/java/plugin/pandacraftutils/config/CommandAliasConfig.java b/src/net/mc_pandacraft/java/plugin/pandacraftutils/config/CommandAliasConfig.java
new file mode 100644
index 0000000..7fdf912
--- /dev/null
+++ b/src/net/mc_pandacraft/java/plugin/pandacraftutils/config/CommandAliasConfig.java
@@ -0,0 +1,56 @@
+package net.mc_pandacraft.java.plugin.pandacraftutils.config;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import net.mc_pandacraft.java.plugin.pandacraftutils.config.elements.CommandAliasConfigEntry;
+
+public class CommandAliasConfig extends AbstractConfig {
+
+ private List config = new ArrayList();
+
+
+ public CommandAliasConfig() throws IOException {
+ super("commandalias", FileType.DIR);
+
+ List files = getFileList();
+
+ for (File f : files) {
+
+ String name = f.getName();
+
+ try {
+
+ List lines = getFileLines(false, false, false, f);
+
+ if (lines.size() != 3) throw new Exception("Le fichier "+name+" n'est pas du bon format. Doit avoir 3 lignes");
+ if (!lines.get(0).startsWith("/") || !lines.get(1).startsWith("/"))
+ throw new Exception("Le fichier "+name+" n'est pas du bon format. La première et la deuxième ligne doit commencer par un slash.");
+
+
+
+ config.add(new CommandAliasConfigEntry(lines.get(0), lines.get(1), lines.get(2)));
+
+
+ } catch (Exception e) {
+ warning("fichier '"+name+"' invalide");
+ e.printStackTrace();
+ }
+
+
+ }
+
+
+
+
+ }
+
+ public List getCommandAlias() {
+ return Collections.unmodifiableList(config);
+ }
+
+
+}
diff --git a/src/net/mc_pandacraft/java/plugin/pandacraftutils/config/ConfigManager.java b/src/net/mc_pandacraft/java/plugin/pandacraftutils/config/ConfigManager.java
index 0780e8e..4c5ee85 100644
--- a/src/net/mc_pandacraft/java/plugin/pandacraftutils/config/ConfigManager.java
+++ b/src/net/mc_pandacraft/java/plugin/pandacraftutils/config/ConfigManager.java
@@ -2,6 +2,7 @@ package net.mc_pandacraft.java.plugin.pandacraftutils.config;
import java.io.File;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -40,6 +41,34 @@ public class ConfigManager {
+ /**
+ * Découpe une chaine de caractère contenant une série de noeuds
+ * de permissions séparés par des point-virgules et la retourne sous forme d'une liste.
+ * @param perms la chaine de permissions à traiter
+ * @return null
si le paramètre est nulle ou si perms.equals("*")
, ou alors la chaine splittée.
+ */
+ public static List splitPermissionsString(String perms) {
+ if (perms == null || perms.equals("*"))
+ return null;
+ else
+ return Arrays.asList(perms.split(";"));
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -53,6 +82,7 @@ public class ConfigManager {
public final WorldBorderConfig worldBorderConfig;
public final ChatBadWordsConfig chatBadWordsConfig;
public final AutoMessagesConfig autoMessagesConfig;
+ public final CommandAliasConfig commandAliasConfig;
@@ -69,20 +99,16 @@ public class ConfigManager {
worldBorderConfig = new WorldBorderConfig();
chatBadWordsConfig = new ChatBadWordsConfig();
autoMessagesConfig = new AutoMessagesConfig();
+ commandAliasConfig = new CommandAliasConfig();
- // dossier qui doit contenir les alias de commandes
- File commandAliasDir = new File(configDir, "commandalias");
- commandAliasDir.mkdir();
-
// dossier qui doit contenir les séries de commandes
File multiCommandsDir = new File(configDir, "multicommands");
multiCommandsDir.mkdir();
- initCommandAlias();
initMultiCommand();
}
@@ -94,82 +120,6 @@ public class ConfigManager {
-
-
- /*
- * Alias pour les commandes
- */
-
- public List