/!\ Le tuto est long car j'ai essayer de mettre le plus d'image possible ! /!\ Bonjour à tous, aujourd'hui je vais vous faire un petit tutoriel sur la création d'un plugin. Ce plugin changeras le message de bienvenue (Si le joueur ce connecte pour la première fois il auras un message de bienvenue différent des autres) Il donneras un livre au nouveau venu, et changeras le message de déconnexion. /!\ Je fais ce plugin pour la version CB 1.7.2 r0.3 /!\ Tout d'abord ce que vous avez besoin : Eclipse : Merci de vous Connecter/S'inscrire pour voir les liens. Bukkit 1.7.2 r0.3 : Merci de vous Connecter/S'inscrire pour voir les liens. Donc commençons par crée un nouveau projet JAVA comme ça : Quand vous aurez cliquer sur Java Project une page s’ouvrira : Nommer votre project pour moi c'est CMW puis faite NEXT > Aller dans la catégories Libraries. Cette page s'affiche alors : Cliquer sur add External JARS et ajouter le jar bukkit-1.7.2-r0.3 Maintenant il faut crée un package : Clique droit sur src > New > Package Cette page s'ouvre alors à vous : /!\ NE PAS METTRE DE MAJUSCULE DANS LE NOM D'UN PACKAGE /!\ Remplissez le nom de votre package de cette façon me.votrepseudo.nomdevotreplugin ou alors fr.votresite.nomdevotreplugin puis cliquez sur finish. Maintenant clique droit sur votre dossier de projet : Puis New > File Cette page s'ouvre alors à vous : Remplissez la case file name par plugin.yml puis faite Finish Maintenant clique droit sur votre package me.frozenlegend.tuto (pour moi) Puis New > Class Cette page s'ouvre : Il faut nommer votre classe moi je l'est nommé CMWTuto Puis cliquez sur browse à coter du java.lang.Object Suite au prochain post. (Limite de fichier joint atteint)
Une page s'ouvre alors à vous : Ecrivez javaplugin dans Choose a type puis selectioner JavaPlugin - org etc ... Vous pouvez cliquez sur OK puis faire Finish Maintenant éditons le fichier plugin.yml Un fichier plugin.yml ce compose obligatoirement de : name: "Nom de votre plugin" main: "votre package"."votre class" exme.frozen.legend.tuto.TutoCMW) version: "La version de votre plugin" Toute les autres choses sont optionnel. Voila enregistrer votre plugin.yml et la création du projet est terminé ! Passons maintenant au code du Plugin ! Votre class que vous avez crée ce compose de quelque ligne auto générer actuellement : Il faut tout d'abord ajouter juste après extends JavaPlugin: Code: implements Listener Vous verrez que le Listener seras souligné en rouge Il faut mettre votre souris sur le mot souligné attendre 1 seconde est une petite fenêtre devrais apparaître avec une option Import 'Listener' (org.etc....) Vous devrez faire ça pour chaque mot souligné en rouge ! Ne l'oubliez pas c'est important ! Maintenant lions le plugin au serveur avec ce code que l'ont place dans notre class CMWTuto comme sur l'image : Code: public void onEnable(){ getServer().getPluginManager().registerEvents(this, this); } On ajoute maintenant un bout de code pour voir si le joueurs c'est déjà connecter sur le serveur si c'est le cas on lui affiche juste le message de bienvenu voulu : Code: @EventHandler // Ne jamais oublier l'eventhandler il est très important sinon votre plugin ne fonctionneras pas public void onPlayerJoin(PlayerJoinEvent event){ Player player = event.getPlayer(); // On recupère le joueur if(player.hasPlayedBefore()){ // On regarde si le joueurs c'est déjà connecter event.setJoinMessage("§e" + event.getPlayer().getName() + "§6 vient de se connecter"); // Si l'utilisateur c'est déjà connecter avant. On change juste le message ("Player" Join the game) } Par contre si le joueurs ne c'est jamais connecter on lui affiche un message de bienvenu différent et on lui donne le livre des règles ! Code: else // Sinon on fait autre chose pour les nouveau utilisateur (Phrase de bienvenue et le livre des règles) { event.setJoinMessage("§6Bienvenue à §e" + event.getPlayer().getName() + "§6 qui rejoins notre serveur !"); // Utilisateur qui se connecte pour la première fois sur le serveur. ItemStack livre = new ItemStack(Material.WRITTEN_BOOK, 1); BookMeta meta = (BookMeta) livre.getItemMeta(); meta.setTitle("§6Règles du serveur SLCraft"); // 1er Phrases quand on passe la souris sur le livre meta.setAuthor("SLCraft Staff"); // 2ème Phrases quand on passe la souris sur le livre meta.setLore(Arrays.asList("§3Ce livre contient", "§ales règles du serveur")); // 3ème Phrases quand on passe la souris sur le livre meta.setPages(Arrays.asList( "§4§lSommaire :§0 \n \n n°1 : §cLe grief §0\n n°2 : §cLe vol§0 \n n°3 : §cLe cheat§0 \n n°4 : §cL'usebug §0\n n°5 : §cSystèmes automatiques§0 \n n°6 : §cPortail vers le nether§0", "§2§lArticle 1 : Le grief§0 \n \n Il est interdit de détruire ou de modifier les créations appartenant à autrui. Cela s'appelle le grief et un tel acte est puni d'un banissement définitif. ", "§2§lArticle 2 : Le vol§0 \n \n Il est interdit de voler, que ce soit dans les coffres des autres, même s'ils ne sont pas protégés ou bien en ramassant les objets d'un joueur sur le sol.", "§2§lArticle 3 : Le cheat§0 \n \n Toute forme de triche est interdite. Cela comprend les mods, en effet, ils permettent d'avoir un avantage sur les autres joueurs. Toute personne trichant sera bannie définitivement.", "§2§lArticle 4 : L'usebug§0 \n \n Tous les bugs, qu'ils proviennent de Minecraft ou de Minebox, permettant de générer des ressources ou d'exploiter d'autres failles qui relèvent du cheat, sont interdits.", "§2§lArticle 5 : Systèmes automatiques§0 \n \n Tout système permettant de générer des items ou de l’expérience automatiquement, comme les tours à mobs, est interdit.", "§2§lArticle 6 : Les portails privés vers le nether§0 \n \n Il est défendu de créer de portails vers le nether. Empruntez le portail dans la salle des portail du spawn.", "§4§lJ'aime les licornes.")); livre.setItemMeta(meta); event.getPlayer().getInventory().addItem(livre); // Comme c'est la première fois qu'il se connecte on lui donne le livre des règles. } Maintenant on change le message de déconnexion pour tout le monde : Code: @EventHandler public void onPlayerQuit(PlayerQuitEvent event){ event.setQuitMessage("§e" + event.getPlayer().getName() + "§6 vient de se déconnecter."); // On change le message de déconnexion ! } Spoiler: Le code entier Code: package me.frozenlegend.tuto; import java.util.Arrays; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BookMeta; import org.bukkit.plugin.java.JavaPlugin; public class CMWTuto extends JavaPlugin implements Listener{ public void onEnable(){ getServer().getPluginManager().registerEvents(this, this); } @EventHandler // Ne jamais oublier l'eventhandler il est très important sinon votre plugin ne fonctionneras pas public void onPlayerJoin(PlayerJoinEvent event){ Player player = event.getPlayer(); // On recupère le joueur if(player.hasPlayedBefore()){ // On regarde si le joueurs c'est déjà connecter event.setJoinMessage("§e" + event.getPlayer().getName() + "§6 vient de se connecter"); // Si l'utilisateur c'est déjà connecter avant. On change juste le message ("Player" Join the game) } else // Sinon on fait autre chose pour les nouveau utilisateur (Phrase de bienvenue et le livre des règles) { event.setJoinMessage("§6Bienvenue à §e" + event.getPlayer().getName() + "§6 qui rejoins notre serveur !"); // Utilisateur qui se connecte pour la première fois sur le serveur. ItemStack livre = new ItemStack(Material.WRITTEN_BOOK, 1); BookMeta meta = (BookMeta) livre.getItemMeta(); meta.setTitle("§6Règles du serveur SLCraft"); // 1er Phrases quand on passe la souris sur le livre meta.setAuthor("SLCraft Staff"); // 2ème Phrases quand on passe la souris sur le livre meta.setLore(Arrays.asList("§3Ce livre contient", "§ales règles du serveur")); // 3ème Phrases quand on passe la souris sur le livre meta.setPages(Arrays.asList( "§4§lSommaire :§0 \n \n n°1 : §cLe grief §0\n n°2 : §cLe vol§0 \n n°3 : §cLe cheat§0 \n n°4 : §cL'usebug §0\n n°5 : §cSystèmes automatiques§0 \n n°6 : §cPortail vers le nether§0", "§2§lArticle 1 : Le grief§0 \n \n Il est interdit de détruire ou de modifier les créations appartenant à autrui. Cela s'appelle le grief et un tel acte est puni d'un banissement définitif. ", "§2§lArticle 2 : Le vol§0 \n \n Il est interdit de voler, que ce soit dans les coffres des autres, même s'ils ne sont pas protégés ou bien en ramassant les objets d'un joueur sur le sol.", "§2§lArticle 3 : Le cheat§0 \n \n Toute forme de triche est interdite. Cela comprend les mods, en effet, ils permettent d'avoir un avantage sur les autres joueurs. Toute personne trichant sera bannie définitivement.", "§2§lArticle 4 : L'usebug§0 \n \n Tous les bugs, qu'ils proviennent de Minecraft ou de Minebox, permettant de générer des ressources ou d'exploiter d'autres failles qui relèvent du cheat, sont interdits.", "§2§lArticle 5 : Systèmes automatiques§0 \n \n Tout système permettant de générer des items ou de l’expérience automatiquement, comme les tours à mobs, est interdit.", "§2§lArticle 6 : Les portails privés vers le nether§0 \n \n Il est défendu de créer de portails vers le nether. Empruntez le portail dans la salle des portail du spawn.", "§4§lJ'aime les licornes.")); livre.setItemMeta(meta); event.getPlayer().getInventory().addItem(livre); // Comme c'est la première fois qu'il se connecte on lui donne le livre des règles. } } @EventHandler public void onPlayerQuit(PlayerQuitEvent event){ event.setQuitMessage("§e" + event.getPlayer().getName() + "§6 vient de se déconnecter."); // On change le message de déconnexion ! } } Suite au prochain post(Limite d'image encore )
On fini par comment avoir son plugin en .Jar ! Vous avez juste a faire clique droit sur votre fichier de projet et cliquer sur export comme ceci : Choisissez ou vous voulez qu'il sois exporter et son nom en cliquant sur Browse ! Voila c'est la fin de se long tutoriel ! Il ne vous reste plus cas tester votre plugin ! J'ai mis le mien à télécharger dans les fichier attachés ! Cordialement, FrozenLegend
Ouais mais t'a pas expliquer comment mettre des commandes et tout sinon, tuto tres complet quand même
Les commandes sont inutile pour le plugin's crée dans le tuto, et quand on passe au commande ça devient tout de suite plus intéressant mais aussi plus complexe je voulais pas prendre le risque de "perdre" les gens qui débutent.
Bah logiquement un plugin c'est pour un serveur donc si on suis cette logique oui ! Plugin : Serveur Mod : Client (après tu peux avoir un serveur moddé mais faut un launcher)
Cool ,je crée 3 plugin en tout grâce au TUTO jais un plugin avec des (un guns pour l'instant le temps que je trouve un système avec avec le rechargement si tu veu me contact , pour 1 plugin de vie (/set [ nurmero des cœur ajoute]) des d'autre truc
Il y a aussi une autre méthode on peut faire des classes secondaires perso c'est ce que j'utilise (et je savais coder en Java avant la parution du tutoriel). Je ferais problablement un tutoriel sur YouTube !
Le tutoriel est très loin d'être complet, c'est juste pour expliquer quelque "base". Aucune utilité d'utiliser les class pour un petit plugin comme celui que j'ai expliquer ..
Dans son plugin c'est pas nécessaire ^^ Ps : @FrozenLegend Tu peux faire un tuto pour faire un plugin qui modifie la liste des plugins? (Sinon, j'arriverai à me débrouiller x))
Alors je t'invite à te rendre sur la javadoc afin de savoir tout ce que tu veux savoir, ensuite si tu veux modifier ce que le /pl renvois, il faut que tu utilise l'event PlayerCommandPreprocessEvent cet event s'active lorsqu'une personne rentre une commande dans le chat, il te suffit de récupéré le message, de vérifier si il s'agit du /pl, de cancel l'event et ensuite d'envoyer un message custom. PHP: @EventHandlerpublic void onPlayerCommand(PlayerCommandPreprocessEvent e){ String msg = e.getMessage(); /* On récupère la commande */ String[] cmd = msg.split(" "); /* On supprime les espaces */ if(cmd.length == 1 && (cmd[0].equalsIgnoreCase("/pl")) /* On récupère la taille de la commande pour être sur que le joueur n'a pas juste mis un / et si la commande est /pl */ { Player p = e.getPlayer(); p.sendMessage(ChatColor.GREEN + "plugin1, plugin2, plugin3, ect..."); e.setCancelled(true); }} A test car je l'ai fait sans ide donc je sais pas si il y a des erreurs. Ps: le lien de la javadoc Spigot Merci de vous Connecter/S'inscrire pour voir les liens. Pps: Pour ajouter la javadoc directement dans votre projet clic droit->properties->Javadoc Location et il suffit de mettre le lien de la javadoc