Cassiano_14 Postado Agosto 13, 2018 Denunciar Compartilhar Postado Agosto 13, 2018 (editado) Eu queria saber como faz para setar tipo o gamemode ou o fly em outro player, eu to conseguindo só setar pra mim mesmo porque eu não sei o código. Eu to fazendo um plugin. Editado Agosto 13, 2018 por Cassiano_14 Link para o comentário Compartilhar em outros sites More sharing options...
Viiict0r Postado Agosto 13, 2018 Denunciar Compartilhar Postado Agosto 13, 2018 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 =) 1 Link para o comentário Compartilhar em outros sites More sharing options...
ramon-bernardo Postado Agosto 13, 2018 Denunciar Compartilhar Postado Agosto 13, 2018 (editado) 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 O 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 O args.length retorna a quantidade de argumentos usados após o comando por exemplo: /gamersboard criar server > irá retornar o número 2, sempre 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 Agosto 14, 2018 por Mounton 3 Link para o comentário Compartilhar em outros sites More sharing options...
bieel1503 Postado Agosto 13, 2018 Denunciar Compartilhar Postado Agosto 13, 2018 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 O 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 O args.length retorna a quantidade de argumentos usados após o comando por exemplo: /gamersboard criar server > irá retornar o número 2, sempre 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 Link para o comentário Compartilhar em outros sites More sharing options...
Taczin Postado Agosto 13, 2018 Denunciar Compartilhar Postado Agosto 13, 2018 Resolvido? Link para o comentário Compartilhar em outros sites More sharing options...
ramon-bernardo Postado Agosto 14, 2018 Denunciar Compartilhar Postado Agosto 14, 2018 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 More sharing options...
Cassiano_14 Postado Agosto 19, 2018 Autor Denunciar Compartilhar Postado Agosto 19, 2018 (editado) Nenhum funcionou, tipo, no meu codigo aqui, eu consigo setar o gamemode em mim, mas não consigo setar em outro jogador o de fly eu consegui, mas o de gm não Editado Agosto 19, 2018 por Cassiano_14 Mesclar Link para o comentário Compartilhar em outros sites More sharing options...
Cassiano_14 Postado Agosto 19, 2018 Autor Denunciar Compartilhar Postado Agosto 19, 2018 (editado) não mesclei Editado Agosto 19, 2018 por Cassiano_14 não mesclei Link para o comentário Compartilhar em outros sites More sharing options...
yemiefi Postado Agosto 19, 2018 Denunciar Compartilhar Postado Agosto 19, 2018 (editado) 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 O 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 O args.length retorna a quantidade de argumentos usados após o comando por exemplo: /gamersboard criar server > irá retornar o número 2, sempre 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 Agosto 19, 2018 por yemiefi Esqueci de um detalhe Link para o comentário Compartilhar em outros sites More sharing options...
ramon-bernardo Postado Agosto 19, 2018 Denunciar Compartilhar Postado Agosto 19, 2018 6 horas atrás, Cassiano_14 disse: não mesclei Você vai fazer o mesmo modo do Fly, só troca o setfly dai. Link para o comentário Compartilhar em outros sites More sharing options...
Cassiano_14 Postado Agosto 19, 2018 Autor Denunciar Compartilhar Postado Agosto 19, 2018 12 horas atrás, Mounton disse: Você vai fazer o mesmo modo do Fly, só troca o setfly dai. 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 Link para o comentário Compartilhar em outros sites More sharing options...
ramon-bernardo Postado Agosto 19, 2018 Denunciar Compartilhar Postado Agosto 19, 2018 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 More sharing options...
Reset Postado Dezembro 21, 2018 Denunciar Compartilhar Postado Dezembro 21, 2018 Seu tópico está sendo avisado de Inatividade. Caso não haja respostas em 7 dias, ele será fechado. Link para o comentário Compartilhar em outros sites More sharing options...
Gero Postado Fevereiro 1, 2019 Denunciar Compartilhar Postado Fevereiro 1, 2019 Seu tópico foi marcado como Inativo. Para reverter está ação, entre em contato com a equipe de Moderação. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados