Accepté Candidature Rédacteur - Plx0wn

Plx0wn

Massacreur de zombies
Ancien
20 Mars 2013
111
10
125
21
En France (Tu sauras pas plus coquin.)
Salut!
Je m'appelle Lucas, j'ai 18 ans et je vis en France. Je suis en école de Photographie. Je connais Minecraft.fr depuis mes débuts sur minecraft, c'est-à-dire depuis 2011.
J'ai toujours eu du mal avec l'orthographe et cela m'a toujours démotivé d'écrire pour quoi que ce soit. Seulement on apprend de ses erreurs et aujourd'hui je pense être capable de vous montrer ma plus belle écriture! Je n'ai donc aucune expérience mis-à-part quelques tutoriels écrit que j'ai pu faire sur ce forum.

Je vais donc écrire un article sur une série de tutoriels pour développer un plugin et faire comme si cette série avais déjà commencé.

Son propre plugin 1.12.x - #? - Ajouter des drops aux mobs


Dans cet article nous allons voir comment ajouter des drops lorsque des mobs meurent. A la fin de ce guide vous saurez comment faire, par exemple, pour qu'un zombie puisse dropper avec 10% de chance, un diamant.

* Près-requis:

- Les bases de la création d'un plugin, un tutoriel est dédié à cela ici (lien inexistant, ce n'est que pour l'exemple).

- Utilisation des events (évennements).
- Utilisation des ItemStack.
- Un serveur sous spigot.
- Une petite connaissance en Java ou un peu de logique.

* Commençons!

Dans ce tutoriel, l'event sera présent dans notre classe principale, c'est plus simple.

Ajoutez à votre classe "Implements Listener". Cela devrait donner ceci:
Code:
public class VotreClasse extends JavaPlugin implements Listener {
Les listeners sont les events présent dans le jeux, l'implémenter permettra de dire qu'un event se trouve dans cette classe.

Ajouter ensuite dans la fonction onEnable()
Code:
Bukkit.getServer().getPluginManager().registerEvents(this, this);
Ici nous informont le serveur lors de l'initialisation du plugin qu'un nouvel event se trouve ici (premier "this") et dans ce plugin (deuxième "this").


* Passont à l'Event


Ajoutez à la suite de votre code:
Code:
@EventHandler
Ceci informe que le fonction suivante est un event lors de la lecture du code par le serveur.

Nous allons alors créer une nouvelle fonction:
Code:
public void onMobDeath(EntityDeathEvent e){

}
EntityDeathEvent est appelé lorsque une entité est morte sur le serveur.

Nous allons par exemple faire dropper a un zombie un diamant lorsqu'il meurt. Ajoutons cette condition:
Code:
if(e.getEntity() instanceof Zombie){

}
e.getEntity correspond à l'entité qui est morte, ici on demande si cette dernière est un zombie. Si par exemple vous voulez que ce soit un creeper changez le Zombie en Creeper. Voici la liste des entité

Il va nous falloir la localisation de l'endroit où est mort l'entité. Pour cela nous allons créer une variable pour nous faciliter les choses:
Code:
Location deathLocation = e.getEntity().getLocation();
Maintenant nous demandons au serveur de dropper un ItemStack à la deathLocation
Code:
Bukkit.getWorld(deathLocation.getWorld().getName()).dropItem(deathLocation, new ItemStack(Material.DIAMOND));
le "deathLocation.getWorld().getName()" renseigne au serveur le monde dans lequel dropper l'item, puisque dans différents monde il y a les mêmes coordonnées (entre le "world" et le "nether par exemple).

Le "dropItem(Material.DIAMOND)" est pour renseigner l'item qui sera droppé lors de la mort de l'entité. Voici la liste des matériaux.

Et voilà ! Nous avons notre events de prêt, seulement nous n'avons pas un pourcentage de chance de drop. Enfin si mais il est à 100%! Allons voir comment remédier à cela.

* Faire un pourcentage de drop


C'est assez simple. Nous allons créer un nombre aléatoire allant jusqu'à maximum 100 chiffres, lorsque notre entité meurt, si le nombre aléatoire est égale ou en dessous de 9 alors le diamant drop. Vous vous demandez pourquoi 9 et pas 10? Parce que un nombre aléatoire commence par 0 et non par 1. Donc de 0 à 9 il y a 10 chiffre. Il y aura donc 100 nombres possible dans le nombre aléatoire, allant de 0 à 99.

Bien! Créez une nouvelle variable, ce sera un nombre aléatoire qui sera différent à chaque mort de notre entité. Mettez le dans l'event juste après la deathLocation:
Code:
int random = new Random().nextInt(100);
Nous ajoutons ensuite une condition avant le dropItem
Code:
if(random <= 9){

Bukkit.getWorld(deathLocation.getWorld().getName()).dropItem(deathLocation, new ItemStack(Material.DIAMOND));

}
Vous devriez avoir quelque chose rassemblant à ceci

Et voilà ! Vous savez maintenant comment basiquement ajouter un drop à un mob. Maintenant adaptez cela à votre sauce!

BONUS

Si vous voulez que votre Event ne soit pas dans votre classe principale il suffit de changer deux choses:

Créez une nouvelle classe et implémentez les Listeners
Code:
public class NouvelleClasse implements Listener {
Et dans votre fonction onEnable() dans votre classe principale indiquez la nouvelle classe ou se trouve l'event.
Code:
Bukkit.getServer().getPluginManager().registerEvents(new NouvelleClasse(), this);

Voici donc la fin de ma candidature, à bientôt!
 
  • J'aime
Reactions: Q-Jei

Lescolin

Un panda trop mignon pour une maxi-collection
1 Mars 2016
523
348
185
19
Un petit trou entre deux Everest.
Oh ! Une candidature, ça faisait longtemps !
Bon, de mon point de vue, je trouve cet article bien écrit et compréhensible. Mais je pense qu’il y a un problème au niveau du sujet de celui-ci : c’est de la programmation, donc loin d’être tout publique. Il y a peu de monde qui pourrait être intéressé. Mais c’est plus original qu’une map :^)
Une critique courte, comme mes anciennes habitudes. Pas d’avis quand à ton acceptation puisque Mr le juge a changé et donc les critères aussi. Je ne sais pas si @TheShining sera mieux, ou pire que loji :^)
Good luck !
 
  • J'aime
Reactions: Plx0wn

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 359
1 055
297
21
Bretagne
Hey !
Petit article bien sympa, un sujet qui me plait beaucoup bien que, comme dit au-dessus, qui n'attire pas vraiment de monde. Enfin bon, des articles un peu plus techniques sur le site de temps en temps ne serait pas plus mal ^^
Bon courage à toi, en attendant la réponse de TheShining ;)
 

Finder

Cueilleur de roses
22 Juin 2017
8
5
14
18
Bon je vais donner mon avis en tant que personne qui n'y connaît absolument rien en programmation,
Tout d'abord il y a quelques fautes d'orthographe, mais honnêtement rien de très grave, je pense que c'est surtout de l'inattention.
présent dans le jeux

que le fonction
De plus il y a un point qui me gêne un peu dans ton article
- Une petite connaissance en Java ou un peu de logique.
L'article est relativement compliqué, bien que cet article ait sûrement sa place sur minecraft.fr je pense qu'il aurait mieux fallu que tu fasses par exemple une série d'articles sur la programmation avec un premier épisode sur quel logiciel utiliser,comment insérer un nom à ton plugin, le mettre sur un serveur, des choses qui peuvent probablement te paraître simples, mais qui pour un amateur (comme moi) doit être relativement compliqué, l'article manque aussi d'exemples concrets de l'utilisation de ce plugin il doit y en avoir pas mal mais en lisant ton article j'en ai vue très peu.
Bref à mon goût, l'article est bon mais manque de beaucoup d'explications et d'exemples concrets pour donner envie au lecteur de créer son propre plugin,
Je laisse l'avis définitif à TheShining bonne chance !
 
Dernière édition:

Plx0wn

Massacreur de zombies
Ancien
20 Mars 2013
111
10
125
21
En France (Tu sauras pas plus coquin.)
L'article est relativement compliqué, bien que cet article ait sûrement sa place sur minecraft.fr je pense qu'il aurait mieux fallu que tu fasses par exemple une série d'articles sur la programmation avec un premier épisode sur quel logiciel utiliser,comment insérer un nom à ton plugin, le mettre sur un serveur, des choses qui peuvent probablement te paraître simples, mais qui pour un amateur (comme moi) doit être relativement compliqué, l'article manque aussi d'exemples concrets de l'utilisation de ce plugin il doit y en avoir pas mal mais en lisant ton article j'en ai vue très peu
Salut! Je comprend ce que tu veux dire, mais je l'ai dit un peu avant, c'est une série de tutoriels donc il y aurait forcément un premier article pour expliquer les bases :)
 

TheShining

Coucou chérie !
Ancien
13 Novembre 2011
59
46
94
49
Bonjour @Plx0wn
Je trouve le choix de l'article assez audacieux et très technique. Pour autant, il est digne d'intérêt mais on reste un peu sur sa fin. Certaines parties auraient mérité d'être développées un peu plus mais en même temps, tout expliquer aurait généré un pavé indigeste.
Clairement, tu nous préviens qu'il s'agit d'une série de tutoriels et l'idée est séduisante si tu es prêt à tenir sur la longueur en présentant ce tutoriel de semaine en semaine.
Pour ce qui concerne la forme, bon, il y a un peu de travail à fournir, je pense. La présentation est primordiale en rédaction, tels que des titres centrés mais compte tenu du sujet et du peu de fautes d'orthographe, je pense que tu peux intégrer notre équipe qui te donnera des clés pour améliorer tout ça. Bienvenue et j'attends avec impatience cette série de tutoriels.
Je t'invite à me contacter sur notre Discord pour mettre à jour ton rôle et te donner les premiers éléments pour rédiger ! ;)
 
Dernière édition:
  • J'aime
Reactions: RyZine

Elikill

Développeur Java trop occupé
23 Février 2014
1 370
200
187
20
eliapp.fr
Bonjour,
Etant moi-même ex-rédacteur, et développeur, je me dois de préciser quelque chose.
Lorsque j'étais encore rédacteur (la bonne époque ! x) ) j'ai demandé a Loji si je pouvais faire ça, une série qui apprenais aux gens a faire des plugins.
Je me disais que j'aurai pu enfin faire plein d'articles (donc plein de sousous x) ) sans avoir de problèmes (cc tout les irrespects de l'EULA, et tout les problèmes que j'ai engendré xD).
Malheureusement, cette idée (pourtant fabuleuse) à été refusé par notre ex-rédacteur en chef (Ah lala, ces ex ... :o).
Sa raison ? "Y'en a déjà eu plein des séries comme ça"
Oui, il y en a plein. Mais aucune n'a dépassé les 2 épisodes.
Bref, j’espère que TheShining saura accepter cette série pleine de promesse.

Petite critique de l'article (que j'ai lu! contrairement aux autres candidatures xD bon ok, un peu en diagonales ...).
  • "Implements Listener" hephephep, tu dis d'ajouter ça, mais il faut le mettre dans le i majuscule
  • Je pense que préciser les imports peut être intéressant.
  • Ensuite, a ta place je ne ferai pas par exemple "@EventHandler: Ceci informe que le fonction suivante est un event lors de la lecture du code par le serveur." mais genre "Il ne faut pas oublier de préciser que la fonction suivante est lié a un évènement grâce a @EventHandler". (Genre mettre le code après la raison de son existance).
  • A un moment tu respecte pas les conventions, pas bien x)
  • EDIT: "ou un peu de logique" MDR, non. Le Java c'est une langue, avec sa syntaxe et son vocabulaire. Tu peux pas apprendre l'espagnol par la logique, la c'est pareil.
 
Dernière édition:

Clément

Modérateur
Ancien
15 Mai 2015
1 445
337
217
19
Bien le bonjour mon brave, veux tu être mon sous fifre développeur ?

Bienvenue à toi dans l'équipe !
 

Plx0wn

Massacreur de zombies
Ancien
20 Mars 2013
111
10
125
21
En France (Tu sauras pas plus coquin.)
Petite critique de l'article (que j'ai lu! contrairement aux autres candidatures xD bon ok, un peu en diagonales ...).
  • "Implements Listener" hephephep, tu dis d'ajouter ça, mais il faut le mettre dans le i majuscule
  • Je pense que préciser les imports peut être intéressant.
  • Ensuite, a ta place je ne ferai pas par exemple "@EventHandler: Ceci informe que le fonction suivante est un event lors de la lecture du code par le serveur." mais genre "Il ne faut pas oublier de préciser que la fonction suivante est lié a un évènement grâce a @EventHandler". (Genre mettre le code après la raison de son existance).
  • A un moment tu respecte pas les conventions, pas bien x)
  • EDIT: "ou un peu de logique" MDR, non. Le Java c'est une langue, avec sa syntaxe et son vocabulaire. Tu peux pas apprendre l'espagnol par la logique, la c'est pareil.
Merci pour ton soutiens et tes conseils! Cela me sera grandement utile!
Juste un petit points pour les conventions, je ne l'ai connais absolument pas :p
 

Elikill

Développeur Java trop occupé
23 Février 2014
1 370
200
187
20
eliapp.fr
Ah, honte à toi. (Je rigole).
En gros:
  • Indentation est importante (les espaces/TAB devant les lignes)
  • chaque mot dans le nom d'une classe doit avoir une majuscule, ex: ParExemple.class
  • les méthodes commencent pas une minuscule, ex: ParExemple.parExemple();
  • D'autres trucs auxquels je ne pense pas forcément