Welcome to Bukkit France

Inscrivez-vous maintenant pour profiter d'un accès total à tout le contenu offert par la meilleur communauté Bukkit française ! Une fois inscrit et connecté, vous pourrez contribuez à la communauté en postant vos propres sujets et questions ou en répondant à ceux existants. Vous pourrez aussi customiser votre profil, recevoir des points de réputations, communiquer avec les autres membres via le chat, et plus encore! 

  • Annonces

    • Pskyco

      Bukkit France passe sous Discord !   02/20/16

      Bukkit France est désormais passé sur Discord, au revoir donc notre vieux Teamspeak ! Téléchargez le client et venez nous rejoindre sur notre salon en suivant les instructions suivantes.
      M-à-j du 25/02/2017 : Désormais, seuls les comptes actifs sur le forum se verront donner l'accès au Discord, ce dernier n'est pas une plateforme d'aide de la même manière que le chat.
Knockyy

Probleme pour cacher les joueurs

4 messages dans ce sujet

Rebonjour :P

 

Toujours sous Spigot 1.7.10 et sous eclipse pour dev, cette fois j'ai un soucis au niveau des player.HidePlayer(....);

En faite, j'aimerais faire des 1v1 dans une arène global (là ou tous les 1v1 se ferront) sauf que quand je veux cacher les joueurs pour que seulement les 2 adversaires se voient, lorsqu"un joueur se connecte et qu'il vient en 1v1, il voit les gens deja dans l'arène et les gens dans l'arène vois aussi le joueur, ce qui fou bien le bordel.. J'aimerais donc savoir comment bien cacher les joueurs entre eux pour que seulmeent les 2 adversaires se voient !

 

Ma méthode pour cacher les joueurs : 

 

for(Player online : Bukkit.getOnlinePlayers()) {
					player.hidePlayer(online);
					clicked.hidePlayer(online);
					online.hidePlayer(clicked);
					online.hidePlayer(player);
					player.showPlayer(clicked.getPlayer());
					clicked.showPlayer(player.getPlayer());
				}

 

J'ai penser à stocker les joueurs en 1v1 dans une List, faire un Iterator pour récup tout le monde et ainsi cacher les 1v1er (jsp si ça se dit :p)  à ceux qui arrive

 

Un truc comme ça :

 

for(Player online : Bukkit.getOnlinePlayers()) {
						player.hidePlayer(online);
						clicked.hidePlayer(online);
						online.hidePlayer(player);
						online.hidePlayer(player);

						for(Iterator<String> it = inpvp.iterator(); it.hasNext();) {
							Player next = Bukkit.getPlayer(it.next());
							next.hidePlayer(online);
							online.hidePlayer(next);
							clicked.hidePlayer(next);
						}
						
						player.showPlayer(clicked);
						clicked.showPlayer(player);
					}

Sauf que ça ne marche pas.. 

Partager ce message


Lien à poster
Partager sur d’autres sites
	@EventHandler
	public void onPlayerJoin(PlayerJoinEvent e) {
		Player p = e.getPlayer();
		for(Player hidenP : Vanish.vanished){
			p.hidePlayer(hidenP);
			hidenP.hidePlayer(p);
		}
	}

 

J'ai fait une déclaration static de la list vanished qui se trouve dans la class Vanish.

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai fais pareil après avoir posté l'aide. Cependant le problème persiste, lorsque je clic le mec on est dans l'arène normal sauf quand si deux autres joueurs cliquent, moi et le gars avec qui je 1v1 voyons 1 des deux joueurs qui nous on rejoint 

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai retrouvé une méthode qui fait ce que tu veux mais qui n'est pas complètement appropriée, tu peux t'en servir comme base :

 

Spoiler
	@SafeVarargs
	final public void showOnlyAll(final Player target, final Collection<? extends Player> ...players)
	{
		// si on n'a aucune liste de joueurs, on cache tous les joueurs
		if(players.length == 0)
		{
			for(final Player p : Bukkit.getOnlinePlayers())
				target.hidePlayer(p);
			return;
		}
		boolean contains;
		// pour chaque joueur connecté
		for(final Player p : Bukkit.getOnlinePlayers())
		{
			contains = false;
			// on vérifie dans toutes les listes passées en argument si le joueur y est
			for(final Collection<? extends Player> list : players)
				if(list.contains(p))
				{
					contains = true;
					break;
				}
			// si le joueur était dans une liste contains vaut true maintenant, on peut donc montrer ce joueur
			if(contains)
				target.showPlayer(p);
			else
				target.hidePlayer(p);
		}
	}

 

 

J'utilise un tableau de Collection ici alors que tu ne veux montrer qu'un joueur, à toi de faire les changements nécessaires si tu veux simplifier.

Modifié par Dragorn421
2 personnes aiment ça

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.