Ir para conteúdo
  • 0

[Duvida] Plugin de Vanish, admin ver quem estiver em /v


yLR111

Pergunta

Criei um pl de vanish e como faço se eu entrar de /v, e o pessoal que tiver permissao me ver de /v, quero colocar para os meu staff tbm me ver



private ArrayList<Player> vanished = new ArrayList<Player>();

public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {

if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "§cUse comando in-game!");
return true;
}

Player p = (Player) sender;
if(p.hasPermission("obycraft.vanish")) {
if ((cmd.getName().equalsIgnoreCase("vanish")) || (cmd.getName().equalsIgnoreCase("v"))){
if (!vanished.contains(p)) {
for (Player pl : Bukkit.getServer().getOnlinePlayers()) {
pl.hidePlayer(p);
}
vanished.add(p);
p.sendMessage(ChatColor.GREEN + "§d§l[VANISH] §aModo invisível ativado");
return true;
}else {
for (Player pl : Bukkit.getServer().getOnlinePlayers()) {
pl.showPlayer(p);
}
vanished.remove(p);
p.sendMessage(ChatColor.GREEN + "§d§l[VANISH] §aModo invisível desativado");
}
}
}
return false;
}

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Outra coisa, sabe como checo se o inventario do jogador estiver cheio, se estiver executaria outra coisa?

 

 

O Codigo que vocë me passou, eu testei com staff meu e se ele entra no /v ele sai do tab e desaparece, queria tirar isso, se ele for staff ele tbm me ver de /v

Ah, desculpa. Interpretei a questão errado.

private Set<Player> vanished = new HashSet<>();

public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {

	if (!(sender instanceof Player)) {
		sender.sendMessage(ChatColor.RED + "§cUse comando in-game!");
		return true;
	}

	Player p = (Player) sender;
	if (p.hasPermission("obycraft.vanish")) {
		if ((cmd.getName().equalsIgnoreCase("vanish")) || (cmd.getName().equalsIgnoreCase("v"))) {
			if (!vanished.contains(p)) {
				Bukkit.getOnlinePlayers().stream()
						.filter(pl -> !pl.hasPermission("obycraft.vanish"))
						.forEach(pl -> pl.hidePlayer(p));
					
				vanished.add(p);
				p.sendMessage(ChatColor.GREEN + "§d§l[VANISH] §aModo invisível ativado");
				return true;
			} else {
				Bukkit.getOnlinePlayers().stream()
						.forEach(pl -> pl.showPlayer(p));
							
				vanished.remove(p);
				p.sendMessage(ChatColor.GREEN + "§d§l[VANISH] §aModo invisível desativado");
			}
		}
	}
	return false;
}

E para verificar se o inventário do jogador está cheio, tenta isso aqui:

if (p.getInventory().firstEmpty() == -1) {
	// Está cheio...
} else {
	// Não está cheio
} 
Editado por Out of Orbit
Link para o comentário
Compartilhar em outros sites

  • 0
private Set<Player> vanished = new HashSet<>();

public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {

	if (!(sender instanceof Player)) {
		sender.sendMessage(ChatColor.RED + "§cUse comando in-game!");
		return true;
	}

	Player p = (Player) sender;
	if (p.hasPermission("obycraft.vanish")) {
		if ((cmd.getName().equalsIgnoreCase("vanish")) || (cmd.getName().equalsIgnoreCase("v"))) {
			if (!vanished.contains(p)) {
				Bukkit.getOnlinePlayers().stream()
						.filter(pl -> !vanished.contains(pl))
						.forEach(pl -> pl.hidePlayer(p));
					
				vanished.add(p);
				p.sendMessage(ChatColor.GREEN + "§d§l[VANISH] §aModo invisível ativado");
				return true;
			} else {
				Bukkit.getOnlinePlayers().stream()
						.forEach(pl -> pl.showPlayer(p));
							
						

				vanished.remove(p);
				p.sendMessage(ChatColor.GREEN + "§d§l[VANISH] §aModo invisível desativado");
			}
		}
	}
	return false;
}

Troquei a lista por um set, pois quando utilizado apenas para pesquisas rápidas, é mais eficiente

Fiz com streams pra filtrar os jogadores que não estão no modo vanish, daí os que não estão não verão aqueles que estão,

Já os que estão no modo vanish verão.

Link para o comentário
Compartilhar em outros sites

  • 0
private Set<Player> vanished = new HashSet<>();

public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {

	if (!(sender instanceof Player)) {
		sender.sendMessage(ChatColor.RED + "§cUse comando in-game!");
		return true;
	}

	Player p = (Player) sender;
	if (p.hasPermission("obycraft.vanish")) {
		if ((cmd.getName().equalsIgnoreCase("vanish")) || (cmd.getName().equalsIgnoreCase("v"))) {
			if (!vanished.contains(p)) {
				Bukkit.getOnlinePlayers().stream()
						.filter(pl -> !vanished.contains(pl))
						.forEach(pl -> pl.hidePlayer(p));
					
				vanished.add(p);
				p.sendMessage(ChatColor.GREEN + "§d§l[VANISH] §aModo invisível ativado");
				return true;
			} else {
				Bukkit.getOnlinePlayers().stream()
						.forEach(pl -> pl.showPlayer(p));
							
						

				vanished.remove(p);
				p.sendMessage(ChatColor.GREEN + "§d§l[VANISH] §aModo invisível desativado");
			}
		}
	}
	return false;
}

Troquei a lista por um set, pois quando utilizado apenas para pesquisas rápidas, é mais eficiente

Fiz com streams pra filtrar os jogadores que não estão no modo vanish, daí os que não estão não verão aqueles que estão,

Já os que estão no modo vanish verão.

 

Outra coisa, sabe como checo se o inventario do jogador estiver cheio, se estiver executaria outra coisa?

 

 

O Codigo que vocë me passou, eu testei com staff meu e se ele entra no /v ele sai do tab e desaparece, queria tirar isso, se ele for staff ele tbm me ver de /v

Editado por yLR111
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...