kirosnn
  • đź‘‹Accueil
  • dAPi
    • đź’ˇPrĂ©sentation
    • đź““YAML
    • đź““Scoreboard
    • đź““Placeholders
    • đź““Commandes | Sous-commandes
    • đź““Base64
    • đź““GUIS
Powered by GitBook
On this page
  • Gestion des commandes
  • Introduction
  • CrĂ©ation d'une commande
  • CrĂ©ation d'une commande
  • Utilisation des permissions
  • AutocomplĂ©tion
  • Exemple complet
  • MĂ©thodes disponibles

Was this helpful?

  1. dAPi

Commandes | Sous-commandes

Documentation pour l'API (Commandes et sous-commandes).


Gestion des commandes

Introduction

Les commandes sont une partie obligatoire pour réaliser un bon plugin, vous pouvez créer des commandes ainsi que des sous-commandes rapidement. Grâce à la modularité de dAPI, vous pouvez facilement :

  • Centraliser la gestion des commandes principales et sous-commandes.

  • ImplĂ©menter facilement des systèmes de permissions pour les commandes.

  • Ajouter la complĂ©tion automatique des commandes.


Création d'une commande

Étape 1 : Importer CommandBase

Pour commencer, importez la classe CommandBase dans votre projet :

import fr.kirosnn.dAPI.commands.CommandBase;

Étape 2 : Créer une classe qui hérite de CommandBase

Créez une classe qui étend CommandBase pour définir la logique de la commande principale. Exemple :

public class ExampleCommand extends CommandBase {
    
    private dAPI plugin;
    
    public ExampleCommand(dAPI plugin) {
        this.plugin = plugin;

        this.registerSubCommand("reload", new ReloadSub(plugin));
    }
    
    @Override
    public boolean execute(CommandSender sender, String[] args) {
        sender.sendMessage("Commande principale exécutée !");
        return true;
    }
}

Étape 3 : Enregistrer la commande dans votre plugin

Pour le faire, vous devez le faire comme pour une commande de base, y compris dans votreplugin.yml :

commands:
  example:
    description: "Exemple de commande pour le wiki"
    usage: "/example"

Puis, dans votre méthode onEnable :

@Override
public void onEnable() {
    getCommand("example").setExecutor(new ExampleCommand());
}

Création d'une commande

Étape 1 : Importer CommandBase

Pour commencer, importez la classe SubCommand dans votre projet :

import fr.kirosnn.dAPI.commands.SubCommand;

Étape 2 : Créer une classe qui hérite de SubCommand

Créez une classe qui étend SubCommand pour définir la logique de la commande principale. Exemple :

public class ReloadSub extends SubCommand {
    
    private dAPI plugin;
    
    public ReloadSub(dAPI plugin) {
        this.plugin = plugin;
    }
    
    @Override
    public boolean execute(CommandSender sender, String[] strings) {
        try {
            plugin.getConfigFile().reload(); // Utilisation de YamlFile :)
            plugin.getLangFile().reload();

            sender.sendMessage(plugin.getPlaceholders().applyPlaceholders(
                    plugin.getLangFile().get("reload.reload-success", "&aConfiguration reloaded successfully!")));
        } catch (Exception e) {
            new LoggerUtils(plugin).error("An error occurred while reloading configuration files: " + e.getMessage());

            sender.sendMessage(plugin.getPlaceholders().applyPlaceholders(
                    plugin.getLangFile().get("reload.reload-error", "&cAn error occurred while reloading the configuration. Check the console for more details.")));
        }

        return true;
    }

    @Override
    public boolean hasPermission(CommandSender sender) {
        return sender.hasPermission("dapi.reload");
    }
}

Étape 3 : Enregistrer la commande dans votre commande principale

Pour le faire, vous devez le faire dans le constructeur de la classe héritante de CommandBase :

 this.registerSubCommand("reload", new ReloadSub(plugin));

Utilisation des permissions

Pour personnaliser le message lorsque l'utilisateur n'a pas la permission, utilisez la méthode setNoPermissionMessage :

this.setNoPermissionMessage("§cVous n'avez pas la permission d'utiliser cette commande.");

Autocomplétion

La méthode onTabComplete de CommandBase gère automatiquement la complétion des sous-commandes enregistrées. Si vous avez besoin de personnaliser la complétion pour une sous-commande, implémentez la méthode tabComplete dans votre classe SubCommand. Les joueurs ne verront que les sous-commandes où ils ont la permission d'exécuter.


Exemple complet

Voici un exemple d'utilisation de CommandBase avec une commande principale et une sous-commande.

Classe principale de la commande

public class ExampleCommand extends CommandBase {
    
    private dAPI plugin;
    
    public ExampleCommand(dAPI plugin) {
        this.plugin = plugin;

        this.registerSubCommand("reload", new ReloadSub(plugin));
    }
    
    @Override
    public boolean execute(CommandSender sender, String[] args) {
        sender.sendMessage("Commande principale exécutée !");
        return true;
    }
}

Sous-commande

public class ReloadSub extends SubCommand {
    
    private dAPI plugin;
    
    public ReloadSub(dAPI plugin) {
        this.plugin = plugin;
    }
    
    @Override
    public boolean execute(CommandSender sender, String[] strings) {
        try {
            plugin.getConfigFile().reload(); // Utilisation de YamlFile :)
            plugin.getLangFile().reload();

            sender.sendMessage(plugin.getPlaceholders().applyPlaceholders(
                    plugin.getLangFile().get("reload.reload-success", "&aConfiguration reloaded successfully!")));
        } catch (Exception e) {
            new LoggerUtils(plugin).error("An error occurred while reloading configuration files: " + e.getMessage());

            sender.sendMessage(plugin.getPlaceholders().applyPlaceholders(
                    plugin.getLangFile().get("reload.reload-error", "&cAn error occurred while reloading the configuration. Check the console for more details.")));
        }

        return true;
    }

    @Override
    public boolean hasPermission(CommandSender sender) {
        return sender.hasPermission("dapi.reload");
    }
}

Enregistrement dans le plugin

@Override
public void onEnable() {
    getCommand("example").setExecutor(new ExampleCommand(this));
}

Méthodes disponibles

CommandBase

Méthode
Description

setNoPermissionMessage(String message)

Définit le message à afficher si l'utilisateur n'a pas la permission.

getNoPermissionMessage()

Retourne le message actuel de refus de permission.

registerSubCommand(String name, SubCommand subCommand)

Enregistre une sous-commande avec son nom.

onCommand(CommandSender sender, Command command, String label, String[] args)

Gère l'exécution de la commande principale ou d'une sous-commande.

onTabComplete(CommandSender sender, Command command, String alias, String[] args)

Gère la complétion automatique des sous-commandes et leurs arguments.

SubCommand

Méthode
Description

execute(CommandSender sender, String[] args)

Exécute la logique de la sous-commande.

hasPermission(CommandSender sender)

Vérifie si l'utilisateur a la permission pour exécuter la sous-commande.

tabComplete(CommandSender sender, String[] args)

Retourne une liste d'options pour la complétion automatique.


Avec cette structure, la gestion de vos commandes et sous-commandes devient claire et organisée ✨.

PreviousPlaceholdersNextBase64

Last updated 4 months ago

Was this helpful?

đź““