Ir para conteúdo
  • 0

Scheduler cada player com seu Task


FilipeNock

Pergunta

	static int id;
	static int count = 30;
	
	public static void PlayCountdown(Player p) {
		id = Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getInstance(), new Runnable() {
			
			@Override
			public void run() {
				p.sendMessage("§cTeste countdown: " + count);
				count--;
				if (count == 0) {
					Bukkit.getScheduler().cancelTask(id);
					p.sendMessage("§aCountdown finalizado");
				}
				
			}
		}, 0, 20);
	}

exemplo, estou tentando fazer com que cada player tenha um id diferente pra não atrapalhar um ao outro! no meu codigo se eu dou playcountdown o outro player que executou a contagem fica toda atrapalhada! queria fazer id/count pra cada player! como posso fazer isso?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

	static int id;
	static int count = 30;
	
	public static void PlayCountdown(Player p) {
		id = Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getInstance(), new Runnable() {
			
			@Override
			public void run() {
				p.sendMessage("§cTeste countdown: " + count);
				count--;
				if (count == 0) {
					Bukkit.getScheduler().cancelTask(id);
					p.sendMessage("§aCountdown finalizado");
				}
				
			}
		}, 0, 20);
	}

exemplo, estou tentando fazer com que cada player tenha um id diferente pra não atrapalhar um ao outro! no meu codigo se eu dou playcountdown o outro player que executou a contagem fica toda atrapalhada! queria fazer id/count pra cada player! como posso fazer isso?

 

 

new BukkitRunnable() {
			
			@Override
			public void run() {
				p.sendMessage("§cTeste countdown: " + count);
				count--;
				if (count == 0) {
					Bukkit.getScheduler().cancelTask(id);
					p.sendMessage("§aCountdown finalizado");
				}
				
			}
		}.runTaskTimerAsynchronously(this /* Instancia da sua main*/, 0, 20);

Recomendo você o usar Hashmap pra salvar o count.

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

new BukkitRunnable() {
			
			@Override
			public void run() {
				p.sendMessage("§cTeste countdown: " + count);
				count--;
				if (count == 0) {
					Bukkit.getScheduler().cancelTask(id);
					p.sendMessage("§aCountdown finalizado");
				}
				
			}
		}.runTaskTimerAsynchronously(this /* Instancia da sua main*/, 0, 20);

Recomendo você o usar Hashmap pra salvar o count.

 

eu resolvi de outro jeito aqui mas é uma boa ideia pra salvar a count e o id do scheduler vlw

Link para o comentário
Compartilhar em outros sites

eu resolvi de outro jeito aqui mas é uma boa ideia pra salvar a count e o id do scheduler vlw

Não precisa salvar o id, se tu quiser cancelar só chamar o cancel()

 

Faz assim Hashmap<String, int> hash;

 

hash.put.("Rodrigo"/* Nick do player*/, 1 /* Tempo que ele ficou online, recomendo usar System.currenttimemillis() */);

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

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