Suppression Bossbars

  • Auteur de la discussion Auteur de la discussion LEZIKO
  • Date de début Date de début

LEZIKO

Architecte en herbe
2 Novembre 2021
101
2
129
22
Bonjour,

Je dev en 1.18.2 spigot et je voulais savoir comment supprimer toutes les bossbars d'un joueur car je ne trouve pas et j'ai essayé quelques petites choses mais rien de concluant.

Je vous remercie :D
 
Bonsoir,

A priori, tu peux faire Server#getBossBars(), et BossBar#getPlayers().contains(Player) puis BossBar#remove/addPlayer(Player).
Si tu veux gérer les barres vanillas, tu dois cast les boss et récupérer ainsi leur barre.

Java:
/**
 * Renvoie toutes les barres de boss actives dans un monde, qu'elles proviennent d'un plugin ou d'une entité.
 */
public static Iterable<BossBar> getBossBars(World w) {
	return () -> Iterators.concat(
		Bukkit.getBossBars(),
		Iterators.transform(w.<@NonNull Boss>getEntitiesByClass(Boss.class).iterator(), Boss::getBossBar)
	);
}

Cordialement,
ShE3py
 
Hello ! désolé de la réponse tardive mais ça récupère les bossbars du monde ça risque pas de supprimer pour tous les joueurs ?

Cordialement,
LEZIKO
 
La fonction renvoie juste la liste des barres, tu peux en faire ce que tu veux après. Donc pour supprimer toutes les barres d'un joueur, tu peux faire getBossBars(player.getWorld()).forEach(bb -> bb.removePlayer(player)).
 
  • J'aime
Reactions: LEZIKO
La fonction renvoie juste la liste des barres, tu peux en faire ce que tu veux après. Donc pour supprimer toutes les barres d'un joueur, tu peux faire getBossBars(player.getWorld()).forEach(bb -> bb.removePlayer(player)).
Merci beaucoup :D