Ir para conteúdo

[Bukkit Title] Como simplificar um scheduleAsync como este?


ramon-bernardo

Posts Recomendados

Como eu simplifico um schedule como este ? ._. esse é um exemplo, se eu for fazer do jeito que eu quero, vai ter umas 1000 linha ._.

		Bukkit.getScheduler().scheduleAsyncDelayedTask(instance, new Runnable(){

			@Override
			public void run() {
				a.enviarTitle(p, "", "          O", 0, 1, 0);
				Bukkit.getScheduler().scheduleAsyncDelayedTask(instance, new Runnable(){

					@Override
					public void run() {
						a.enviarTitle(p, "", "         OI", 0, 1, 0);
						Bukkit.getScheduler().scheduleAsyncDelayedTask(instance, new Runnable(){

							@Override
							public void run() {
								a.enviarTitle(p, "", "        OI B", 0, 1, 0);
								Bukkit.getScheduler().scheduleAsyncDelayedTask(instance, new Runnable(){

									@Override
									public void run() {
										a.enviarTitle(p, "", "       OI BE", 0, 1, 0);
										Bukkit.getScheduler().scheduleAsyncDelayedTask(instance, new Runnable(){

											@Override
											public void run() {
												a.enviarTitle(p, "", "      OI BEM", 0, 1, 0);
												Bukkit.getScheduler().scheduleAsyncDelayedTask(instance, new Runnable(){

													@Override
													public void run() {
														a.enviarTitle(p, "", "     OI BEM V", 0, 1, 0);
														Bukkit.getScheduler().scheduleAsyncDelayedTask(instance, new Runnable(){

															@Override
															public void run() {
																a.enviarTitle(p, "", "    OI BEM VI", 0, 1, 0);
																Bukkit.getScheduler().scheduleAsyncDelayedTask(instance, new Runnable(){

																	@Override
																	public void run() {
																		a.enviarTitle(p, "", "   OI BEM  VIN", 0, 1, 0);
																		Bukkit.getScheduler().scheduleAsyncDelayedTask(instance, new Runnable(){

																			@Override
																			public void run() {
																				a.enviarTitle(p, "", "  OI BEM VIND", 0, 1, 0);
																				Bukkit.getScheduler().scheduleAsyncDelayedTask(instance, new Runnable(){

																					@Override
																					public void run() {
																						a.enviarTitle(p, "", " OI BEM VINDO", 0, 1, 0);
																					}
																					
																			    }, 2);
																			}
																			
																	    }, 2);
																	}
																	
															    }, 2);
															}
															
													    }, 2);
														
													}
													
											    }, 2);
											}
											
									    }, 2);
									}
									
							    }, 2);
							}
							
					    }, 2);
					}
					
			    }, 2);
			}
			
	    }, 2);

 

Link para o comentário
Compartilhar em outros sites

Testa isso aqui:

        new BukkitRunnable(){
            String texto = "Bem vindo";
            int i = 0;
            @Override
            public void run() {
                String format = texto.replace(texto.substring(i), "");
                a.enviarTitle(p, "", texto, 0, 1, 0);
                i++;
            }

        }.runTaskTimer(seuPl, 20L, 20L);

 

Link para o comentário
Compartilhar em outros sites

10 minutos atrás, vitorblog disse:

Testa isso aqui:


        new BukkitRunnable(){
            String texto = "Bem vindo";
            int i = 0;
            @Override
            public void run() {
                String format = texto.replace(texto.substring(i), "");
                a.enviarTitle(p, "", texto, 0, 1, 0);
                i++;
            }

        }.runTaskTimer(seuPl, 20L, 20L);

 

Deu certo, único erro ai foi:

esquecer de adicionar o string format na msg kkkk :3

 

Como eu cancelo essa task depois de terminar?

http://prntscr.com/klc1d5

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

19 minutos atrás, Mounton disse:

Deu certo, único erro ai foi:

esquecer de adicionar o string format na msg kkkk :3

 

Como eu cancelo essa task depois de terminar?

http://prntscr.com/klc1d5

pra cancelar basta botar "this.cancel()" dentro do run se eu não me engano bota um if pra verificar se i > -1

Link para o comentário
Compartilhar em outros sites

15 minutos atrás, vitorblog disse:

pra cancelar basta botar "this.cancel()" dentro do run se eu não me engano bota um if pra verificar se i > -1

Bom, único jeito que eu consegui foi:

Contei quantos caracteres tinha a minha msg, ai coloquei assim

	            if(i <= 9) {
	            	String format = texto.replace(texto.substring(i), "");
	            	a.enviarTitle(p, "", format, 0, 1, 0);
					i++;
	            }else {
	            	this.cancel();
	            }

ai quando chega em 9, ele para ._.

Consegue imaginar outra forma? eu pensei em conta o "texto", mas não pensei em  como retornar ele ._.

Link para o comentário
Compartilhar em outros sites

Faz assim:

new BukkitRunnable(){
  String message = "Yep, assim mesmo.";
  int count = 1;
  public void run(){
    if(count != message.length()+1){
      a.enviarTitle(p, "", message.substring(0,count), 0, 1, 0);
      count++;
    }else{
      cancel();
    }
  }
}.runTaskTimer(plugin, 20, 10);


 

Link para o comentário
Compartilhar em outros sites

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