2014-11-22 17:18:10 +01:00
package net.mc_pandacraft.java.plugin.pandacraftutils ;
2015-01-03 06:35:55 +01:00
import java.io.File ;
2014-11-22 17:18:10 +01:00
import java.util.ArrayList ;
2015-01-07 04:13:50 +01:00
import java.util.Arrays ;
2014-11-22 17:18:10 +01:00
import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
2015-01-22 00:57:49 +01:00
import org.bukkit.ChatColor ;
2015-01-03 06:35:55 +01:00
import org.bukkit.configuration.file.FileConfiguration ;
2014-11-22 17:18:10 +01:00
/ *
* Configuration du plugin
* /
public class ConfigManager {
2014-12-24 19:33:08 +01:00
private static ConfigManager instance = null ;
2014-11-22 17:18:10 +01:00
2015-01-03 06:35:55 +01:00
public synchronized static ConfigManager getInstance ( ) {
2014-12-24 19:33:08 +01:00
if ( instance = = null )
2015-01-03 06:35:55 +01:00
try {
instance = new ConfigManager ( ) ;
} catch ( Exception e ) {
PandacraftUtils . getInstance ( ) . getLogger ( ) . severe ( " Erreur de chargement de la configuration de PandacraftUtils " ) ;
e . printStackTrace ( ) ;
}
2014-12-24 19:33:08 +01:00
return instance ;
}
2014-11-22 17:18:10 +01:00
2015-01-03 06:35:55 +01:00
public synchronized static void reloadConfig ( ) {
2015-01-07 04:13:50 +01:00
if ( instance ! = null )
PandacraftUtils . getInstance ( ) . reloadConfig ( ) ;
2015-01-03 06:35:55 +01:00
instance = null ;
}
2014-12-24 19:33:08 +01:00
private PandacraftUtils plugin = PandacraftUtils . getInstance ( ) ;
2014-11-22 17:18:10 +01:00
2015-01-03 06:35:55 +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 " ) ;
2015-01-07 04:13:50 +01:00
CuboCommand_worlds = Arrays . asList ( configFile . getString ( " cubos.worlds " ) . split ( " ; " ) ) ;
2014-11-22 17:18:10 +01:00
2015-01-19 07:11:20 +01:00
UsersCleaner_users_cleaner_group = configFile . getString ( " cleaner.users_cleaner_group " ) ;
2015-01-24 07:09:43 +01:00
// 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;
2015-01-24 09:46:25 +01:00
ServerMessages_defaultColor = ChatColor . YELLOW . toString ( ) ;
2015-01-24 07:09:43 +01:00
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-01-28 05:51:53 +01:00
EntitySpam_worlds = " creative " ; // séparé avec des point-virgules
EntitySpam_limitPerChunks = 50 ;
2014-11-27 23:36:58 +01:00
initChatAnalysisBadWord ( ) ;
2014-11-22 17:18:10 +01:00
initCommandAlias ( ) ;
2015-01-22 01:12:15 +01:00
initAutomessages ( ) ;
2014-11-22 17:18:10 +01:00
}
2014-12-24 19:33:08 +01:00
/ *
* Connexion à la base de donnée
* /
2015-01-03 06:35:55 +01:00
public String Database_host ;
public int Database_port ;
public String Database_username ;
public String Database_database ;
public String Database_password ;
2014-12-24 19:33:08 +01:00
2015-01-19 07:11:20 +01:00
/ *
* Users cleaner
* /
public String UsersCleaner_users_cleaner_group ;
2015-01-28 05:51:53 +01:00
/ *
* Entity Spam
* /
public String EntitySpam_worlds ;
public int EntitySpam_limitPerChunks ;
2015-01-19 07:11:20 +01:00
2015-01-22 00:57:49 +01:00
/ *
* Automessages
* /
public List < Map < String , String > > Automessages_messages ;
2015-01-24 07:09:43 +01:00
/ * *
* En seconde : pour les joueurs ! = visiteur
* /
public int Automessage_interval_players ;
/ * *
* En seconde : pour les visiteurs
* /
public int Automessage_interval_default ;
2015-01-22 00:57:49 +01:00
private void initAutomessages ( ) {
Automessages_messages = new ArrayList < Map < String , String > > ( ) ;
Map < String , String > message ;
2015-01-24 07:09:43 +01:00
message = new HashMap < String , String > ( ) ;
2015-01-27 08:37:46 +01:00
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 " ) ;
2015-01-24 07:09:43 +01:00
message . put ( " permissions " , " pandacraft.grade.default " ) ;
Automessages_messages . add ( message ) ;
2015-01-24 10:05:58 +01:00
message = new HashMap < String , String > ( ) ;
2015-01-27 08:37:46 +01:00
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 ) ;
2015-01-22 00:57:49 +01:00
message = new HashMap < String , String > ( ) ;
2015-01-27 08:37:46 +01:00
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 " ) ;
2015-01-22 00:57:49 +01:00
message . put ( " permissions " , " * " ) ;
Automessages_messages . add ( message ) ;
message = new HashMap < String , String > ( ) ;
2015-01-27 08:37:46 +01:00
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 " ) ;
2015-01-22 00:57:49 +01:00
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
* /
}
2014-11-27 23:36:58 +01:00
/ *
* Configuration AFK
* /
2015-01-03 06:35:55 +01:00
/ * *
* En secondes
* /
public int AFK_timeoutAutoAfkMessage ;
/ * *
* En secondes
* /
public int AFK_timeoutAutoAfkKick ; // 10 min
2014-11-22 17:18:10 +01:00
2014-11-27 23:36:58 +01:00
/ *
* Configuration analyse du chat et des messages privés
* ( antispam , insultes , publicité )
* /
2015-01-03 06:35:55 +01:00
/ * *
* 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 ;
2014-11-27 23:36:58 +01:00
public List < String > ChatAnalysis_badWords ; // les insultes
private void initChatAnalysisBadWord ( ) {
ChatAnalysis_badWords = new ArrayList < String > ( ) ;
/ *
* Insultes
* /
2014-11-28 22:08:10 +01:00
ChatAnalysis_badWords . add ( " pu+tes? " ) ;
2014-11-27 23:36:58 +01:00
ChatAnalysis_badWords . add ( " conn?a(rd?|ss?e?) " ) ;
2014-12-24 19:33:08 +01:00
ChatAnalysis_badWords . add ( " sal(o+|au)pe?s? " ) ;
2014-11-27 23:36:58 +01:00
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 " , " pandacraft.grade.users " ) ; // multiple permission separated with semicolumn
CommandAlias_alias . add ( alias ) ;
alias = new HashMap < String , String > ( ) ;
alias . put ( " initialCommand " , " /night " ) ;
alias . put ( " replaceWith " , " /ptime night " ) ;
alias . put ( " permissions " , " pandacraft.grade.users " ) ;
CommandAlias_alias . add ( alias ) ;
alias = new HashMap < String , String > ( ) ;
alias . put ( " initialCommand " , " /time " ) ;
alias . put ( " replaceWith " , " /ptime " ) ;
alias . put ( " permissions " , " pandacraft.grade.users " ) ;
CommandAlias_alias . add ( alias ) ;
2015-01-15 03:43:19 +01:00
alias = new HashMap < String , String > ( ) ;
alias . put ( " initialCommand " , " /shop " ) ;
alias . put ( " replaceWith " , " /warp shop " ) ;
alias . put ( " permissions " , " * " ) ; // tout le monde
CommandAlias_alias . add ( alias ) ;
2015-01-22 00:57:49 +01:00
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 ) ;
2015-01-15 03:43:19 +01:00
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 " , " pandacraft.grade.not_default " ) ;
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 ) ;
* /
}
2015-01-07 04:13:50 +01:00
public List < String > CuboCommand_worlds = new ArrayList < String > ( ) ;
2015-01-24 07:09:43 +01:00
public String ServerMessages_prefix ;
2015-01-24 09:46:25 +01:00
public String ServerMessages_defaultColor ;
2015-01-07 04:13:50 +01:00
2015-01-24 10:05:58 +01:00
public String ServerMOTD ;
2015-01-07 04:13:50 +01:00
2014-11-22 17:18:10 +01:00
}