joao100101 Postado Dezembro 19, 2016 Denunciar Compartilhar Postado Dezembro 19, 2016 Duvida: queria saber como faço pro plugin anunciar uma mensagem a cada periodo de tempo e como cancelar essa mensagem Simplificando: como criar uma task e cancelar ela Exemplo [bot]: oiee 60 segundos depois.. [bot]: oieee (Player): nossa que bot chato (Player): /bot desativar Link para o comentário Compartilhar em outros sites More sharing options...
Lüigi! Postado Dezembro 22, 2016 Denunciar Compartilhar Postado Dezembro 22, 2016 É só ele abrir os outros dps, nos meus pls sempre da certo pq eu sei disso adsuodhas. E outra, ele só ta com essa task no plugin. Mas é sempre bom explicar né... Nunca se sabe, e já ensina como faz pelo BukkitRunnable (que eu acho pouco melhor): BukkitRunnable br = new BukkitRunnable() { @Override public void run() { //Código //Se quiser cancelar: this.cancel(); } }; br.runTaskTimer(plugin, delay, period); 1 Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 19, 2016 Denunciar Compartilhar Postado Dezembro 19, 2016 Então, no meu ponto de vista vc cria uma syncRepeatingTask no onEnable, e dentro dela vc coloca assim um for que pega todos os players online, exemplo: for(Player p : Bukkit.getOnlinePlayers()){ e dentro do for você coloca um if para só mandar mensagem pro players se o player estiver dentro de uma ArrayList. Você coloca pra quando o jogador entrar no servidor ele ser colocado na array e quando sair ser tirado, ou ele pode ser tirado e colocado através de comandos (ativando e desativando o recebimento de msgs) Aquela parte do for pode ter algum erro de sintaxe, fiz a mão. Espero ter ajudado 1 Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 21, 2016 Autor Denunciar Compartilhar Postado Dezembro 21, 2016 Então, no meu ponto de vista vc cria uma syncRepeatingTask no onEnable, e dentro dela vc coloca assim um for que pega todos os players online, exemplo: for(Player p : Bukkit.getOnlinePlayers()){ e dentro do for você coloca um if para só mandar mensagem pro players se o player estiver dentro de uma ArrayList. Você coloca pra quando o jogador entrar no servidor ele ser colocado na array e quando sair ser tirado, ou ele pode ser tirado e colocado através de comandos (ativando e desativando o recebimento de msgs) Aquela parte do for pode ter algum erro de sintaxe, fiz a mão. Espero ter ajudado eu queria fazer pra anuncio de evento pra quando iniciar já começar anunciar, mas não tenho a mínima ideia de como fazer, pode me ajudar? Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 21, 2016 Denunciar Compartilhar Postado Dezembro 21, 2016 eu queria fazer pra anuncio de evento pra quando iniciar já começar anunciar, mas não tenho a mínima ideia de como fazer, pode me ajudar? Me mostra o código que você já tem, na parte que inicia o evento. Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 21, 2016 Autor Denunciar Compartilhar Postado Dezembro 21, 2016 https://hastebin.com/umuzayecub.swift Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 21, 2016 Denunciar Compartilhar Postado Dezembro 21, 2016 Tenta isso https://hastebin.com/ruhefaxiji.cs Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 21, 2016 Autor Denunciar Compartilhar Postado Dezembro 21, 2016 Tenta isso https://hastebin.com/ruhefaxiji.cs Erro https://hastebin.com/vuserilini.vbs Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 21, 2016 Denunciar Compartilhar Postado Dezembro 21, 2016 Erro https://hastebin.com/vuserilini.vbs Onde eu coloquei "plugin" você coloca "this" Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 21, 2016 Autor Denunciar Compartilhar Postado Dezembro 21, 2016 Onde eu coloquei "plugin" você coloca "this" agora ta dando esse erro no eclipse e continua o mesmo erro no servidor //the method canceltasks( plugin) in the type BukkitRunnable is not applicable for the arguments (new Runnable(){}) Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 21, 2016 Denunciar Compartilhar Postado Dezembro 21, 2016 agora ta dando esse erro no eclipse e continua o mesmo erro no servidor //the method canceltasks( plugin) in the type BukkitRunnable is not applicable for the arguments (new Runnable(){}) vc colocou canceltasks(this)? Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 21, 2016 Autor Denunciar Compartilhar Postado Dezembro 21, 2016 vc colocou canceltasks(this)? coloquei Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 21, 2016 Denunciar Compartilhar Postado Dezembro 21, 2016 https://hastebin.com/tagozukufe.cs- Tenta A taskToCancel tá antes do onEnable, fiquei com preguiça de colar o resto do código e.e Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 21, 2016 Autor Denunciar Compartilhar Postado Dezembro 21, 2016 https://hastebin.com/tagozukufe.cs- Tenta A taskToCancel tá antes do onEnable, fiquei com preguiça de colar o resto do código e.e continua o mesmo erro. //the method canceltasks( plugin) in the type BukkitRunnable is not applicable for the arguments (BukkitTask) Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 21, 2016 Denunciar Compartilhar Postado Dezembro 21, 2016 https://hastebin.com/ojokuxuguf.cs esse agora Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 21, 2016 Autor Denunciar Compartilhar Postado Dezembro 21, 2016 https://hastebin.com/ojokuxuguf.cs esse agora Parou o erro no eclipse, mas da isso no console https://hastebin.com/sujemexaji.vbs Linha 166: Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 21, 2016 Denunciar Compartilhar Postado Dezembro 21, 2016 (editado) Mas a linha 166 tem que ser: Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() Editado Dezembro 21, 2016 por Kami No lugar de plugin é this Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 21, 2016 Autor Denunciar Compartilhar Postado Dezembro 21, 2016 Mas a linha 166 tem que ser: Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() http://imgur.com/a/r1hAW Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 21, 2016 Denunciar Compartilhar Postado Dezembro 21, 2016 http://imgur.com/a/r1hAW Clica na primeira opção e testa Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 21, 2016 Autor Denunciar Compartilhar Postado Dezembro 21, 2016 Clica na primeira opção e testa https://hastebin.com/elegeyuxah.vbs Linha 165: Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask((Plugin) this, new Runnable() { Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 21, 2016 Denunciar Compartilhar Postado Dezembro 21, 2016 Pelo que eu entendi essa é a classe principal, então use: private Comandos plugin; public void onEnable(){ plugin = this; } E dai no lugar de "(Plugin) this" vc coloca plugin Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 21, 2016 Autor Denunciar Compartilhar Postado Dezembro 21, 2016 Pelo que eu entendi essa é a classe principal, então use: private Comandos plugin; public void onEnable(){ plugin = this; } E dai no lugar de "(Plugin) this" vc coloca plugin Erro: http://imgur.com/a/xXbuB Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 21, 2016 Denunciar Compartilhar Postado Dezembro 21, 2016 Cria a variável plugin antes do onEnable private Comandos plugin; Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 21, 2016 Autor Denunciar Compartilhar Postado Dezembro 21, 2016 Cria a variável plugin antes do onEnable private Comandos plugin; http://imgur.com/a/WFmOx Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 21, 2016 Denunciar Compartilhar Postado Dezembro 21, 2016 Ta, essa não é a classe principal, então vc vai fazer assim: 1o tira esse onEnable dai e coloca isso no lugar: private Main plugin; public Comandos(Main main){ plugin = main; } E no onEnable na classe principal vc faz assim: public Comandos comandos; public void onEnable(){ comandos = new Comandos(this); } Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 22, 2016 Autor Denunciar Compartilhar Postado Dezembro 22, 2016 Ta, essa não é a classe principal, então vc vai fazer assim: 1o tira esse onEnable dai e coloca isso no lugar: private Main plugin; public Comandos(Main main){ plugin = main; } E no onEnable na classe principal vc faz assim: public Comandos comandos; public void onEnable(){ comandos = new Comandos(this); } http://imgur.com/a/q49qj quando tentei mudar para "new Comandos(null);" deu isso: https://hastebin.com/wudizoyoxo.vbs Linha 140: Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() { Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 22, 2016 Denunciar Compartilhar Postado Dezembro 22, 2016 http://imgur.com/a/q49qj quando tentei mudar para "new Comandos(null);" deu isso: https://hastebin.com/wudizoyoxo.vbs Linha 140: Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() { Troca a ordem, coloca primeiro comandos = new Comandos(this); e depois vc coloca getCommand("sla").setExecutor(comandos); Link para o comentário Compartilhar em outros sites More sharing options...
joao100101 Postado Dezembro 22, 2016 Autor Denunciar Compartilhar Postado Dezembro 22, 2016 Troca a ordem, coloca primeiro comandos = new Comandos(this); e depois vc coloca getCommand("sla").setExecutor(comandos); agora foi, só que quando as chamadas acabam ele fica repetindo "iniciando evento....." Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 22, 2016 Denunciar Compartilhar Postado Dezembro 22, 2016 Depois do código que manda a msg e todas as instruções vc manda isso: Bukkit.getScheduler().cancelTasks(plugin); Não esquece de deixar fora do "for" Link para o comentário Compartilhar em outros sites More sharing options...
Lüigi! Postado Dezembro 22, 2016 Denunciar Compartilhar Postado Dezembro 22, 2016 Depois do código que manda a msg e todas as instruções vc manda isso: Bukkit.getScheduler().cancelTasks(plugin); Não esquece de deixar fora do "for" Isso vai cancelar TODOS os tasks do plugin, taligado né? Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Dezembro 22, 2016 Denunciar Compartilhar Postado Dezembro 22, 2016 Isso vai cancelar TODOS os tasks do plugin, taligado né? É só ele abrir os outros dps, nos meus pls sempre da certo pq eu sei disso adsuodhas. E outra, ele só ta com essa task no plugin. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
joao100101
Duvida: queria saber como faço pro plugin anunciar uma mensagem a cada periodo de tempo e como cancelar essa mensagem
Simplificando: como criar uma task e cancelar ela
Exemplo
[bot]: oiee
60 segundos depois..
[bot]: oieee
(Player): nossa que bot chato
(Player): /bot desativar
Link para o comentário
Compartilhar em outros sites
37 respostass a esta questão
Posts Recomendados