Ir para conteúdo
  • 0

[Resolvido] Vanish não desabilita comandos


ninho42

Pergunta

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
    - tpa 

 

 

Problema:

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 ninho42
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

Na verdade é uma arraylist inutilizada(Eu usava antes mas decidi trocar por um método melhor), que eu irei apagar, portanto não é a causa do problema

 

@EDIT: O problema está provavelmente aqui!

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!");

@EventHandler

Link para o comentário
Compartilhar em outros sites

Praq uma arraylist de boolean?

 

 Porque você simplesmente não checa se o player esta em vanish e se o comando esta na lista na config?

Na verdade é uma arraylist inutilizada(Eu usava antes mas decidi trocar por um método melhor), que eu irei apagar, portanto não é a causa do problema

 

@EDIT: O problema está provavelmente aqui!

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!");

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

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