Ir para conteúdo

Como setar alguma coisa em outro player


Cassiano_14

Posts Recomendados


if (args.lenght > 0) {
    Player pl = Bukkit.getPlayer(args[0]);
    if (pl == null) {
        sender.sendMessage("Jogador inválido.");
    } else {
        pl.setGameMode(GameMode.CREATIVE);
        pl.sendMessage("Seu modo de jogo foi alterado por " + sender.getName());
    }
} else {
    sender.sendMessage("Utilize /comando <player>");
}

Isso é um exemplo bem básico de uma estrutura de como utilizar os argumentos de um comando, talvez te ajude =)

Link para o comentário
Compartilhar em outros sites

Pelo que vi, você já começou então:

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
//CÓDIGO
return false;
}

Para começarmos, vamos separar tudo. Comece com;

 

 

O que a Bukkit diz:

  • O que é Command sender? É quem enviou o comando.
  • O que é Command cmd? É o comando que é executado.
  • O que é String label? É o alias do comando que foi usado.
  • O que é String[] args? É matriz de argumentos adicionais,

 

SITE DA BUKKIT: AQUI

 

  • Exemplo de Command sender:
Player p = (Player) sender;

O que ele faz? Bom, ao usar p, retorna o jogador que usou o comando, sendo mais fácil fazer ou setar alguma função que deve ser Player e ignora o uso de (Player) pois já retorna que  "p" já é um Player.

 

 

 

  • Exemplo de Command cmd:
if(cmd.getName().equalsIgnoreCase("gamersboard")) 

O que ele faz? Bom, ao usar o cmd, ele retorna o comando que foi usado, mas não totalmente, deve ser usado um getName() para ser mais preciso, recomendo sempre usar "equalsIgnoreCase" para que, ao checar o comando ser preciso o suficiente e, não ser um parecido como acontece quando usa um equals.

 

 

 

 

  • Exemplo de String label:

Não vou citar nada aqui, pois eu nem uso, e também poucas pessoas usam label.

 

 

 

  • Exemplo de String[] args:
args

args retorna todos os argumentos usado após o /gamersboard como exemplo: /gamersboard criar tópico > retorna criar e tópico pois são os argumentos usados depois do comando.

args.length

args.length retorna a quantidade de argumentos usados após o comando por exemplo: /gamersboard criar server > irá retornar o número 2sempre NÚMERO, pois tem dois argumentos usados depois dos comando.

args[posição]

Este args[posição] não é usado como está acima, é usado args[0]args[1], ao usa-los retorna os argumentos que foram usados no comando, por exemplo /gamersboard estou banido, o args[0] retorna estou, e o args[1] retorna banido, e assim por diante.

 

 

 

 

ADICIONAIS:

Você irá precisar destes códigos:

args.length == 0

Você vai usar este para: checar se você/outro jogador usou o comando correto, por exemplo é /fly , que caso não tenha argumentos, sendo o comando apenas /fly, sem /fly <jogador>, ele irá retornar true, que é verdadeiro.

args.length > 0

Você vai usar este para: checar se você/outro jogador usou o comando correto, por exemplo é  /fly <jogador>, que caso tenha argumentos, sendo o comando /fly <jogador>, sem ser apenas o /fly, ele irá retornar true, que é verdadeiro.

Bukkit.getServer().getPlayer(args[0])

Você vai usar este para: checar se o jogador mencionado no /fly <jogador> é realmente um jogador e se este jogador está online.

 

 

 

TODOS ESSES MÉTODOS SÃO USADOS COM if(), OU EM OUTROS MÉTODOS.

 

 

 

CUIDADO!

Recomendo usar toLowerCase(), que transforma as palavras usadas, em algum método, todas pequenas.

if(args[0].toLowerCase().equalsIgnoreCase("video")) 

Caso você não VEJA se o jogador é um player, a maioria dos seus comandos irão dar errado pois, tem vários de executar um comando, dois deles são, via PLAYER e via CONSOLE.

recomendo no começo do código adicionar:

if(sender instanceof Player) {
     //CÓDIGO
} else {
      p.sendMessage(" APENAS JOGADORES PODEM EXECUTAR ESTE COMANDO ");
}

ou este:

if(sender instanceof Player) {
     //CÓDIGO
} 

O superior, irá mandar uma mensagem, como você talvez seja Dono do servidor, nem precisa de mensagem pois saberá que este comando não é executável pelo console.

 

Algumas checagem:

  • && (E Também)
  • != (Diferente de)
  • >= (Método um é maior/igual método dois)
  • <= (Método um é menor/igual método dois)
  • < (Método um menor que método dois)
  • > (Método um maior que método dois)
  • == (Método um igual método dois)

 

 

Bom espero que tenha aprendido, irei deixar  o código completo para você tentar entender.

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {

    //VERIFICA SE O JOGADOR É UM PLAYER
    if(sender instanceof Player) {
    
        //REOTNRA p COMO UM PLAYER
        Player p = (Player) sender;
        
        //VERIFICA SE O COMANDO USADO É BARRA FLY, IGNORANDO OUTROS COMO BARRA FLYYY OU FLY<QUALQUER OUTRO ARGUMENTO>
        if(cmd.getName().equalsIgnoreCase("fly")) {
        
            //VERIFICA SE O JOGADOR TEM A PERMISSÃO posso.voar
            if (p.hasPermission("posso.voar")){
            
                //RETORNA O PLAYER DO ARGUMENTO 0 PARA CITADO.
                Player citado = Bukkit.getServer().getPlayer(args[0]);
                
                //VERIFICA SE O JOGADOR CITADO É VERDADEIRO, QUE ESTA ONLINE E É PLAYER
                //TAMBÉM VERIFICA SE O ARGUMENTO CITADO É MAIOR QUE 0, QUE NAO USOU APENAS /FLY
                if(citado != null && args.length > 0){
                
                    //VERIFICA SE O JOGADOR CITADO NÃO ESTA COM O FLY ATIVADO, AO USAR ! NO COMEÇO DO IF, ELE VERIFICA SE NAO, AO CONTRARIO DO IF SEM !, QUE RETORNA SIM.
                    if (!citado.getAllowFlight()){
                    
                        //MENSAGEM DO FLY DESATIVADO
                        citado.sendMessage(" VOA PASSARINHO ");
                        
                        //SETA O FLY DO JOGADOR CITADO PARA TRUE, QUE É SIM, PODE VOAR
                        citado.setAllowFlight(true);
                    } else {
                        //MENSAGEM TO FLY ATIBADO
                        citado.sendMessage(" CAI VACILAO ");
                        
                        //SETA O FLY DO JOGADOR CITADO PARA FALSE, QUE É NÃO, NAO VOA
                        citado.setAllowFlight(false);
                    }
                
                } else {
                
                    //VERIFICA SE O JOGADOR NÃO ESTA COM O FLY ATIVADO, AO USAR ! NO COMEÇO DO IF, ELE VERIFICA SE NAO, AO CONTRARIO DO IF SEM !, QUE RETORNA SIM.
                    if (!p.getAllowFlight()){
                    
                        //MENSAGEM DO FLY DESATIVADO
                        p.sendMessage(" VOA PASSARINHO ");
                        
                        //SETA O FLY DO JOGADOR PARA TRUE, QUE É SIM, PODE VOAR
                        p.setAllowFlight(true);
                    } else {
                        //MENSAGEM TO FLY ATIBADO
                        p.sendMessage(" CAI VACILAO ");
                        
                        //SETA O FLY DO JOGADOR PARA FALSE, QUE É NÃO, NAO VOA
                        p.setAllowFlight(false);
                    }
                }
            } else {
            
                //MANDA MENSAGEM PARA O JOGADOR QUE NAO TEM PERMISSAO posso.voar
                p.sendMessage(" COMANDO APENAS PARA TOPZONES ");
            }
        }
    }
}

Att, Mounton

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

 

 

Pelo que vi, você já começou então:

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
//CÓDIGO
return false;
}

Para começarmos, vamos separar tudo. Comece com;

 

 

O que a Bukkit diz:

  • O que é Command sender? É quem enviou o comando.
  • O que é Command cmd? É o comando que é executado.
  • O que é String label? É o alias do comando que foi usado.
  • O que é String[] args? É matriz de argumentos adicionais,

 

SITE DA BUKKIT: AQUI

 

  • Exemplo de Command sender:
Player p = (Player) sender;

O que ele faz? Bom, ao usar p, retorna o jogador que usou o comando, sendo mais fácil fazer ou setar alguma função que deve ser Player e ignora o uso de (Player) pois já retorna que  "p" já é um Player.

 

 

 

  • Exemplo de Command cmd:
if(cmd.getName().equalsIgnoreCase("gamersboard")) 

O que ele faz? Bom, ao usar o cmd, ele retorna o comando que foi usado, mas não totalmente, deve ser usado um getName() para ser mais preciso, recomendo sempre usar "equalsIgnoreCase" para que, ao checar o comando ser preciso o suficiente e, não ser um parecido como acontece quando usa um equals.

 

 

 

 

  • Exemplo de String label:

Não vou citar nada aqui, pois eu nem uso, e também poucas pessoas usam label.

 

 

 

  • Exemplo de String[] args:
args

args retorna todos os argumentos usado após o /gamersboard como exemplo: /gamersboard criar tópico > retorna criar e tópico pois são os argumentos usados depois do comando.

args.length

args.length retorna a quantidade de argumentos usados após o comando por exemplo: /gamersboard criar server > irá retornar o número 2sempre NÚMERO, pois tem dois argumentos usados depois dos comando.

args[posição]

Este args[posição] não é usado como está acima, é usado args[0]args[1], ao usa-los retorna os argumentos que foram usados no comando, por exemplo /gamersboard estou banido, o args[0] retorna estou, e o args[1] retorna banido, e assim por diante.

 

 

 

 

ADICIONAIS:

Você irá precisar destes códigos:

args.length == 0

Você vai usar este para: checar se você/outro jogador usou o comando correto, por exemplo é /fly , que caso não tenha argumentos, sendo o comando apenas /fly, sem /fly <jogador>, ele irá retornar true, que é verdadeiro.

args.length > 0

Você vai usar este para: checar se você/outro jogador usou o comando correto, por exemplo é  /fly <jogador>, que caso tenha argumentos, sendo o comando /fly <jogador>, sem ser apenas o /fly, ele irá retornar true, que é verdadeiro.

Bukkit.getServer().getPlayer(args[0])

Você vai usar este para: checar se o jogador mencionado no /fly <jogador> é realmente um jogador e se este jogador está online.

 

 

 

TODOS ESSES MÉTODOS SÃO USADOS COM if(), OU EM OUTROS MÉTODOS.

 

 

 

CUIDADO!

Recomendo usar toLowerCase(), que transforma as palavras usadas, em algum método, todas pequenas.

if(args[0].toLowerCase().equalsIgnoreCase("video")) 

Caso você não VEJA se o jogador é um player, a maioria dos seus comandos irão dar errado pois, tem vários de executar um comando, dois deles são, via PLAYER e via CONSOLE.

recomendo no começo do código adicionar:

if(sender instanceof Player) {
     //CÓDIGO
} else {
      p.sendMessage(" APENAS JOGADORES PODEM EXECUTAR ESTE COMANDO ");
}

ou este:

if(sender instanceof Player) {
     //CÓDIGO
} 

O superior, irá mandar uma mensagem, como você talvez seja Dono do servidor, nem precisa de mensagem pois saberá que este comando não é executável pelo console.

 

 

Bom espero que tenha aprendido, irei deixar  o código completo para você tentar entender.

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {

    //VERIFICA SE O JOGADOR É UM PLAYER
    if(sender instanceof Player) {
    
        //REOTNRA p COMO UM PLAYER
        Player p = (Player) sender;
        
        //VERIFICA SE O COMANDO USADO É BARRA FLY, IGNORANDO OUTROS COMO BARRA FLYYY OU FLY<QUALQUER OUTRO ARGUMENTO>
        if(cmd.getName().equalsIgnoreCase("fly")) {
        
            //VERIFICA SE O JOGADOR TEM A PERMISSÃO posso.voar
            if (p.hasPermission("posso.voar")){
            
                //RETORNA O PLAYER DO ARGUMENTO 0 PARA CITADO.
                Player citado = Bukkit.getServer().getPlayer(args[0]);
                
                //VERIFICA SE O JOGADOR CITADO É VERDADEIRO, QUE ESTA ONLINE E É PLAYER
                //TAMBÉM VERIFICA SE O ARGUMENTO CITADO É MAIOR QUE 0, QUE NAO USOU APENAS /FLY
                if(citado && args.length > 0){
                
                    //VERIFICA SE O JOGADOR CITADO NÃO ESTA COM O FLY ATIVADO, AO USAR ! NO COMEÇO DO IF, ELE VERIFICA SE NAO, AO CONTRARIO DO IF SEM !, QUE RETORNA SIM.
                    if (!citado.getAllowFlight()){
                    
                        //MENSAGEM DO FLY DESATIVADO
                        citado.sendMessage(" VOA PASSARINHO ");
                        
                        //SETA O FLY DO JOGADOR CITADO PARA FALSE, QUE É NÃO, NAO VOA
                        citado.setAllowFlight(true);
                    } else {
                        //MENSAGEM TO FLY ATIBADO
                        citado.sendMessage(" CAI VACILAO ");
                        
                        //SETA O FLY DO JOGADOR CITADO PARA TRUE, QUE É SIM, PODE VOAR
                        citado.setAllowFlight(false);
                    }
                
                } else {
                
                    //VERIFICA SE O JOGADOR NÃO ESTA COM O FLY ATIVADO, AO USAR ! NO COMEÇO DO IF, ELE VERIFICA SE NAO, AO CONTRARIO DO IF SEM !, QUE RETORNA SIM.
                    if (!p.getAllowFlight()){
                    
                        //MENSAGEM DO FLY DESATIVADO
                        p.sendMessage(" VOA PASSARINHO ");
                        
                        //SETA O FLY DO JOGADOR PARA FALSE, QUE É NÃO, NAO VOA
                        p.setAllowFlight(true);
                    } else {
                        //MENSAGEM TO FLY ATIBADO
                        p.sendMessage(" CAI VACILAO ");
                        
                        //SETA O FLY DO JOGADOR PARA TRUE, QUE É SIM, PODE VOAR
                        p.setAllowFlight(false);
                    }
                }
            } else {
            
                //MANDA MENSAGEM PARA O JOGADOR QUE NAO TEM PERMISSAO posso.voar
                p.sendMessage(" COMANDO APENAS PARA TOPZONES ");
            }
        }
    }
}

Att, Mounton

 

 

 

tenor.gif

Link para o comentário
Compartilhar em outros sites

Cometi um erro, estou no curso e serei breve.

 

Errei na parte de checar o jogador.

De:

If(citado &&...)

 

Para:

if(citado != null &&..)

 

Ele deve ser != null por conta que, checar se o jogador é diferente de nulo.

 

Algumas checagem:

&& (E Também)

!= (Diferente de)

>= (Método um é maior/igual método dois)

<= (Método um é menor/igual método dois)

< (Método um menor que método dois)

> (Método um maior que método dois)

== (Método um igual método dois)

Link para o comentário
Compartilhar em outros sites

Em 13/08/2018 em 16:07, Mounton disse:

Pelo que vi, você já começou então:


@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
//CÓDIGO
return false;
}

Para começarmos, vamos separar tudo. Comece com;

 

 

O que a Bukkit diz:

  • O que é Command sender? É quem enviou o comando.
  • O que é Command cmd? É o comando que é executado.
  • O que é String label? É o alias do comando que foi usado.
  • O que é String[] args? É matriz de argumentos adicionais,

 

SITE DA BUKKIT: AQUI

 

  • Exemplo de Command sender:

Player p = (Player) sender;

O que ele faz? Bom, ao usar p, retorna o jogador que usou o comando, sendo mais fácil fazer ou setar alguma função que deve ser Player e ignora o uso de (Player) pois já retorna que  "p" já é um Player.

 

 

 

  • Exemplo de Command cmd:

if(cmd.getName().equalsIgnoreCase("gamersboard")) 

O que ele faz? Bom, ao usar o cmd, ele retorna o comando que foi usado, mas não totalmente, deve ser usado um getName() para ser mais preciso, recomendo sempre usar "equalsIgnoreCase" para que, ao checar o comando ser preciso o suficiente e, não ser um parecido como acontece quando usa um equals.

 

 

 

 

  • Exemplo de String label:

Não vou citar nada aqui, pois eu nem uso, e também poucas pessoas usam label.

 

 

 

  • Exemplo de String[] args:

args

args retorna todos os argumentos usado após o /gamersboard como exemplo: /gamersboard criar tópico > retorna criar e tópico pois são os argumentos usados depois do comando.


args.length

args.length retorna a quantidade de argumentos usados após o comando por exemplo: /gamersboard criar server > irá retornar o número 2sempre NÚMERO, pois tem dois argumentos usados depois dos comando.


args[posição]

Este args[posição] não é usado como está acima, é usado args[0]args[1], ao usa-los retorna os argumentos que foram usados no comando, por exemplo /gamersboard estou banido, o args[0] retorna estou, e o args[1] retorna banido, e assim por diante.

 

 

 

 

ADICIONAIS:

Você irá precisar destes códigos:


args.length == 0

Você vai usar este para: checar se você/outro jogador usou o comando correto, por exemplo é /fly , que caso não tenha argumentos, sendo o comando apenas /fly, sem /fly <jogador>, ele irá retornar true, que é verdadeiro.


args.length > 0

Você vai usar este para: checar se você/outro jogador usou o comando correto, por exemplo é  /fly <jogador>, que caso tenha argumentos, sendo o comando /fly <jogador>, sem ser apenas o /fly, ele irá retornar true, que é verdadeiro.


Bukkit.getServer().getPlayer(args[0])

Você vai usar este para: checar se o jogador mencionado no /fly <jogador> é realmente um jogador e se este jogador está online.

 

 

 

TODOS ESSES MÉTODOS SÃO USADOS COM if(), OU EM OUTROS MÉTODOS.

 

 

 

CUIDADO!

Recomendo usar toLowerCase(), que transforma as palavras usadas, em algum método, todas pequenas.


if(args[0].toLowerCase().equalsIgnoreCase("video")) 

Caso você não VEJA se o jogador é um player, a maioria dos seus comandos irão dar errado pois, tem vários de executar um comando, dois deles são, via PLAYER e via CONSOLE.

recomendo no começo do código adicionar:


if(sender instanceof Player) {
     //CÓDIGO
} else {
      p.sendMessage(" APENAS JOGADORES PODEM EXECUTAR ESTE COMANDO ");
}

ou este:


if(sender instanceof Player) {
     //CÓDIGO
} 

O superior, irá mandar uma mensagem, como você talvez seja Dono do servidor, nem precisa de mensagem pois saberá que este comando não é executável pelo console.

 

Algumas checagem:

  • && (E Também)
  • != (Diferente de)
  • >= (Método um é maior/igual método dois)
  • <= (Método um é menor/igual método dois)
  • < (Método um menor que método dois)
  • > (Método um maior que método dois)
  • == (Método um igual método dois)

 

 

Bom espero que tenha aprendido, irei deixar  o código completo para você tentar entender.


@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {

    //VERIFICA SE O JOGADOR É UM PLAYER
    if(sender instanceof Player) {
    
        //REOTNRA p COMO UM PLAYER
        Player p = (Player) sender;
        
        //VERIFICA SE O COMANDO USADO É BARRA FLY, IGNORANDO OUTROS COMO BARRA FLYYY OU FLY<QUALQUER OUTRO ARGUMENTO>
        if(cmd.getName().equalsIgnoreCase("fly")) {
        
            //VERIFICA SE O JOGADOR TEM A PERMISSÃO posso.voar
            if (p.hasPermission("posso.voar")){
            
                //RETORNA O PLAYER DO ARGUMENTO 0 PARA CITADO.
                Player citado = Bukkit.getServer().getPlayer(args[0]);
                
                //VERIFICA SE O JOGADOR CITADO É VERDADEIRO, QUE ESTA ONLINE E É PLAYER
                //TAMBÉM VERIFICA SE O ARGUMENTO CITADO É MAIOR QUE 0, QUE NAO USOU APENAS /FLY
                if(citado != null && args.length > 0){
                
                    //VERIFICA SE O JOGADOR CITADO NÃO ESTA COM O FLY ATIVADO, AO USAR ! NO COMEÇO DO IF, ELE VERIFICA SE NAO, AO CONTRARIO DO IF SEM !, QUE RETORNA SIM.
                    if (!citado.getAllowFlight()){
                    
                        //MENSAGEM DO FLY DESATIVADO
                        citado.sendMessage(" VOA PASSARINHO ");
                        
                        //SETA O FLY DO JOGADOR CITADO PARA TRUE, QUE É SIM, PODE VOAR
                        citado.setAllowFlight(true);
                    } else {
                        //MENSAGEM TO FLY ATIBADO
                        citado.sendMessage(" CAI VACILAO ");
                        
                        //SETA O FLY DO JOGADOR CITADO PARA FALSE, QUE É NÃO, NAO VOA
                        citado.setAllowFlight(false);
                    }
                
                } else {
                
                    //VERIFICA SE O JOGADOR NÃO ESTA COM O FLY ATIVADO, AO USAR ! NO COMEÇO DO IF, ELE VERIFICA SE NAO, AO CONTRARIO DO IF SEM !, QUE RETORNA SIM.
                    if (!p.getAllowFlight()){
                    
                        //MENSAGEM DO FLY DESATIVADO
                        p.sendMessage(" VOA PASSARINHO ");
                        
                        //SETA O FLY DO JOGADOR PARA TRUE, QUE É SIM, PODE VOAR
                        p.setAllowFlight(true);
                    } else {
                        //MENSAGEM TO FLY ATIBADO
                        p.sendMessage(" CAI VACILAO ");
                        
                        //SETA O FLY DO JOGADOR PARA FALSE, QUE É NÃO, NAO VOA
                        p.setAllowFlight(false);
                    }
                }
            } else {
            
                //MANDA MENSAGEM PARA O JOGADOR QUE NAO TEM PERMISSAO posso.voar
                p.sendMessage(" COMANDO APENAS PARA TOPZONES ");
            }
        }
    }
}

Att, Mounton

@OFF-TOPIC
Meus parabéns pela resposta, isso iria me ajudar muito hoje mais cedo, pena que só vi agora kkk.

Editado por yemiefi
Esqueci de um detalhe
Link para o comentário
Compartilhar em outros sites

Basta você checar o gamemode do jogador.

22 minutos atrás, Cassiano_14 disse:

Cara, eu ja falei, eu ja tentei fazer assim e não deu, é porque o fly não tem o gm 0, 1, 2, 3, ja o gamemode tem 

depois de ter checado se ele ta on e tudo mais, tente usar assim

 

if (args[0].getGameMode().equals(GameMode.SURVIVAL){

        returna verdadeiro se o jogador estiver com gamemode survival

}else {

        retorna falso se não tiver.

}

 

GameMode.SURVIVAL

GameMode.CREATIVE

GameMode.SPECTATOR

GameMode.ADVENTURE

Link para o comentário
Compartilhar em outros sites

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