Ir para conteúdo
  • 0

Auto anuncio


joao100101

Pergunta

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

Posts Recomendados

  Em 22/12/2016 em 00:23, Kami disse:

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

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

Link para o comentário
Compartilhar em outros sites

  Em 19/12/2016 em 19:08, Kami disse:

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

  Em 21/12/2016 em 17:45, joao100101 disse:

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

  Em 21/12/2016 em 20:18, Kami disse:

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

  Em 21/12/2016 em 21:17, joao100101 disse:

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

  Em 21/12/2016 em 21:45, Kami disse:

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

  Em 21/12/2016 em 23:01, Kami disse:

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

  Em 21/12/2016 em 23:35, Kami disse:

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

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

  Em 21/12/2016 em 23:46, Kami disse:

 

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

  Em 22/12/2016 em 00:02, joao100101 disse:

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

  Em 22/12/2016 em 00:04, Kami disse:

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

  Em 22/12/2016 em 00:12, Kami disse:

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

  Em 22/12/2016 em 00:22, Lüigi! disse:

 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

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