Tutoriel Bukkit
-
Section 1: Introduction
:::
Pour commencer, il faut savoir qu’un plugin contrairement à un mod ne peut pas ajouter de blocs, d’entité ou d’item.Un plugin peut seulement se servir de ce qu’il y a déjà dans le jeu, c’est pour cela que les plugins ne sont que du côté serveur et que le joueur n’a pas besoin de l’installer sur son Minecraft.
La base du plugin c’est les événements, lorsqu’un joueur détruit un bloc, Bukkit ira voir qui a besoin d’utiliser cet “Event” et lui enverra les informations nécessaires.
Ensuite, le plugin peut se servir de ces événements pour envoyer des messages aux joueurs, modifier son inventaire, le téléporter, etc…
Vous verrez dans cette section plusieurs tutoriels qui vous montreront des parties de code que vous devrez assembler ensemble à votre manière pour en faire ce que vous voulez.
:::Je profite de l’espace entre 2 sections pour vous dire que si vous n’avez aucune (ou presque) connaissance en Java ou en programmation, je vous invite à suivre le cours du site du zéro. Il n’est pas nécéssaire de le suivre au complet (ça prend 3 mois comme indiqué sur la page ). Vous pouvez suivre seulement la partie 1: Bien commencer en Java .
Section 2: Préparation
:::Tout d’abord ouvrez éclipse, si vous n’avez pas de workspace (espace de travail) déjà faite, créez vous un dossier qui contiendra le(s) plugin(s) que vous ferez et ajoutez-y un dossier “workspace”. Lorsque c’est fait, faites “browse” et allez choisir votre dossier workspace.
Éclipse va charger le tout et vous aurez éclipse d’ouvert.
Dans votre dossier qui contiendra les plugins, téléchargez et ajoutez la dernière build (stable) de bukkit (et pas craftbukkit, il y a une différence).Créez vous un “Java project”, mettez le nom que vous désirez. Décochez “use default location” et allez vous créer un nouveau dossier dans le dossier des plugins qui aura le même nom que votre projet. À ce moment vous verrez beaucoup de trucs devenir grisé, c’est normal ne vous inquiétez pas :). Faites “next” tout en bas de la fenêtre.
Ensuite, allez sur l’onglet Librairies:
Faites “Add external JARs” et allez séléctionner votre build de bukkit:
Finalement, appuyez sur “Finish”.
Voilà ! Votre projet est maintenant prêt à être utilisé ! Créez vous un package qui contiendra vos classes et vous pourrez commencer à faire vos merveilleux plugins
:::
Section 3: La classe principale
:::Tout d’abord, faites vous une classe dans eclipse qui aura :
! ```java
! package votre.package;
! import org.bukkit.plugin.java.JavaPlugin;
! public class Tuto extends JavaPlugin
{
@Override
public void onEnable()
{
! }
! @Override
public void onDisable()
{
! }
}::: >! Explications: ::: ```java >! public class Tuto extends JavaPlugin >! ``` ::: Déclaration de la classe. Le "extends JavaPlugin" permet de dire à Bukkit que cette classe sera un plugin. ::: ```java >! @Override public void onEnable() { >! }
:::
C’est simplement la fonction appelée par Bukkit pour lancer votre plugin.
Même chose pour la fonction “onDisable”, mais pour désactiver votre plugin .! Donc voilà ! C’est tout pour la classe principale.
Vous utiliserez celle-ci pour “enregistrer” les classes qui recevront les événements dont j’ai parlé dans la section 1 et pour dire à Bukkit quelle classe éxécutera les commandes.
! %(#FF0000)[Note: Nous parlerons de tout ceci un peu plus tard ]Section 4: Les événements
:::Comme je l’ai dit dans la première section, les événements sont les choses les plus utiles dans Bukkit et nous allons maintenant voir comment les utiliser.
La classe principale:
!
java ! this.getServer().getPluginManager().registerEvents(new TutoListener(), this); !
:::
Cette ligne va dans le onEnable() de votre classe principale.
Si vous le faites pour plusieurs Listeners, enregistrez le PluginManager dans une variable avant d’appeler registerEvents
! TutoListener sera votre classe qui recevra les événements et fera des trucs avec, nous la ferons juste après.
this est votre plugin, si vous enregistrez les Listeners ailleurs vous devrez donc référer le plugin d’une façon où d’une autre
Note: Vous pouvez aussi avoir la classe principale en Listener, mais ça rend le code moins organisé. C’est libre à vous.
! Le Listener:
:::>! public class TutoListener implements Listener { >! } >! ``` ::: Vous n'en avez pas besoin, mais vous pouvez aussi ajouter un constructeur à votre classe pour avoir le plugin et accéder à ce qu'il y a dans votre classe principale comme ceci: ::: ```java >! private Tuto plugin; >! public TutoListener(Tuto tuto) { this.plugin = tuto; } >! ``` >! À modifier dans la classe principale (vous allez avoir une erreur si vous le faites): ```java >! this.getServer().getPluginManager().registerEvents(new TutoListener(this), this); >! ``` >! ::: >! **Mais quand allons nous faire quelque chose avec les événements ? Pour le moment ça ne fait rien :/** Maintenant ! Ce que je viens de vous montrer c'est la base, vous n'avez qu'à le faire une fois par Listener. >! *Tout ce qui suis sera dans votre Listener.* >! ::: ```java >! @EventHandler public void onNomDel'evenement(NomDel'evenementEvent event) { //Choses que vous faites avec l'evenement } >! ``` ::: >! N'oubliez pas d'importer ! Vous pouvez faire Ctrl+Shift(Maj)+O pour tout importer automatiquement, si eclipse vous le demande, tout ce qui se rapporte aux événements sera TOUJOURS dans org.bukkit.event >! **Mais comment je suis supposé savoir ce quels sont les événements disponibles ?** La [javadoc](http://jd.bukkit.org) ! Tout ce qui se trouve dans les packages org.bukkit.event.quelquechose est un événement. Vous trouverez là les évenements pour le joueur (player), les entités (entity), les enchantements (enchantment), le serveur (server), etc. >! Nous ferons plus tard quelques exemples :) >! **D'accord, mais qu'est-ce que je peux faire avec l'événement ?** Ici il y a trois possibilités: >! 1. La javadoc 2. Vos connaissances 3. *Eclipse* >! Pourquoi Eclipse me direz-vous, eh bien si vous faites **event.** Eclipse vous ouvre une liste de toutes les méthodes comme ceci: ![](http://puu.sh/4bw6R.png) >! Vous pouvez alors fouiller les méthodes et modifier ou obtenir ce que vous voulez :) *Astuce:* Si votre événement est dans org.bukkit.event.entity, il y aura toujours un "event.getEntity()" qui retourne l'entité(mob) qui subit l'événement, pareil pour org.bukkit.event.player pour un joueur, org.bukkit.event.world pour l'objet "World", etc. Aussi, il est possible qu'un événement pour le joueur se trouve dans event.entity, dans ce cas la méthode pour obtenir le joueur ne sera *pas* event.getPlayer(), mais event.getEntity() >! Voilà ! C'est tout pour les événements, si vous ne savez pas comment faire quelque chose *qui n'est pas expliqué dans le tutoriel*, écrivez le moi en [title="Message Privé"]mp[/title] ou directement dans le post ici. *Section 5:* Les commandes ::: En cours. :::
-
Mise-à-jour : Ajout de la section 2 et organisation du post.
-
Mise-à-jour: Réorganisation, déplacé quelques sections pour ajouter la section 2 (la vraie): Préparation
Ajout de la section 4: Les événements
Début de la section 5: Les commandes (À venir) -
Mise-à-jour: Ajout de la section Préparation