Ajout du système d'historique de commande pour la console (avec le NetworkAPI)
This commit is contained in:
parent
db9dc346ac
commit
c83a412d0f
@ -1,5 +1,9 @@
|
||||
Format des fichiers de configuration
|
||||
==========
|
||||
- *.txt : fichier modifiable à la main que le serveur ne fait que lire
|
||||
- \*.yml : pareil que les fichiers *.txt, mais le contenu est au format YAML
|
||||
- *.save : fichier à ne pas modifier, dont seul le serveur gère le contenu
|
||||
|
||||
___________________
|
||||
|
||||
## config.yml
|
||||
@ -68,3 +72,10 @@ Une ligne aura cette forme :
|
||||
(T, C et A ne peuvent pas contenir d'espace)
|
||||
|
||||
Les lignes vides et les lignes dont le premier caractère est un `#` seront ignorés. Les caractères non imprimables en début et fin de ligne sont conservés
|
||||
|
||||
___________________
|
||||
|
||||
## command_history.save
|
||||
Contient l'historique des commandes envoyés en utilisant le Network API. Une limite peut être fixé concernant le nombre commandes enregistrés.
|
||||
|
||||
Ce fichier n'a pas à être éditée à la main, car c'est le serveur qui gère son contenu.
|
||||
|
@ -77,6 +77,14 @@ La partie **donnée** de la requête contient d'abord le pseudo du joueur source
|
||||
|
||||
Cet exemple enverra de la part de `marcbal` le message `salut :)` à `toto`.
|
||||
|
||||
#### `console_command_history`
|
||||
Retourne la liste des commandes se trouvant dans l'historique. Cette liste servira à l'interface Web pour aider à l'exécution des commandes.
|
||||
|
||||
La partie **donnée** de la requête ne contient rien.
|
||||
|
||||
Chaque ligne de la réponse sera une commande de l'historique, sachant que la dernière retournée sera la plus récente. Les doublons sont ignorés. C'est à dire que si une commande déjà existante l'historique est réexécutée, elle sera retirée de son ancien emplacement pour aller à la dernière place.
|
||||
|
||||
Les commandes ajoutés à cette liste seront les commandes envoyés via les requêtes `command` et `command_async`.
|
||||
|
||||
## Structure d'une réponse
|
||||
La réponse est construite en mode texte, sur plusieurs lignes. Chaque ligne se fini par un '\n' :
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<jardesc>
|
||||
<jar path="PandacraftUtils/jar_export/PandacraftUtils-3.12.jar"/>
|
||||
<jar path="PandacraftUtils/jar_export/PandacraftUtils-3.13.jar"/>
|
||||
<options buildIfNeeded="true" compress="true" descriptionLocation="/PandacraftUtils/make_jar.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
|
||||
<storedRefactorings deprecationInfo="true" structuralOnly="false"/>
|
||||
<selectedProjects/>
|
||||
|
@ -1,6 +1,6 @@
|
||||
name: PandacraftUtils
|
||||
main: net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils
|
||||
version: 3.12
|
||||
version: 3.13
|
||||
|
||||
|
||||
|
||||
|
@ -117,6 +117,8 @@ public class PandacraftUtils extends JavaPlugin {
|
||||
@Override
|
||||
public void onDisable(){
|
||||
|
||||
ConfigManager.getInstance().saveAll();
|
||||
|
||||
afkManager = null;
|
||||
wESelectionDisplayManager = null;
|
||||
commandAliasManager = null;
|
||||
|
@ -112,7 +112,7 @@ public abstract class AbstractConfig {
|
||||
|
||||
|
||||
protected void warning(String message) {
|
||||
plugin.getLogger().warning("Error while loading configuration in '"+configFile.getName()+"' : "+message);
|
||||
plugin.getLogger().warning("Erreur dans la configuration de '"+configFile.getName()+"' : "+message);
|
||||
}
|
||||
|
||||
|
||||
|
@ -0,0 +1,61 @@
|
||||
package net.mc_pandacraft.java.plugin.pandacraftutils.config;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.List;
|
||||
|
||||
public class CommandHistoryConfig extends AbstractConfig implements Saveable {
|
||||
|
||||
private List<String> history;
|
||||
|
||||
private final int nbMaxHistory = 100;
|
||||
|
||||
public CommandHistoryConfig()
|
||||
throws IOException {
|
||||
super("command_history.save", FileType.FILE);
|
||||
|
||||
history = getFileLines(true, false, false);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public synchronized String getStringList() {
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String s : history) {
|
||||
sb.append(s+"\n");
|
||||
}
|
||||
sb.deleteCharAt(sb.length()-1); // pour supprimer le dernir retour à la ligne
|
||||
return sb.toString();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public synchronized void add(String s) {
|
||||
if (s == null || s.trim().equals("")) return;
|
||||
history.remove(s); // assure que l'élément ne se trouve pas déjà dans la liste
|
||||
history.add(s);
|
||||
if (history.size() > nbMaxHistory)
|
||||
history.remove(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public synchronized void save() {
|
||||
try {
|
||||
|
||||
PrintWriter br = new PrintWriter(configFile);
|
||||
br.print(getStringList());
|
||||
br.flush();
|
||||
br.close();
|
||||
|
||||
} catch (Exception e) {
|
||||
warning("impossible de sauvegarder");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -21,6 +21,9 @@ public class ConfigManager {
|
||||
}
|
||||
|
||||
public synchronized static void loadNewInstance() {
|
||||
if (instance != null) {
|
||||
instance.saveAll();
|
||||
}
|
||||
try {
|
||||
instance = new ConfigManager();
|
||||
} catch (Exception e) {
|
||||
@ -81,6 +84,7 @@ public class ConfigManager {
|
||||
public final AutoMessagesConfig autoMessagesConfig;
|
||||
public final CommandAliasConfig commandAliasConfig;
|
||||
public final MultiCommandConfig multiCommandConfig;
|
||||
public final CommandHistoryConfig commandHistoryConfig;
|
||||
|
||||
|
||||
|
||||
@ -99,11 +103,21 @@ public class ConfigManager {
|
||||
autoMessagesConfig = new AutoMessagesConfig();
|
||||
commandAliasConfig = new CommandAliasConfig();
|
||||
multiCommandConfig = new MultiCommandConfig();
|
||||
commandHistoryConfig = new CommandHistoryConfig();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Effectue les sauvegardes nécessaires pour les éléments de configuration sauvegardable
|
||||
*/
|
||||
|
||||
public void saveAll() {
|
||||
|
||||
commandHistoryConfig.save();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,7 @@
|
||||
package net.mc_pandacraft.java.plugin.pandacraftutils.config;
|
||||
|
||||
public interface Saveable {
|
||||
|
||||
public void save();
|
||||
|
||||
}
|
@ -4,6 +4,7 @@ import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executo
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors.RequestExecutorChatSend;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors.RequestExecutorCommand;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors.RequestExecutorCommandAsync;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors.RequestExecutorConsoleCommandHistory;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors.RequestExecutorPlayerList;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors.RequestExecutorPrivateMessage;
|
||||
|
||||
@ -24,6 +25,7 @@ public class NetworkAPI {
|
||||
new RequestExecutorPlayerList();
|
||||
new RequestExecutorChatSend();
|
||||
new RequestExecutorPrivateMessage();
|
||||
new RequestExecutorConsoleCommandHistory();
|
||||
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,10 @@ public class Response {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Construit une réponse positive avec aucune donnée. Équivaut à
|
||||
* <code>new Response(true, "")</code>
|
||||
*/
|
||||
public Response() {
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors;
|
||||
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.config.ConfigManager;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.Response;
|
||||
|
||||
public class RequestExecutorCommand extends AbstractRequestExecutor {
|
||||
@ -19,6 +20,8 @@ public class RequestExecutorCommand extends AbstractRequestExecutor {
|
||||
{
|
||||
boolean succes = plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), command);
|
||||
|
||||
ConfigManager.getInstance().commandHistoryConfig.add(command);
|
||||
|
||||
if (!succes)
|
||||
plugin.getLogger().warning("La commande ne peut pas s'exécuter : /"+command);
|
||||
}
|
||||
@ -38,12 +41,8 @@ public class RequestExecutorCommand extends AbstractRequestExecutor {
|
||||
|
||||
}.init(data));
|
||||
|
||||
Response rep = new Response();
|
||||
rep.good = true;
|
||||
rep.data = "";
|
||||
|
||||
|
||||
return rep;
|
||||
return new Response();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors;
|
||||
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.config.ConfigManager;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.Response;
|
||||
|
||||
public class RequestExecutorCommandAsync extends AbstractRequestExecutor {
|
||||
@ -16,6 +17,8 @@ public class RequestExecutorCommandAsync extends AbstractRequestExecutor {
|
||||
{
|
||||
rep.good = plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), data);
|
||||
|
||||
ConfigManager.getInstance().commandHistoryConfig.add(data);
|
||||
|
||||
if (!rep.good)
|
||||
{
|
||||
plugin.getLogger().warning("La commande ne peut pas s'exécuter : /"+data);
|
||||
|
@ -0,0 +1,20 @@
|
||||
package net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors;
|
||||
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.config.ConfigManager;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.Response;
|
||||
|
||||
public class RequestExecutorConsoleCommandHistory extends
|
||||
AbstractRequestExecutor {
|
||||
|
||||
public RequestExecutorConsoleCommandHistory() {
|
||||
super("console_command_history");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Response run(String data) {
|
||||
|
||||
return new Response(true, ConfigManager.getInstance().commandHistoryConfig.getStringList());
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user