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]
3 Réponses :
Est-ce la cause de votre problème?
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] code doit-il être le problème? Si args n'a pas eu d'élève avec l'index 1 dans le tableau, le plugin lancerait un
arrayindexoutofboundsException code>
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 :)
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 } }
@Override n'est pas nécessaire.
Vous avez oublié de mettre en œuvre Commandexecuteur et d'enregistrer la commande.
Votre code doit ressembler à ceci: p> 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 code> profession code> irait dans une classe professionnelleCMD code> avec tous les arguments de ce système (par exemple,
/ profession donne code> serait là aussi). p> p>
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