package net.mc_pandacraft.java.plugin.pandacraftutils.config; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils; import org.bukkit.ChatColor; /* * Configuration du plugin */ public class ConfigManager { private static ConfigManager instance = null; public synchronized static ConfigManager getInstance() { if (instance == null) loadNewInstance(); return instance; } public synchronized static void loadNewInstance() { try { instance = new ConfigManager(); } catch (Exception e) { PandacraftUtils.getInstance().getLogger().severe("Erreur de chargement de la configuration de PandacraftUtils"); e.printStackTrace(); } } private PandacraftUtils plugin = PandacraftUtils.getInstance(); public final DefaultConfigManager defaultConfig; private ConfigManager() throws Exception { // dossier de configuration principale File configDir = plugin.getDataFolder(); configDir.mkdir(); defaultConfig = new DefaultConfigManager(); // dossier qui doit contenir les messages automatiques File autoMessagesDir = new File(configDir, "automessages"); autoMessagesDir.mkdir(); // 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(); // fichier qui doit contenir les insultes à censurer File badWordsFile = new File(configDir, "badwords.txt"); badWordsFile.createNewFile(); initChatAnalysisBadWord(); initCommandAlias(); initAutomessages(); initWorldBorder(); initMultiCommand(); } /* * Automessages */ public List> Automessages_messages; private void initAutomessages() { Automessages_messages = new ArrayList>(); String defColor = defaultConfig.serverMessages_defaultColor; Map message; message = new HashMap(); message.put("message", ChatColor.BLUE+"Bienvenue sur Pandacraft ! :) Pour pouvoir jouer, n'oubliez pas de vous inscrire en cliquant sur le lien en dessous%n &ahttps://www.mc-pandacraft.net/?p=inscription"); message.put("permissions", "pandacraft.grade.default"); Automessages_messages.add(message); message = new HashMap(); message.put("message", "Utilisez la commande &7/cubo"+defColor+" en Survie pour protéger vos construction ! :)%n&a https://www.mc-pandacraft.net/?p=antigrief#tuto_cubo"); message.put("permissions", "*"); Automessages_messages.add(message); message = new HashMap(); message.put("message", "WorldEdit disponible en &bCréatif"+defColor+" avec le grade %n&f[&eUltimate&f]"+defColor+". Profitez en vite :D%n &a https://www.mc-pandacraft.net/?p=ultimate"); message.put("permissions", "*"); Automessages_messages.add(message); message = new HashMap(); message.put("message", "Launcher disponible pour Pandacraft : Optifine intégré et mise à jour automatique avec le serveur.%n &ahttps://www.mc-pandacraft.net/?p=launcher"); message.put("permissions", "*"); Automessages_messages.add(message); /* * Fonctionnement : * Chaque joueur a une variable indiquand la date/heure du dernier message affiché * Cette valeur est initialisé à la valeur courante, lors de chaque connexion du joueur * Selon le grade, l'intervalle entre les messages est défini : 2min30 pour les visiteurs, 10 minutes pour les autres * Chaque joueur a une variable qui correspond à l'ID du dernier message (dans l'ArrayList) pour ne pas répéter deux fois le même */ } public List ChatAnalysis_badWords; // les insultes private void initChatAnalysisBadWord() { ChatAnalysis_badWords = new ArrayList(); /* * Insultes */ ChatAnalysis_badWords.add("pu+tes?"); ChatAnalysis_badWords.add("conn?a(rd?|ss?e?)"); ChatAnalysis_badWords.add("sal(o+|au)pe?s?"); ChatAnalysis_badWords.add("[ea]ncul(é|e|er|ai(s|t|))"); ChatAnalysis_badWords.add("merdes?"); ChatAnalysis_badWords.add("ni(qu|k)e? ta m(è|e|é)re?"); ChatAnalysis_badWords.add("fil?s de putes?"); ChatAnalysis_badWords.add("ta m(è|e|é)re? l(a|e) putes?"); ChatAnalysis_badWords.add("tafiole?s?"); ChatAnalysis_badWords.add("vas? te pendre"); ChatAnalysis_badWords.add("fuck"); ChatAnalysis_badWords.add("mother ?fuc?ker"); ChatAnalysis_badWords.add("dick"); ChatAnalysis_badWords.add("ass"); ChatAnalysis_badWords.add("bitch"); //ChatAnalysis_badWords.add(""); /* * Pub pour des serveurs (avec sous domaines type *.mtxserv.fr ou nom de serveur connu genre Minefield) */ ChatAnalysis_badWords.add("minefield"); ChatAnalysis_badWords.add("mineplex"); ChatAnalysis_badWords.add("hypixel"); ChatAnalysis_badWords.add("mtxserv"); ChatAnalysis_badWords.add("spycraft"); ChatAnalysis_badWords.add("verygames"); ChatAnalysis_badWords.add("minecraft-mania"); //ChatAnalysis_badWords.add(""); //ChatAnalysis_badWords.add(""); //ChatAnalysis_badWords.add(""); } /* * Alias pour les commandes */ public List> CommandAlias_alias; private void initCommandAlias() { CommandAlias_alias = new ArrayList>(); Map alias; alias = new HashMap(); alias.put("initialCommand", "/day"); alias.put("replaceWith", "/ptime day"); alias.put("permissions", "pandacraft.grade.users"); // multiple permission separated with semicolumn CommandAlias_alias.add(alias); alias = new HashMap(); alias.put("initialCommand", "/night"); alias.put("replaceWith", "/ptime night"); alias.put("permissions", "pandacraft.grade.users"); CommandAlias_alias.add(alias); alias = new HashMap(); alias.put("initialCommand", "/time"); alias.put("replaceWith", "/ptime"); alias.put("permissions", "pandacraft.grade.users"); CommandAlias_alias.add(alias); alias = new HashMap(); alias.put("initialCommand", "/shop"); alias.put("replaceWith", "/warp shop"); alias.put("permissions", "*"); // tout le monde CommandAlias_alias.add(alias); alias = new HashMap(); alias.put("initialCommand", "/lobby"); alias.put("replaceWith", "/spawn"); alias.put("permissions", "*"); // tout le monde CommandAlias_alias.add(alias); alias = new HashMap(); alias.put("initialCommand", "/hub"); alias.put("replaceWith", "/spawn"); alias.put("permissions", "*"); // tout le monde CommandAlias_alias.add(alias); alias = new HashMap(); alias.put("initialCommand", "/tete"); alias.put("replaceWith", "/heads nick"); alias.put("permissions", "*"); CommandAlias_alias.add(alias); alias = new HashMap(); alias.put("initialCommand", "/inscription"); alias.put("replaceWith", "/mail send marcbal Inscription"); alias.put("permissions", "pandacraft.grade.users"); CommandAlias_alias.add(alias); /* Map alias = new HashMap(); alias.put("initialCommand", ""); alias.put("replaceWith", ""); alias.put("permissions", ""); CommandAlias_alias.add(alias); */ } /* * World Border */ public HashMap WorldBorder_config; private void initWorldBorder() { WorldBorder_config = new HashMap(); WorldBorder_config.put("Faction", new WorldBorderConfig(40, 296, 2000)); WorldBorder_config.put("Survival_nether", new WorldBorderConfig(-11.4F, 18.5F, 1500)); WorldBorder_config.put("Survival", new WorldBorderConfig(800, 1536, 5000)); WorldBorder_config.put("NewFaction", new WorldBorderConfig(136, -136, 3000)); WorldBorder_config.put("Faction_nether", new WorldBorderConfig(-81.6F, -76.9F, 500)); WorldBorder_config.put("PlatCreative", new WorldBorderConfig(456.6f, -1367.5f, 735)); WorldBorder_config.put("world", new WorldBorderConfig(0, 0, 2000)); WorldBorder_config.put("spawn", new WorldBorderConfig(-224, 366, 1000)); WorldBorder_config.put("creative", new WorldBorderConfig(0, 0, 1700)); } public static class WorldBorderConfig { public final float X, Z, radius; public WorldBorderConfig(float x, float z, float r) { X = x; Z = z; radius = Math.abs(r); } public double getMinX() { return X - radius; } public double getMaxX() { return X + radius; } public double getMinZ() { return Z - radius; } public double getMaxZ() { return Z + radius; } } /* * Multicommand */ public Map> MultiCommand_config; private void initMultiCommand() { /* * Format d'un String dans l'ArrayList : * T C A /CMD ... * - T : temps en tick, depuis l'exécution de la commande /muco * - C : "C" si doit être exécuté en tant que la console, autre chose sinon * - A : "A" si la commande peut être exécuté en mode asynchrone, autre chose, sinon * (T, C et A ne peuvent pas contenir d'espace) * /CMD ... correspond à la commande, avec le / devant. Peut contenir $1, $2, ... comme des paramètres */ MultiCommand_config = new HashMap>(); List list = new ArrayList(); list.add("0 - - /pex user $1 remove $2"); list.add("1 - - /pex user $1 add $3"); list.add("1 - - /m $1 La mise à jour de votre grade est terminé :) !"); MultiCommand_config.put("gradejoueur", list); list = new ArrayList(); list.add("0 - - /region select arenespleef_niv1"); list.add("1 - - //replace 0 87"); list.add("2 - - /region select arenespleef_niv2"); list.add("3 - - //replace 0 87"); list.add("4 - - /region select arenespleef_niv3"); list.add("5 - - //replace 0 87"); list.add("6 - - /region select arenespleef_niv4"); list.add("7 - - //replace 0 87"); list.add("8 - - /region select arenespleef_niv5"); list.add("9 - - //replace 0 87"); list.add("10 - - /region select arenespleef_niv6"); list.add("11 - - //replace 0 87"); list.add("12 - - /region select arenespleef_niv7"); list.add("13 - - //replace 0 87"); list.add("14 - - /region select arenespleef_niv8"); list.add("15 - - //replace 0 87"); MultiCommand_config.put("arenespleef_reparer", list); list = new ArrayList(); list.add("0 - - /pex user $1 group add premium"); list.add("0 - - /m $1 Vous venez de passer Premium :)"); MultiCommand_config.put("addpremium", list); list = new ArrayList(); list.add("0 - - /pex user $1 group remove premium"); MultiCommand_config.put("delpremium", list); list = new ArrayList(); list.add("0 - - /pex user $1 group add ultimate"); list.add("0 - - /m $1 Vous venez de recevoir le grade Ultimate, félicitation :)"); MultiCommand_config.put("addultimate", list); list = new ArrayList(); list.add("0 - - /pex user $1 group remove ultimate"); list.add("0 - - /mail send $1 Vous venez de perdre votre grade Ultimate et tous ses avantages car la durée est écoulée."); list.add("1 - - /mail send $1 Si vous voulez encore en profiter, rendez vous sur http://mc-pandacraft.net/?p=ultimate"); MultiCommand_config.put("delultimate", list); list = new ArrayList(); list.add("0 - - /region select arenepvp_solarene"); list.add("1 - - //replace 11 20"); MultiCommand_config.put("arenepvp_proteger_lave", list); list = new ArrayList(); list.add("0 - - /region select arenepvp_solarene"); list.add("1 - - //replace 20 11"); MultiCommand_config.put("arenepvp_remettre_lave", list); list = new ArrayList(); list.add("0 - - /region select arenepvp_toit"); list.add("1 - - //replace 20 98"); MultiCommand_config.put("arenepvp_fermer_fenetre", list); list = new ArrayList(); list.add("0 - - /region select arenepvp_toit"); list.add("1 - - //replace 98 20"); MultiCommand_config.put("arenepvp_ouvrir_fenetre", list); list = new ArrayList(); list.add("0 C - /broadcast &7Site Web :&a https://www.mc-pandacraft.net/"); MultiCommand_config.put("site", list); list = new ArrayList(); list.add("0 C - /broadcast &7Devenir &f[&bMembre&f]&7 :&a http://mc-pandacraft.net/?id=12"); MultiCommand_config.put("sitemembre", list); list = new ArrayList(); list.add("0 C - /broadcast Grade &f[&eUltimate&f]&7 :&a http://mc-pandacraft.net/?p=ultimate"); MultiCommand_config.put("siteultimate", list); list = new ArrayList(); list.add("0 - - /mv regen Survival_the_end"); list.add("1 - - /mvconfirm"); MultiCommand_config.put("new_ender", list); list = new ArrayList(); list.add("0 - - /mv regen Survival_nether"); list.add("1 - - /mvconfirm"); list.add("600 - - /mv regen Faction_nether"); list.add("601 - - /mvconfirm"); MultiCommand_config.put("new_nether", list); } }