Skip to content

Commandes (FR)

LucBerge edited this page Nov 15, 2020 · 3 revisions

Ce composant simplifie la gestion des commandes, des sous-commandes et de leurs alias.

Documentation JavaDoc
Classe
(pour loadComponents)
fr.zcraft.zlib.components.commands.Commands

Écrivez vos commandes

Chaque commande est une classe qui hérite de la classe Command, avec l'annotation @CommandInfo pour décrire la commande (nom, paramètres, aide, alias). Un constructeur sans arguments est requis.

Dans votre sous-classe Command, vous devez réécrire respectivement les méthodes run()(et optionnellement complete()) pour exécuter la commande et l'auto-compléter.

package fr.zcraft.ztoaster.commands;

import fr.zcraft.zlib.components.commands.Command;
import fr.zcraft.zlib.components.commands.CommandException;
import fr.zcraft.zlib.components.commands.CommandInfo;

@CommandInfo(name = "awesomeness")
public class AwesomeCommand extends Command
{
    @Override
    protected void run() throws CommandException
    {
        // Votre magnifique commande
        sender.sendMessage(ChatColor.GOLD + "Such awesomeness");
        sender.sendMessage(ChatColor.GREEN + "Very grassy");
        sender.sendMessage(ChatColor.GRAY + "Wow.");
    }
}

Parallèlement, quelques méthodes sont disponibles pour récupérer et analyser facilement les paramètres ou pour envoyer des réponses. Tout les attributs (comme sender dans l'exemple au dessus) et méthodes sont expliqués dans la documentation de la classe Command.

Les erreurs sont gérées avec des exceptions. Si quelque chose ne se passe pas correctement, une CommandException est lancée contenant la raison. Les méthodes suivantes sont également à votre disposition.

Method Description
error(String message) À appeler si quelque chose ne se passe pas correctement.
throwInvalidArgument(String reason) À appeler si un argument est invalide (en expliquant avec reason).
playerSender() Retourne l’exécuteur de la commande en tant que Player ou lance une CommandException avec pour raison COMMANDSENDER_EXPECTED_PLAYER.
getBooleanParameter(int i)
getDoubleParameter(int i)
getFloatParameter(int i)
getIntegerParameter(int i)
getLongParameter(int i)
getEnumParameter(int i, Class<T> type)
Retourne le paramètre pour l'index renseigné et casté avec le type demandé, ou lance une CommandException avec la raison INVALID_PARAMETERS si ce n'est pas possible.

Enregistrez vos commandes

Quand vos commandes sont prêtes, vous devez les enregistrer comme ceci.

// "toaster" est le nom de la commande principale: /toaster ...
Commands.register("toaster", AwesomeCommand.class, AnotherCommand.class);

Vous pouvez aussi enregister des raccourcis vers des sous-commandes depuis une commande simple. Par exemple, ceci execute la commande /toaster awesomeness depuis /awesome ou /aw:

Commands.registerShortcut("toaster", AwesomeCommand.class, "awesome", "aw");

Attention ! Toutes les commandes principales doivent être déclarées dans le fichier plugin.yml sans quoi une IllegalStateException sera lancée. Ici, /toaster et /awersome doivent être enregistrés explicitement et /aw en tant qu'alias.

Écrivez de la documentation

Ce composant génère automatiquement de la documentation pour l'utilisateur à travers une description lorsque la commande est exécutée sans sous-commande et une sous-commande "help" générée automatiquement.

Exemple

Cette exemple est tiré du projet SpectatorPlus.

  • Commande exécutée sans sous-commande (/command) Command executed without sub-command
  • Aide générale d'une sous-commandes (/command help) Help sub-command
  • Aide détaillée d'une sous-commande (/command help subcommand) Help of a command

Fichier d'aide

Ceci dit, la documentation ne vient pas de nulle part, vous en conviendrez. Elle est écrite dans un sous répertoire help dans le répertoire ressources (au même niveau que le fichier plugin.yml). Vous pouvez utiliser §- les codes de formatage dans vos fichiers. Les sauts à la ligne sont conservés.

/command

Localisation du fichier Contenu
Le message affiché quand les commandes sont appelées sans arguments est généré automatiquement sur la base:
  • des sous-commandes (pour la ligne « Usage » en rouge);
  • de la valeur du champ description dans le fichier plugin.yml.

/command help

Localisation du fichier Contenu
help/command.txt Contient l'aide principal de la commande.
  • Les premières lignes contient l'introduction, affiché au dessus de la liste des commandes.
  • Les autres lignes contient l'aide pour chaque commande, suivant ce format:
    sous-commande:Aide de cette sous-commande
    L'ordre des sous-commandes est le même que celui dans la méthode Commands.register.

/command help subcommand

Localisation du fichier Contenu
help/command/subcommand.txt Contient l'aide de la sous-commande (préfixé avec le trait bleu), affiché sous le résumé d'utilisation de la commande.
Les lignes sont automatiquement découpées de manière à correspondre correctement au chat donc évitez les lignes de 55-60 characters si vous ne voulez pas supprimer le trait bleu.