Bem a função do plugin é que quando alguém estiver com o vanish ativado ninguém consiga mandar certos comandos para ele (Comandos bloqueados na config.yml), porém, quando eu uso um desses comandos bloqueados em algum player, ele simplesmente executa o comando como se o player não tivesse com o vanish ativado
Pergunta
ninho42
Nome do Plugin: Vanish
Autor: Ninho42 (Eu)
Código:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.ninhodev.vanish; import java.io.File; import java.util.ArrayList; import java.util.List; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.plugin.java.JavaPlugin; /** * * @author ninho */ public class Main extends JavaPlugin implements Listener{ private HidePlayerList listadejogadores; ArrayList<Player> jogador = new ArrayList(); ArrayList<Boolean> cmdsdesativados = new ArrayList(); boolean[] cmdsdesativadosjoin = null; int qntvanish = 0; public void onJoin(PlayerJoinEvent e) { int i = 0; int j = 0; if (jogador.contains(e.getPlayer())) { int jogadorindex = jogador.indexOf(e.getPlayer()); if (cmdsdesativados.get(jogadorindex) == true) { e.getPlayer().kickPlayer("§4Você esqueceu de desligar o vanish ao sair!"); cmdsdesativados.set(jogadorindex, false); } else { int z = 0; while (qntvanish > z) { while (cmdsdesativados.get(j) == false) { j++; } jogador.get(jogadorindex).hidePlayer(jogador.get(j)); } } } else { jogador.add(e.getPlayer()); cmdsdesativados.add(false); int jogadorindex = jogador.indexOf(e.getPlayer()); if (cmdsdesativados.get(jogadorindex) == true) { e.getPlayer().kickPlayer("§4Você esqueceu de desligar o vanish ao sair!"); cmdsdesativados.set(jogadorindex, false); } else { int z = 0; while (qntvanish > z) { while (cmdsdesativados.get(j) == false) { j++; } jogador.get(jogadorindex).hidePlayer(jogador.get(j)); } } } } @Override public void onEnable() { listadejogadores = new HidePlayerList(this); getServer().getPluginManager().registerEvents(this, this); if (new File(getDataFolder(), "config.yml").exists() == false) { saveDefaultConfig(); } ConsoleCommandSender inicio = Bukkit.getConsoleSender(); inicio.sendMessage("§4[Vanish] §aO plugin vanish foi iniciado com sucesso!"); } public void onLeft(PlayerQuitEvent e) { for(Player p : Bukkit.getOnlinePlayers()) { e.getPlayer().showPlayer(p); } Player jogador1 = e.getPlayer(); if (jogador1.getPlayerListName().equals("")) { jogador1.setPlayerListName(jogador1.getName()); for (Player jogador2 : Bukkit.getOnlinePlayers()) { jogador2.showPlayer(jogador1); } } } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args){ if (command.getName().equalsIgnoreCase("Vanish") || command.getName().equalsIgnoreCase("V")) { Player p = (Player) sender; if (p.hasPermission("HarlowCraft.Vanish")) { if (p.hasMetadata("Escondido")) { int jogadorindexcmd = jogador.indexOf(p); for (Player player: Bukkit.getOnlinePlayers()) { player.showPlayer(p); } qntvanish = qntvanish - 1; p.sendMessage(getConfig().getString("Prefixo").replace("&", "§") + getConfig().getString("MensagemDesligouVanish").replace("&", "§")); p.removeMetadata("Escondido", this); } else { int jogadorindexcmd = jogador.indexOf(p); for (Player player4: Bukkit.getOnlinePlayers()) { player4.hidePlayer(p); p.setMetadata("Escondido", new FixedMetadataValue(this, null)); qntvanish = qntvanish + 1; p.sendMessage(getConfig().getString("Prefixo").replace("&", "§") + getConfig().getString("MensagemLigouVanish").replace("&", "§")); } } } } return false; } public void cmdsdesativados(PlayerCommandPreprocessEvent e) { String[] args = e.getMessage().split(" "); List<String> comandosbloqueados = getConfig().getStringList("ComandosBloqueados"); for (String lista: comandosbloqueados) { if (args[0].equalsIgnoreCase("/" + lista)) { for (Player jogadorlista: Bukkit.getOnlinePlayers()) { if (jogadorlista.hasMetadata("Escondido")) { if (args[1].equalsIgnoreCase(jogadorlista.getName())) { e.setCancelled(true); Player p = e.getPlayer(); p.sendMessage("§cErro: §4Este usuário não está online!"); } } } } } } }Config:
########################## # Vanish Versão 1.0 # # Por Ninho42 # ########################## Prefixo: "&7[&3HarlowCraft&7] " MensagemLigouVanish: "&fModo Vanish ativado" MensagemDesligouVanish: "&fModo Vanish desativado" ComandosBloqueados: - tell - tpaProblema:
Bem a função do plugin é que quando alguém estiver com o vanish ativado ninguém consiga mandar certos comandos para ele (Comandos bloqueados na config.yml), porém, quando eu uso um desses comandos bloqueados em algum player, ele simplesmente executa o comando como se o player não tivesse com o vanish ativado
Editado por ninho42Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados