[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:
    758
    Sexo:
    Masculino
    Avaliações:
    +224 / -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 Veterano VIP Sabotador.com VIP Sabotador.com VIP Industrial

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

    WizardlyBump17 Membro Ativo

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

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

    Afiliado:
    5 Maio 2014
    Mensagens:
    1,907
    Sexo:
    Masculino
    Avaliações:
    +651 / -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:
    758
    Sexo:
    Masculino
    Avaliações:
    +224 / -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