Créer une barre de vie pour votre mob comme l'Ender Dragon ou le Wither
-
Sommaire
Introduction
Nous allons dans ce tutoriel, qui sera très cours, voir comment afficher une barre de de vie comme pour l’Ender Dragon. (Un ancien tuto de kevin_68 est disponible mais le fonctionnement a changé).
Pré-requis
- Savoir créer un mob basique OUTDATED
Classe du mob
L’ensemble du code que nous écrivons sera à placer dans la classe de l’entité, la classe du rendu n’est plus utilisé pour la barre de vie !
Création de la barre de vie :
Dans la classe de votre mob rajoutez cette variable en début de classe à la suite de vos autres variables :
private final BossInfoServer bossInfo = (BossInfoServer)(new BossInfoServer(this.getDisplayName(), BossInfo.Color.WHITE, BossInfo.Overlay.NOTCHED_6)).setDarkenSky(true);
Nous allons maintenant la décortiquer.
BossInfoServer est le type qui correspond à la barre de vie, pour l’instant rien de bien compliqué.
Nous nous occuperons de la raison du cast en dernier.
Donc continuons… Nous créons un nouveau BossInfoServer qui prend 3 arguments :-
Le premier est le nom de l’entité à afficher au dessus de la barre de vie, ici nous prenons simplement le nom de l’entité par le biais de getDisplayName().
-
Le second est la couleur de la barre de vie, j’utilise ici le blanc mais réécrivez le point et éclipse (si vous l’utilisez) vous proposera les différentes couleurs :PINK, BLUE, RED, GREEN, YELLOW, PURPLE, WHITE. Par exemple le Wither utilise le PINK.
-
Enfin, le troisième paramètre est le style de la barre de vie. Il y a en fait deux “gros types” : NOTCHED qui affiche une barre de vie avec des segments, le chiffre qui suit l’underscore correspond au nombre de segments (6, 10, 12, 20) et PROGRESS affiche une barre de vie sans segment.
Enfin, on applique immédiatement la fonction setDarkenSky() qui permet d’assombrir le ciel lorsque que le mob est en vie, comme pour le wither, si le boolean passé en paramètre est égal à true. Le problème est que cette fonction renvoie un BossInfo or nous avons besoins d’un BossInfoServer d’où la nécessité du cast en début.
Voilà pour la partie création de la barre de vie et de sa customisation.
Les fonctions :
Maintenant il ne nous reste plus que à afficher les points de vie sur la barre de vie et à l’envoyer au joueur.
Donc, pour commencer overridez la fonction updateAITasks() (je vous conseille le raccourcis Ctrl + Space pour afficher l’ensemble des fonction à overrider). Conservez la ligne :super.updateAITasks();
et ajoutez à la suite
this.bossInfo.setPercent(this.getHealth() / this.getMaxHealth());
où bossInfo est la variable de votre barre de vie. Ici nous envoyons le pourcentage de vie de notre entité.
Nous obtenons donc la fonction suivante :
@Override protected void updateAITasks() { super.updateAITasks(); this.bossInfo.setPercent(this.getHealth() / this.getMaxHealth()); }
Les prochaines fonctions sont celles qui sont appelées lorsque le joueur récupère les informations du mob et les perds.
On retrouve donc la fonction addTrackingPlayer() et removeTrackingPlayer(), c’est deux fonctions prennent en paramètre un objet de type EntityPlayerMP. Overridez les deux (je vous recommande à nouveau le raccourcis Ctrl + Space sur éclipse).Occupons nous de la première, addTrackingPlayer(), à la suite du
super.addTrackingPlayer(player);
Ajouter la ligne suivante :
this.bossInfo.addPlayer(player);
Où bossInfo est la variable de la barre de vie créer au début de ce tutoriel. Cette fonction permet de transmettre les informations de la barre de vie au joueur passé en paramètre. On obtient donc une fonction qui devrait correspondre à ça :
public void addTrackingPlayer(EntityPlayerMP player) { super.addTrackingPlayer(player); this.bossInfo.addPlayer(player); }
Nous allons à présent nous occuper de la seconde fonction, removeTrackingPlayer(). A nouveau, à la suite de la ligne suivant :
super.removeTrackingPlayer(player);
ajouter cette ligne :
this.bossInfo.removePlayer(player);
où bossInfo est toujours la variable de votre barre de vie. Elle fonctionne comme le addPlayer(), mais cette fois elle retire la barre de vie aux informations que reçoit le joueur. Nous obtenons alors la fonction suivante :
public void removeTrackingPlayer(EntityPlayerMP player) { super.removeTrackingPlayer(player); this.bossInfo.removePlayer(player); }
Et voilà, vous pouvez dès à présent lancer Minecraft pour tester votre toute nouvelle barre de vie !
Bonus
Petit bonus que ne sera utile que dans des cas assez spécifique. Minecraft propose une fonction qui permet de savoir si une entité est un boss ou pas, comme il est très probable que le mob au quel vous venez d’ajouter la barre de vie sois un boss, je vous propose de l’overrider :
@Override public boolean isNonBoss() { return false; }
Si votre mob est un boss, renvoyez, comme ici, false. Voilà ce sera tout pour ce tout petit bonus. Je ne sais par contrepas à quel moment Minecraft utilise cette fonction dans son code.
Résultat
Voici des exemple de barre de vie créée :
Crédits
kevin_68 pour l’ancien tuto du quel je me suis inspiré.
robin4002 pour le tuto sur le mob basique.Rédaction :
- Appixroid
Correction :
- Pour le moment personne
Ce tutoriel de Appixroid publié sur Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International -
Bravo
Ce tuto va me être utile quand je vais faire mon mod en 1.9
(Depuis quand il à des bars coloré xD) -
Bravos pour le tuto
-
Merci à vous !
@‘leo01418’:
Bravo
Ce tuto va me être utile quand je vais faire mon mod en 1.9
(Depuis quand il à des bars coloré xD)Effectivement moi non plus je ne savais pas pour les barres de vie coloré mais je trouve ça assez sympa et le rendu est bien fait.