|
|
Vous n'êtes pas identifié(e).
Les préférés
Les pires
#1551 Re : Discussions publiques, suggestions » [Tuto Obsolete] Créez votre premier plugin pour bukkit » 20 May 2011 10:58Et pourquoi avoir créé le package net.thgbm.forum.Utils ? Vous vous souvenez, au début de ce tuto je vous avez demandé de créer un package 'net.thgbm.forum.Utils' en expliquant qu'on y rangerait certaines de nos fonctions ? Je vous propose d'y créer une classe 'Message' qui nous permettra de définir des fonctions comme:
qui seront utiles pour envoyer respectivement :
Vous voyez l'idée ? On va créer ces fonctions car il y a de fortes chances pour qu'on les utilisent beaucoup dans nos développements et qu'elles sont toutes les 3 de même nature. Concrètement on cherche à faire quoi ? Et bien concrètement on souhaite remplacer notre envoi de message de notre HelloPlayerListener: Par ceci : Et on pourra l'utiliser à chaque fois que l'on souhaite envoyer des messages à un joueur avec nos couleurs. Mise en place Faites un clic droit sur votre package 'net.thgbm.forum.Utils' et 'New' -> 'Class'. Voici le code à y insérer : C'est tout ! Maintenant modifions notre HelloPlayerListener :
#1552 Re : Discussions publiques, suggestions » [Tuto Obsolete] Créez votre premier plugin pour bukkit » 20 May 2011 10:53Une meilleure gestion des commandes utilisateurs Dans notre exemple l'action faites lors de la saisie '/salut' est gérée dans notre classe principale. Il serait peut être préférable de la 'ranger' ailleurs car pour l'instant on n'a qu'une commande mais que se passera t'il quand on en ajoutera ? Si on change rien la classe principale va s'alourdir et devenir de moins en moins lisible. A mon goût (oui vous savez "les goûts et les couleurs"..) je préfère 'ranger' mes commandes dans un package séparé et je vais vous montrer une méthode pour se faire. Créez le package 'net.thgbm.forum.Commands' Vous devez créer le package 'net.thgbm.forum.Commands', si vous ne vous rappelez plus comment faire remontez en haut de ce tutoriel. Créez dans ce package une classe par commande Nous avons pour l'instant qu'une seule commande : salut. Dans cette classe on va retrouver la méthode utilisée dans la classe principale mais sera donc exécutée dans le SalutCommand, voici le code : Il faut implémenter CommandExecutor pour accéder on onCommand(). Devinez quoi, ça sera écrit en bleu.... Modification sur la classe principale Hello Il faut maintenant modifier notre classe principale pour envoyer la gestion de la commande /salut vers notre classe SalutCommand. Commençons par ajouter nos imports : Ensuite on supprime notre commande onCommand() et dans le onEnable() on va rediriger la gestion de la commande /salut vers notre SalutCommand : Regénez votre .jar et ça devrait fonctionner. Conclusion Maintenant que notre commande est 'rangée' dans son package vous vous rendez compte que la classe principale reste claire et que la gestion de la commande nécessite peu de codes au final.
#1553 Re : Discussions publiques, suggestions » [Tuto Obsolete] Créez votre premier plugin pour bukkit » 20 May 2011 10:41Générer le .jar exploitable de votre mod Votre mod est fait, il ne vous reste plus qu'à générer un .jar pour finalement le placer dans votre dossiers 'plugins/' se trouvant dans votre dossier du serveur Bukkit. Pour générer votre.jar :
#1554 Re : Discussions publiques, suggestions » [Tuto Obsolete] Créez votre premier plugin pour bukkit » 20 May 2011 10:40Le fichier plugin.yml indispensables références pour votre mod Le fichier plugin.yml, comme son extension volontairement explicite l'indique, doit respecter le standard YAML.
Dans les informations à lui fournir on retrouve :
Le YAML n'est pas balisé comme le html par exemple ou le bbcode mais est structuré d'une autre manière ou les sauts de ligne et espaces sont très importants et ont une signification précise. Ceci étant dis je précise également que selon les éditeurs de texte la tabulation ne se retranscrit pas de la même manière dans le fichier et est souvent cause de mauvaises interprétation du fichier .yml. Si on prends notre exemple voici à quoi ressemblerait notre fichier plugin.yml avec le minimum d'informations : La propriété 'name' permet de faire cohabiter aussi plusieurs commandes identiques partagées par plusieurs mods. Ceci étant tout de même à éviter mais sachez que si par exemple vous avez créé une commande '/home' et que cette commande est déja définie par un autre mod vous pouvez l'appeler en jeu par '/Hello:home' dans notre exemple <-- ceci étant à vérifier. La propriété 'main' doit représenter le nom complet, package et nom de fichier inclut sans le '.java' ou le '.class', de la classe qui étends JavaPlugin. La propriété 'version' est facile à comprendre, c'est donc la version de votre release. La propriété 'website' si vous en avez un. La propriété 'authors' là c'est de vous dont on parle La propriété 'description', une petite description de ce que fait votre mod. Votre plugin contient des commandes utilisateurs ? Pour éviter que les commandes d'un mod soient écrasées par celles d'un autre et pour instaurer une certaine cohésion vous devez préciser dans votre plugin.yml les commandes utilisateurs que vous avez créés de la forme : Ce schéma doit être respecté pour toutes vos commandes utilisateurs, le 'usage' sera le message en réponse d'une mauvaise utilisation de la commande '/salut'. Ce qui nous donnerait donc en combinant le tout : Mais pourquoi déclarer mes commandes utilisateurs ? Sauf erreur de ma part voici le pourquoi. Avant cette structure .yml le serveur devait sûrement user plus de ressources car, toujours sauf erreur de ma part, il envoyait cet événement à tous les mods un par un jusqu'à ce qu'il y en ait un qui le traite. C'était une des raisons qui me faisait dire à l'époque qu'il valait mieux créer tout ce dont on a besoin plutôt qu'entasser les mods. Où placer ce fichier ? Il faut que ce fichier se trouve au même niveau que votre dossier 'src'. Dans le .jar après la génération il se trouvera donc à la racine du .jar. #1555 Re : Discussions publiques, suggestions » [Tuto Obsolete] Créez votre premier plugin pour bukkit » 20 May 2011 10:37Les listeners, ceux qui sont à l'écoute des événements captés et agissent Dans notre classe principale Hello nous avons précisé que nous voulons recevoir les événements PLAYER_JOIN, PLAYER_INTERACT et BLOCK_DAMAGE pour pouvoir ajouter nos modifications. Ces événements peuvent être captés par 2 types de listener : blockListener et playerListener dont il va falloir hériter. Notre listener qui se chargera des événements de type PLAYER a été déclaré dans Hello comme HelloPlayerListener et celui qui s'occupera de ceux de type BLOCK est déclaré comme HelloBlockListener. HelloPlayerListener Comme nous avons créé notre package pour les listeners au début nous allons créer notre classe en faisant un clic droit sur le package 'net.thgbm.forum.Listeners' et en choisissant 'New' -> 'Class'. Le fichier s'ouvre avec le code auto-généré suivant : Nous allons donc importer le nécessaire de l'API et hériter de playerListener puis attacher la classe principale pour interagir: Nous saluer à la connexion Nous devons maintenant traiter nos deux objectifs en commençant par demander au serveur de nous saluer dés qu'on se connecte, pour cela nous allons utiliser la fonction onPlayerJoin() de playerListener et voici donc le code de ce que l'on souhaite : Conclusion de notre HelloPlayerListener Vous pouvez vous rendre compte que notre code efficace se limite à quelques lignes, le plus long étant de structurer le tout et d'importer/instancier le nécessaire. Voici le fichier complet : HelloBlockListener Ça va être la même logique sauf qu'on hérite de blockListener et pas de playerListener. Voici comment être prévenu d'un block cassé. Nous avons donc nos deux listener avec nos nouvelles actions de codé. #1556 Re : Discussions publiques, suggestions » [Tuto Obsolete] Créez votre premier plugin pour bukkit » 20 May 2011 10:36La classe principale, celle qui hérite de JavaPlugin de bukkit Maintenant que nos packages principaux sont faits on va s'attaquer à notre première classe. Création de notre classe Hello Faites un clic droit sur le package 'net.thgbm.forum.Hello' et choisissez 'New' -> 'Class'. Dans la fenêtre de création assisté de Classe vous avez juste à préciser le nom de la classe à créer : Hello et valider en cliquant sur 'Finish'. Notre fichier Hello Notre fichier s'ouvre donc et vous voyez le code minimal généré par Eclipse Dans ce code nous allons commencer par importer le nécessaire pour notre classe et hériter de JavaPlugin en modifiant le fichier comme suit : Vous avez du remarquer que votre Eclipse vous signale des erreurs ou des avertissements. Comme vous venez d'hériter de JavaPlugin il vous faut obligatoirement définir 2 fonctions qui sont : Ces deux fonctions sont les 'accroches' au serveur. onDisable() ici ce sera tout le ménage à faire lorsque votre mod s'arrète. Ceci étant dit modifiez votre fichier en y ajoutant ces 2 fonctions : Dans le onEnable() vous avez certainement remarqué que j'appele une autre fonction qui est registerEvents(). Cette fonction va attacher les évenements serveur souhaités pour pouvoir les récupérer quand activés et ajouter nos modifications. Notre registerEvents() Voila la partie qui nécessite le plus de connaître les finalités de notre mod. Les événements à capter pour cela sont donc respectivement : Vous remarquerez donc que 2 de ces 3 types d’événements sont PLAYER et un BLOCK. On revient à ce que je vous disais au début de ce tuto et on voit là nos 2 familles d’événements principaux le blockListener et le playerListener. Nous allons donc ajouter à notre code le nécessaire pour capter ces 3 types d’événements. Nous saluer lorsqu'on tape /salut Voici maintenant le code pour que le serveur nous salut sur demande: Le code ressemblera à cela : Cette méthode onCommand() permet de lancer des actions donc sur des commandes lancées dans le tchat. Pour notre projet cela est suffisant. Dans le code vous voyez que je déclare 2 Listeners : HelloBlockListener et HelloPlayerListener : ce sont nos Listeners qui va falloir créer et qui feront le boulot qu'il reste. #1557 Re : Discussions publiques, suggestions » [Tuto Obsolete] Créez votre premier plugin pour bukkit » 20 May 2011 10:35Création d'un nouveau projet dans Eclipse Vous avez les pré-requis alors on peut se lancer. Aprés avoir démarré votre Eclipse allez dans le menu 'File' -> 'New' -> 'Java Project'. Vous devez arriver à une fenêtre comme celle ci : Dans 'Project name' vous indiquez le nom de votre projet. Pour notre exemple il va donc s'appeler 'Hello'. On va se contenter de cela, cliquez donc sur 'Finish'. Ajoutez la référence de l'API bukkit Votre projet étant créé vous le voyez apparaître dans l'onglet 'Package explorer' de Eclipse Vous vous rappelez que vous avez téléchargé le .jar de l'API de bukkit. Maintenant il vous faut la référencer dans votre projet.
Création de notre premier package Notre package sera pour l'exemple : 'net.thgbm.forum.Hello', alors cliquez droit sur le projet 'Hello' et choissisez 'New' -> 'Package'. Refaites la même manip pour vous familiariser au 'rangement' pour le package 'net.thgbm.forum.Listeners'. Allez pour vous entraîner refaites la encore une fois pour le package 'net.thgbm.forum.Utils' dans lequel on y rangera nos fonctions. #1558 Re : Discussions publiques, suggestions » [Tuto Obsolete] Créez votre premier plugin pour bukkit » 20 May 2011 10:33Concepts essentiels Petit rappel sur les packages java Un package Java, par exemple net.thgbm.forum se retranscrits dans l'archive .jar comme une arborescence de dossier, ce qui nous donne pour cet exemple la structure de dossier suivante : Gardez bien cela en mémoire pour vous permettre de bien 'ranger' vos futures classes, interface & co. Pensez donc à bien structurer votre code pour bien 'ranger'. Les événements On peut interagir grâce aux mods sur différents aspects du serveur. Ces actions sur lesquelles on peut agir sont en fait des événements. Pour pouvoir les modifier ou ajouter de nouvelles fonctions dés qu'un de ces événements intervient il vous faut les 'capter'. #1559 Re : Discussions publiques, suggestions » [Tuto Obsolete] Créez votre premier plugin pour bukkit » 20 May 2011 10:32Les pré-requis
#1560 Discussions publiques, suggestions » [Tuto Obsolete] Créez votre premier plugin pour bukkit » 20 May 2011 10:31
Si vous souhaitez diffuser ce tutoriel je vous demande juste la gentillesse de me citer. TUTO OBSOLETE Créez votre premier pluginPour ceux parmi vous ayant des connaissances en Java ou langage orienté objet et avec l'envie de créer votre propre mod je vous propose un tutoriel imagé pour vous aider à démarrer. Sommaire
Bien démarrer Avant de démarrer il faut savoir où l'on va. Notre projet Hello Je vous propose un projet basique pour tenter de voir ensemble comment démarrer un mod.
Cet exemple plutôt basique et sans grand intérêt dans le jeu va nous permettre de voir les 2 grandes familles d’événements: Ce ne sont pas les seules mais les principales donc, après tout dépend de ce que doit faire votre mod. #1561 Discussions publiques, suggestions » Minecraft peut sortir de sa phase beta le 11/11/2011 » 19 May 2011 22:40
Ce que laisse présager ce poste de Notch: #1562 Re : Détente, flood:p » Terraria - Achat groupé » 19 May 2011 07:33On reste trois pour l'instant... #1563 Re : Réclamations, éventuelles Demandes de Ban » Cratere au mcdonald » 18 May 2011 09:07A propos de TNT, dans les mods installés il y en a pas un qui logs tous les usages de cet item ? #1564 Re : Détente, flood:p » Terraria - Achat groupé » 17 May 2011 18:23Alors pour l'instant sauf erreur de ma part on est 3 : Il nous manquerait un 4°. #1565 Re : Détente, flood:p » Terraria - Achat groupé » 17 May 2011 16:51Ben un parmis nous fournis son paypal et achetes le pack. #1566 Re : Réclamations, éventuelles Demandes de Ban » incinerateur public » 17 May 2011 15:35J'espere que le comité n'est pas contre le fait de réparer ce que l'on voit de déteriorer dans ce genre d'exemple en se promenant, un bloc ou deux, une dalle...? #1567 Détente, flood:p » Terraria - Achat groupé » 17 May 2011 13:18
Plop, vous avez peut être entendu parler de Terraria le clone 2D de Minecraft disponible sous Steam. Alors je me demandais si quelqu'un d'autre que moi serait intéressé par ce jeu et voir si un achat groupé ne serait pas possible. Voilou, dites moi... #1568 Re : Réclamations, éventuelles Demandes de Ban » ban de blackior ? » 16 May 2011 19:18Genuflexion devant chaque habitant ? Mouarfhihi ca devient la gestapo le Gros Oeil. #1569 Re : PLUGINS Ajoutés, Améliorations du jeu » Propositions de nouvelles règles / plugins » 16 May 2011 17:03Ben là avoir 2 versions de minecraft sur son poste vaut le coup parce que je te dis pas à chaque mis à jour la panique si en plus du coté serveur faut s'occuper du coté client. Pour ma part je serais pour tester si c'est 'optionnel'. #1570 Re : INSCRIPTION DES NOUVEAUX JOUEURS » [ACCEPTE] presentation Larousse » 16 May 2011 11:42Ah Ah Ah ... alors bienvenue #1571 Re : Discussions publiques, suggestions » statut de builder » 15 May 2011 21:32Le nombre de commandes disponibles... #1572 Re : INSCRIPTION DES NOUVEAUX JOUEURS » [ACCEPTE] presentation Larousse » 15 May 2011 20:09larousse a écrit :
Je sais c'était pas drôle.. #1573 Re : Réclamations, éventuelles Demandes de Ban » La pelle et la pioche brulés - demande de ban benjamindeph » 15 May 2011 20:06Moi je propose d'utiliser son mail pour l'inscrire dans tous les sites de prOn... #1574 Re : INSCRIPTION DES NOUVEAUX JOUEURS » [ACCEPTE] presentation Larousse » 15 May 2011 18:03Salut à toi et j'espere pour toi que tu seras accepté. #1575 Re : Vos projets, Vos créations » Construire une megapole du début du 21ième siècle » 15 May 2011 12:29Il y a le gratte-ciel de tisuisse avec king kong peut être... |