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

É 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

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

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

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

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

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

 

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

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

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

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