[Erro] i-- sendo repetido várias vezes

Discussão em 'Desenvolvimento de Mods e Plugins' iniciado por WizardlyBump17, 4 Junho 2019.

  1. WizardlyBump17
    Offline

    WizardlyBump17 Membro Ativo

    Afiliado:
    11 Março 2018
    Mensagens:
    722
    Sexo:
    Masculino
    Avaliações:
    +215 / -2
    Apelido no Minecraft:
    WizardlyBump17
    Código (Forge Crash):

    package login.events;

    import java.sql.SQLException;

    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;

    import login.apis.API;
    import login.apis.ActionBarMessage;
    import login.main.Main;

    public class Entrar implements Listener {
       
       int i;
       @SuppressWarnings("deprecation")
       @EventHandler
       public void aoEntrar(PlayerJoinEvent e) {
         Player p = e.getPlayer();
         try {
           if(!API.registrado(p)) {
             i = new Integer(30);
             Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getJavaPlugin(), new Runnable() {
               @Override
               public void run() {
                 if(!API.logado(p))
                 if(i > 0) {
                   i--;
                   ActionBarMessage.sendMessage(p, "§cVocê tem " + i + " segundos para se registrar!");
                 }
               }
             }, 1*20, 1*20);
             Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getJavaPlugin(), new Runnable() {
               @Override
               public void run() {
                 if(!API.logado(p))
                 p.sendMessage("§9Registre-se usando §b/register (senha) (senha)");
               }
             }, 3*20, 3*20);
             Bukkit.getScheduler().runTaskLater(Main.getJavaPlugin(), new Runnable() {
               @Override
               public void run() {
                 if(!API.logado(p))
                 p.kickPlayer("§cVocê demorou para se registrar!");
                 i = 30;
               }
             }, 30*20);
           } else {
             i = new Integer(30);
             Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getJavaPlugin(), new Runnable() {
               @Override
               public void run() {
                 if(!API.logado(p))
                 if(i > 0) {
                   i--;
                   ActionBarMessage.sendMessage(p, "§cVocê tem " + i + " segundos para se logar!");
                 }
               }
             }, 1*20, 1*20);
             Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getJavaPlugin(), new Runnable() {
               @Override
               public void run() {
                 if(!API.logado(p))
                 p.sendMessage("§9Logue-se usando §b/login (senha)");
               }
             }, 3*20, 3*20);
             Bukkit.getScheduler().runTaskLater(Main.getJavaPlugin(), new Runnable() {
               @Override
               public void run() {
                 if(!API.logado(p))
                 p.kickPlayer("§cVocê demorou para se logar!");
                 i = 30;
               }
             }, 30*20);
           }
         } catch (SQLException e1) {
           e1.printStackTrace();
         }
       }
    }
     

    Tudo ocorre mais ou menos bem. Eu entro no sv e fica mandando a mensagem: "você tem x segundos para logar" até ai td bem mas, se eu deslogar e entrar, fica mandando a mensagem: "você tem x segundos para logar" porém esse x que é o i do código, vai diminuindo de 2 em 2 e n de 1 em 1 igual eu quero, e se eu deslogar e entrar dnv, vai diminuindo de 3 em 3 e assim por diante. O interessante é que depois de um tempo, a mensagem para e dps ela volta (eu mandei no codigo para ela parar quando chegar a 0, mas depois de alguns segundos, ela volta dnv)
     
  2. armelin1
    Offline

    armelin1 Moderador Sênior do Fórum Equipe GameMods Moderador do Fórum Moderador do Aventura Veterano VIP Sabotador.com VIP Sabotador.com VIP Industrial

    Afiliado:
    5 Maio 2014
    Mensagens:
    1,876
    Sexo:
    Masculino
    Avaliações:
    +641 / -0
    Apelido no Minecraft:
    armelin1
    Você não encerrou nenhum Runnable.
     
  3. WizardlyBump17
    Offline

    WizardlyBump17 Membro Ativo

    Afiliado:
    11 Março 2018
    Mensagens:
    722
    Sexo:
    Masculino
    Avaliações:
    +215 / -2
    Apelido no Minecraft:
    WizardlyBump17
    E como cancela?
     
  4. armelin1
    Offline

    armelin1 Moderador Sênior do Fórum Equipe GameMods Moderador do Fórum Moderador do Aventura Veterano VIP Sabotador.com VIP Sabotador.com VIP Industrial

    Afiliado:
    5 Maio 2014
    Mensagens:
    1,876
    Sexo:
    Masculino
    Avaliações:
    +641 / -0
    Apelido no Minecraft:
    armelin1
    Use o BukkitRunnable e use o método cancel.
     
  5. WizardlyBump17
    Offline

    WizardlyBump17 Membro Ativo

    Afiliado:
    11 Março 2018
    Mensagens:
    722
    Sexo:
    Masculino
    Avaliações:
    +215 / -2
    Apelido no Minecraft:
    WizardlyBump17
    Man, eu tentei isso mas ainda da erro. Oq ta errado?
    Código (Forge Crash):

    BukkitRunnable r = new BukkitRunnable() {
               @Override
               public void run() {
                 if(!API.logado(p))
                 if(i > 0) {
                   i--;
                   ActionBarMessage.sendMessage(p, "§cVocê tem " + i + " segundos para se registrar!");
                 }
               }
             };
             if(!API.logado(p)) {
               Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getJavaPlugin(), r, 1*20, 1*20);
             } else {
               r.cancel();
             }
     
     

Compartilhe esta Página