PandacraftUtils/src/net/mc_pandacraft/java/plugin/pandacraftutils/ConfigManager.java

393 lines
11 KiB
Java
Raw Normal View History

2014-11-22 17:18:10 +01:00
package net.mc_pandacraft.java.plugin.pandacraftutils;
import java.io.File;
2014-11-22 17:18:10 +01:00
import java.util.ArrayList;
import java.util.Arrays;
2014-11-22 17:18:10 +01:00
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
2014-11-22 17:18:10 +01:00
/*
* Configuration du plugin
*/
public class ConfigManager {
private static ConfigManager instance = null;
2014-11-22 17:18:10 +01:00
public synchronized static ConfigManager getInstance() {
if (instance == null)
try {
instance = new ConfigManager();
} catch (Exception e) {
PandacraftUtils.getInstance().getLogger().severe("Erreur de chargement de la configuration de PandacraftUtils");
e.printStackTrace();
}
return instance;
}
2014-11-22 17:18:10 +01:00
public synchronized static void reloadConfig() {
if (instance != null)
PandacraftUtils.getInstance().reloadConfig();
instance = null;
}
private PandacraftUtils plugin = PandacraftUtils.getInstance();
2014-11-22 17:18:10 +01:00
private ConfigManager() throws Exception {
// dossier de configuration principale
File configDir = plugin.getDataFolder();
configDir.mkdir();
// 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();
plugin.saveDefaultConfig();
FileConfiguration configFile = plugin.getConfig();
Database_host = configFile.getString("database.host");
Database_port = configFile.getInt("database.port");
Database_database = configFile.getString("database.base");
Database_username = configFile.getString("database.user");
Database_password = configFile.getString("database.pass");
AFK_timeoutAutoAfkMessage = configFile.getInt("afk.timeoutAutoMessage");
AFK_timeoutAutoAfkKick = configFile.getInt("afk.timeoutAutoKick");
ChatAnalysis_timeBeforeResendSameMessage = configFile.getLong("chatAnalysis.timeBeforeResendSameMessage");
ChatAnalysis_timeBeforeResendSameCommand = configFile.getLong("chatAnalysis.timeBeforeResendSameCommand");
ChatAnalysis_timePerCaracterForNewMessage = configFile.getLong("chatAnalysis.timePerCaracterForNewMessage");
ChatAnalysis_maxViolationLevel = configFile.getInt("chatAnalysis.maxViolationLevel");
ChatAnalysis_nbSecondForOneVLDown = configFile.getInt("chatAnalysis.nbSecondForOneVLDown");
CuboCommand_worlds = Arrays.asList(configFile.getString("cubos.worlds").split(";"));
2014-11-22 17:18:10 +01:00
UsersCleaner_users_cleaner_group = configFile.getString("cleaner.users_cleaner_group");
// TODO ajouter les valeurs par défaut dans config.yml
Automessage_interval_players = configFile.getInt("autoMessage.interval_player", 10*60);
Automessage_interval_default = configFile.getInt("autoMessage.interval_default", 2*60+30);
// TODO ajouter les valeurs par défaut dans config.yml
// TODO gérer les codes de coloration;
ServerMessages_defaultColor = ChatColor.YELLOW.toString();
ServerMessages_prefix = ChatColor.YELLOW+"["+ChatColor.WHITE+"Pandacraft"+ChatColor.YELLOW+"] "; //configFile.getString("server_messages_prefix");
2015-01-24 10:05:58 +01:00
// TODO ajouter les valeurs par défaut dans config.yml
// TODO gérer les codes de coloration;
ServerMOTD = "§7Serveur §fPandacraft§7, §eVenez nous rejoindre :D\n§bCreatif§7, §6Survie§7 et §4Faction/PVP§7 !";
2014-11-22 17:18:10 +01:00
2015-02-04 23:42:58 +01:00
// TODO ajouter les valeurs par défaut dans config.yml
EntitySpam_worlds = "creative"; // séparé avec des point-virgules
EntitySpam_limitPerChunks = 50;
2015-02-04 23:42:58 +01:00
// TODO ajouter les valeurs par défaut dans config.yml
NetworkAPI_passwd = "rgrgaethejtrvvzh47";
initChatAnalysisBadWord();
2014-11-22 17:18:10 +01:00
initCommandAlias();
initAutomessages();
2014-11-22 17:18:10 +01:00
}
/*
* Connexion à la base de donnée
*/
public String Database_host;
public int Database_port;
public String Database_username;
public String Database_database;
public String Database_password;
/*
* Users cleaner
*/
public String UsersCleaner_users_cleaner_group;
/*
* Entity Spam
*/
public String EntitySpam_worlds;
public int EntitySpam_limitPerChunks;
2015-02-04 23:42:58 +01:00
/*
* NetworkAPI
*/
public String NetworkAPI_passwd;
/*
* Automessages
*/
public List<Map<String, String>> Automessages_messages;
/**
* En seconde : pour les joueurs != visiteur
*/
public int Automessage_interval_players;
/**
* En seconde : pour les visiteurs
*/
public int Automessage_interval_default;
private void initAutomessages() {
Automessages_messages = new ArrayList<Map<String,String>>();
Map<String, String> message;
message = new HashMap<String, String>();
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", "group.default");
Automessages_messages.add(message);
2015-01-24 10:05:58 +01:00
message = new HashMap<String, String>();
message.put("message", "Utilisez la commande &7/cubo"+ServerMessages_defaultColor+" en Survie pour protéger vos construction ! :)%n&a https://www.mc-pandacraft.net/?p=antigrief#tuto_cubo");
2015-01-24 10:05:58 +01:00
message.put("permissions", "*");
Automessages_messages.add(message);
message = new HashMap<String, String>();
message.put("message", "WorldEdit disponible en &bCréatif"+ServerMessages_defaultColor+" avec le grade %n&f[&eUltimate&f]"+ServerMessages_defaultColor+". Profitez en vite :D%n &a https://www.mc-pandacraft.net/?p=ultimate");
message.put("permissions", "*");
Automessages_messages.add(message);
message = new HashMap<String, String>();
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
*/
}
/*
* Configuration AFK
*/
/**
* En secondes
*/
public int AFK_timeoutAutoAfkMessage;
/**
* En secondes
*/
public int AFK_timeoutAutoAfkKick; // 10 min
2014-11-22 17:18:10 +01:00
/*
* Configuration analyse du chat et des messages privés
* (antispam, insultes, publicité)
*/
/**
* En milisecondes
*/
public long ChatAnalysis_timeBeforeResendSameMessage;// 2 min
/**
* En milisecondes
*/
public long ChatAnalysis_timeBeforeResendSameCommand;// 60 sec
/**
* En milisecondes
*/
public long ChatAnalysis_timePerCaracterForNewMessage;// 0.1 sec
public int ChatAnalysis_maxViolationLevel;
public int ChatAnalysis_nbSecondForOneVLDown;
public List<String> ChatAnalysis_badWords; // les insultes
private void initChatAnalysisBadWord() {
ChatAnalysis_badWords = new ArrayList<String>();
/*
* 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("");
//ChatAnalysis_badWords.add("");
//ChatAnalysis_badWords.add("");
}
/*
* Alias pour les commandes
*/
2014-11-22 17:18:10 +01:00
public List<Map<String, String>> CommandAlias_alias;
private void initCommandAlias() {
CommandAlias_alias = new ArrayList<Map<String, String>>();
Map<String, String> alias;
alias = new HashMap<String, String>();
alias.put("initialCommand", "/day");
alias.put("replaceWith", "/ptime day");
alias.put("permissions", "group.users"); // multiple permission separated with semicolumn
2014-11-22 17:18:10 +01:00
CommandAlias_alias.add(alias);
alias = new HashMap<String, String>();
alias.put("initialCommand", "/night");
alias.put("replaceWith", "/ptime night");
alias.put("permissions", "group.users");
2014-11-22 17:18:10 +01:00
CommandAlias_alias.add(alias);
alias = new HashMap<String, String>();
alias.put("initialCommand", "/time");
alias.put("replaceWith", "/ptime");
alias.put("permissions", "group.users");
2014-11-22 17:18:10 +01:00
CommandAlias_alias.add(alias);
alias = new HashMap<String, String>();
alias.put("initialCommand", "/shop");
alias.put("replaceWith", "/warp shop");
alias.put("permissions", "*"); // tout le monde
CommandAlias_alias.add(alias);
alias = new HashMap<String, String>();
alias.put("initialCommand", "/lobby");
alias.put("replaceWith", "/spawn");
alias.put("permissions", "*"); // tout le monde
CommandAlias_alias.add(alias);
alias = new HashMap<String, String>();
alias.put("initialCommand", "/hub");
alias.put("replaceWith", "/spawn");
alias.put("permissions", "*"); // tout le monde
CommandAlias_alias.add(alias);
alias = new HashMap<String, String>();
alias.put("initialCommand", "/tete");
alias.put("replaceWith", "/heads nick");
alias.put("permissions", "*");
CommandAlias_alias.add(alias);
alias = new HashMap<String, String>();
alias.put("initialCommand", "/inscription");
alias.put("replaceWith", "/mail send marcbal Inscription");
alias.put("permissions", "group.users");
CommandAlias_alias.add(alias);
2014-11-22 17:18:10 +01:00
/*
Map<String, String> alias = new HashMap<String, String>();
alias.put("initialCommand", "");
alias.put("replaceWith", "");
alias.put("permissions", "");
CommandAlias_alias.add(alias);
*/
}
public List<String> CuboCommand_worlds = new ArrayList<String>();
public String ServerMessages_prefix;
public String ServerMessages_defaultColor;
2015-01-24 10:05:58 +01:00
public String ServerMOTD;
2014-11-22 17:18:10 +01:00
}