Nashoba 254 Posté : 18 septembre 2016 (modifié) Sommaire: Base de l'addon Créer un effet Créer une condition Créer une expression Créer un évent Créer un type --------------------------- Créer un effet On va commencer par le plus facile. Je rappelle, un effet permet d’exécuter du code sans renvoyer d'informations en échange. Tout d'abord on va choisir l'effet à créer et on va créer une classe où on veut. Par exemple je crée un package « fr.nashoba24.wolvsk.effets » et je crée une classe nommée EffSendMessageToPlayer car je veux envoyer un message à un joueur grâce à cette fonction. Ensuite je vais coller dans cette nouvelle classe le code suivant, puis je l'éditerai : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. La fonction init() permet d'enregistrer les éventuelles variables et de retourner vrai si tout est bon (que les variables sont bonnes par exemple) La fonction toString() retourne le nom de l'effet, qui sera éventuellement utilisé dans des messages d'erreur par exemple. Pour finir, la fonction execute() est appelée quand l'effet est exécuté. Il contiendra donc votre code pour réaliser un effet en Skript. Voyons d'abord la fonction init(). L'argument expr[] retourne les variables dont vous aurez éventuellement besoin dans votre fonction execute(). matchedPattern renvoie le numéro du pattern correspondant (on verra plus tard qu'on peut avoir plusieurs patterns pour un(e) même effet/évent/condition). Pour les 2 autres je ne vais pas vous cacher que je n'en ai jamais eu besoin donc je ne sais pas à quoi ça sert Maintenant on va voir comment enregistrer une variable. Tout d'abord, après Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. on va rajouter une voir plusieurs lignes avec les variables dont vous aurez besoin. Vous devez la déclarer comme ceci : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Ensuite dans init(), on va changer la valeur de la variable. Pour ceci on ajoute autant de lignes que nécessaire avec Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. La numéro correspond au numéro de l'objet envoyé par Skript. Pour le trouver, il vous suffit de compter le numéro de l'objet dans le pattern. Par exemple avec Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Là, l'objet %string% aura pour numéro 0 et player aura pour numéro 1. Voyons voir maintenant à quoi ressemble ma class si j'enregistre les variables pour envoyer un message. J'aurais besoin de variable : le message et le joueur. Le pattern que j'utilise est « send %string% to %player% » Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Maintenant attaquons nous à la fonction toString(). C'est relativement simple, il faut retourner un String avec le nom de la fonction qui sera éventuellement utilisé par exemple dans des message d'erreurs. Ici je vais retourner « send message to player ». J'obtiens donc : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Pour finir il faut remplir la fonction execute(). Vous pouvez mettre ici n'importe quel code, qui fera au final ce que la fonction demande. Ici je dois faire en sorte d'envoyer le message au joueur. Vous aurez sûrement besoin de variable, je vais donc vous montrer comment récupérer une variable. Il faut tout simplement faire ceci : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Au final ma class ressemble à ça : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Bien, il reste une seule chose à faire : enregistrer l'effet dans Skript. Pour ceci, il faut placer la ligne suivante dans une fonction appelée au démarrage du serveur (par exemple onEnable(), dans la classe principale). Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. A la place de VotreClass, vous mettez le nom de la classe contenant l'effet et à la place de pattern vous mettez votre pattern sous forme de String. Si vous voulez en mettre plusieurs, vous pouvez mettre une virgule et mettre d'autres patterns après. Pour mon exemple ça me donne ça : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Modifié 26 juillet 2018 par Nashoba 3 Partager ce message Lien à poster Partager sur d’autres sites
Snowach 288 Répondu : 1 octobre 2016 Ça ne fonctionne pas =( À chaque fois que je rajoute la classe pour créer l'effet et que je suis ton tutoriel, le plugin n'est pas détecté... Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 1 octobre 2016 Ça ne fonctionne pas =( À chaque fois que je rajoute la classe pour créer l'effet et que je suis ton tutoriel, le plugin n'est pas détecté... Il n'est pas détecté sur ton serveur Minecraft? Partager ce message Lien à poster Partager sur d’autres sites
Snowach 288 Répondu : 1 octobre 2016 Il n'est pas détecté sur ton serveur Minecraft? Ouep, comme si il n'existe pas ;( Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 1 octobre 2016 As-tu créé le fichier plugin.yml? As-tu une/des erreur(s) dans la console? Quand tu fais /plugins il est en rouge ou il n'est pas dedans? Partager ce message Lien à poster Partager sur d’autres sites
Snowach 288 Répondu : 1 octobre 2016 As-tu créé le fichier plugin.yml? As-tu une/des erreur(s) dans la console? Quand tu fais /plugins il est en rouge ou il n'est pas dedans? Oui je l'ai créé, non je n'ai pas d'erreurs, non il n'est pas dedans. Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 1 octobre 2016 Mmmmhh... As-tu déjà créé un plugin Java auparavant ou c'est ton premier? Partager ce message Lien à poster Partager sur d’autres sites
Snowach 288 Répondu : 1 octobre 2016 J'avais déjà créé des plugins mais ils étaient trop basiques genre le broadcast en suivant des tutoriaux ;) Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 1 octobre 2016 Le problème pourrait venir de beaucoup d'endroit... As-tu fais attention où tu as exporté ton plugin? Partager ce message Lien à poster Partager sur d’autres sites
Snowach 288 Répondu : 1 octobre 2016 Le problème pourrait venir de beaucoup d'endroit... As-tu fais attention où tu as exporté ton plugin? Oui, je l'ai mis dans mon dossier plugin de Minecraft. Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 1 octobre 2016 Si le problème venait du code ou du plugin.yml il devrait y avoir au moins 1 ligne d'erreur dans la console... Donc s'il est au bon endroit et qu'il n'y a pas d'erreur dans la console je ne vois pas pourquoi ça ne marche pas :eek: Partager ce message Lien à poster Partager sur d’autres sites
Snowach 288 Répondu : 1 octobre 2016 Attend je vais voir mais en général quelles sont les erreurs quand un plugin bug ? Le message ressemble à quoi ? Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 1 octobre 2016 Tu dois voir une erreur style : fr.snowach.chpa.plugin Partager ce message Lien à poster Partager sur d’autres sites
Snowach 288 Répondu : 1 octobre 2016 Tu dois voir une erreur style : fr.snowach.chpa.plugin Donc une erreur qui viendrait du package ? Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 1 octobre 2016 Au pire tu peux m'envoyer les logs? Partager ce message Lien à poster Partager sur d’autres sites
Snowach 288 Répondu : 1 octobre 2016 Au pire tu peux m'envoyer les logs? Je l'héberge en localhost donc je dois tout réécrire :x Ce n'est pas grave je vais essayer avec les expressions ou les conditions pour voir ;) PS: N'hésite pas, dans les prochains tutoriaux, à expliquer en profondeur à quoi servent tel ou tel truc =D Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 1 octobre 2016 Je l'héberge en localhost donc je dois tout réécrire :x Ce n'est pas grave je vais essayer avec les expressions ou les conditions pour voir ;) PS: N'hésite pas, dans les prochains tutoriaux, à expliquer en profondeur à quoi servent tel ou tel truc =D As-tu bien fait attention de placer le fichier plugin.yml en dehors de tes packages ? Sinon un like pour tout tuto @Nashoba ! Partager ce message Lien à poster Partager sur d’autres sites
Snowach 288 Répondu : 2 octobre 2016 As-tu bien fait attention de placer le fichier plugin.yml en dehors de tes packages ? Sinon un like pour tout tuto @Nashoba ! Oui, il est bel et bien en dehors des packages. Partager ce message Lien à poster Partager sur d’autres sites
Mrweefle 0 Répondu : 2 octobre 2016 Très bon tuto! :D Par contre pour cela: "Skript.registerEffect(EffSendMessageToPlayer.class, "(send|message) %string% to %player%");", tu n'explique pas qu'il faut le mettre dans la classe principale! Je pense que c'est le problème de Snowach Partager ce message Lien à poster Partager sur d’autres sites
Snowach 288 Répondu : 2 octobre 2016 Très bon tuto! :D Par contre pour cela: "Skript.registerEffect(EffSendMessageToPlayer.class, "(send|message) %string% to %player%");", tu n'explique pas qu'il faut le mettre dans la classe principale! Je pense que c'est le problème de Snowach Ah oui c'est sûrement le problème x') Je vais réessayer, je vous donne des nouvelles une fois testé. Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 2 octobre 2016 Très bon tuto! :D Par contre pour cela: "Skript.registerEffect(EffSendMessageToPlayer.class, "(send|message) %string% to %player%");", tu n'explique pas qu'il faut le mettre dans la classe principale! Je pense que c'est le problème de Snowach C'est possible aussi xD Je n'y avais pas fait attention Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 2 octobre 2016 En réalité ce n'est pas obligé dans la classe principale ^^. Il faut juste le mettre dans une fonction appelée au démarrage (en réalité c'est même quand on veut, mais je ne vois pas l'utilité d'activer un effet 10 minutes après le démarrage ^^) Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 2 octobre 2016 En réalité ce n'est pas obligé dans la classe principale ^^. Il faut juste le mettre dans une fonction appelée au démarrage (en réalité c'est même quand on veut, mais je ne vois pas l'utilité d'activer un effet 10 minutes après le démarrage ^^) En réalité moi non plus je ne vois pas l'utilité :p Partager ce message Lien à poster Partager sur d’autres sites
Mrweefle 0 Répondu : 3 octobre 2016 Bah je suis pas un pro du tout en java mais moi dans la classe de l'effet je pouvais pas la mettre donc je l'ai mise dans la classe principale :D Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 4 octobre 2016 Bah je suis pas un pro du tout en java mais moi dans la classe de l'effet je pouvais pas la mettre donc je l'ai mise dans la classe principale :D Euh tu as mis quoi dans ta classe Partager ce message Lien à poster Partager sur d’autres sites