0
votes

ONCOMMAND () Configuration correctement mais ne s'exécute pas du tout

Mon problème est que j'ai un simple plugin minecraft où je veux juste qu'il exécutait une commande. J'ai fait des commandes avant que les marches soient assez claires pour moi. Mon plugin.yml est configuré correctement (le serveur détecte la commande que j'ai ajoutée et affiche les pages d'aide pour elle, etc.) et la fonction ONCOMMAND () est également configurée de la même manière que dans tous mes autres plugins. Le plugin lui-même fonctionne (principalement la fonction ONENABLE () que j'ai testée) Cependant, sur ONCOMMAND () ne s'appelle tout simplement pas.

J'ai déjà essayé de différents plugin.yml formatés aswell que l'ajout de l'annotation @override à ONCOMMAND () qui Eclipse ne voulait vraiment pas que je fasse. De plus, je sais que mon API que j'utilise (com.pluginbase) travaille de travailler avec elle dans d'autres projets. Il n'y a aucune exception produite lors de l'exécution des commandes, dans la chat, il montre simplement quelle commande je suis entrée. P>

c'est Main.java:

name: Professions
main: org.Professions.Main
version: 1.0
api-version: 1.13
depend: [PluginBase]
commands:
    profession:
        description: Change your profession
        usage: /<command>
        aliases: [p]


1 commentaires

En Intellij, vous pouvez même générer une méthode de surcharge par clic. Il suffit d'étendre une classe et appuyez sur Alt + Insérer et sélectionnez «Méthode de remplacement», afin que Intellij prendra toutes les importations et la signature de méthode correctes. Je suis sûr que Eclipse offre la même fonctionnalité si nécessaire par plugin


3 Réponses :


0
votes

Est-ce la cause de votre problème? XXX


4 commentaires

C'était une erreur (fixe-la peu après avoir posté) mais l'erreur réelle était que j'ai utilisé 'org.bukkit.material.command' (c'est un bloc réel dans le jeu) au lieu de "org.bukkit.command.command" ( Cela fait référence à une commande de ligne de discussion) qui signifiait bien sûr que je demandais un type d'argulation différent de la méthode de la superclasse et que je n'écrase donc pas la méthode


Ok, assez juste alors :) profiter


Pourquoi le args [1] arrayindexoutofboundsException


Vous avez certainement raison. Je "juste" proposé - par déduction ;-) Comme je ne savais pas si les exceptions pouvaient être affichées dans tous les cas (je ne suis pas un expert en plug-in Minecraft), je me suis concentré sur des problèmes de code sans sortie dans la chat .. Je ne me conduise donc qu'à cette ligne argument [1] qui ne semblait pas compatible avec le précédent si et le commentaire correspondant. Par élimination, si je me trompe, le problème devait être plus subtile :)



0
votes

Au lieu de cette commande Enregistrement:

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if (cmd.getName().equalsIgnoreCase("profession")) {
        // code here
    }
}


1 commentaires

@Override n'est pas nécessaire.



1
votes

Vous avez oublié de mettre en œuvre Commandexecuteur et d'enregistrer la commande.

Votre code doit ressembler à ceci: xxx

aussi, je veux vous donner des conseils sur Minecraft codage du plug-in. Vous ne devriez pas faire des commandes dans la classe principale, elles devraient appartenir à une classe de leur propre. Par exemple, votre commande profession irait dans une classe professionnelleCMD avec tous les arguments de ce système (par exemple, / profession donne serait là aussi).


0 commentaires