Ir para conteúdo

Desativar e ativar evento por comando


zToodi

Posts Recomendados

Estou com uma duvida!

Quando eu digitar o comando /valor o plugin vai mandar no chat "Digite o valor no chat necessario"

e quando eu digitar um valor no chat (Numero) vai acontecer algo.

Porém se eu digitar um valor no chat sem ter digitado o /valor não vai acontecer nada.

Como faço esse sistema?

Link para o comentário
Compartilhar em outros sites

Eu usaria um ArrayList e um runtasklater para definir o tempo

 

//nao vou colocar os public void e bla bla bla, so o basico pra entender
onCommand(){
    Player player = (player)sender;
	if(command.getName().equals("valor"){
		player.sendMessage("digite o valor no chat");
        usaramComando.add(player);//add o player a lista de pessoas que usaram comando mas nao disseram o numero
		new bukkitrunnable( //Timer de 30s para caso o jogador nao digite nada
		//nao lembro oque vem dentro
			run(){
                if(usaramComando.contains(player){ //depois dos 30s ele verifica se o jogador ja digitou o numero, se nao ele expira
					usaramComando.remove(player);
                  	player.sendMessage("Tempo esgotado");
                }
			}
		}}.runTaskLater(this, 20*30);//20*30 = (20ticks/1s) totaliza 30s

}

private ArrayList<Player> usaramComando = new ArrayList<>(); //lista de todos que usaram /valor mas nao disseram o numero ainda
                   
event(AsyncPlayerChatEvent e){ //evento de msg no chat
    if(!usaramComando.contains(e.getPlayer()) return; //verifica se esta esperando o jogador dizer o numero
    String msg = e.getMessage(); //msg enviada no chat
    int valor = null;
    try{
      valor = Integer.parseInt(msg); //verifica se é um numero valido
    }catch(){
      //nao é um numero inteiro (pode ser letras)
      //msg de nao é um numero vai aqui
      usaramComando.remove(e.getPlayer());
    }
    if(valor != null){
      //player digitou um valor valido
      usaramComando.remove(e.getPlayer);
      e.setCancelled(true); //impede que o numero apareça no chat
    }
}

 

Link para o comentário
Compartilhar em outros sites

11 horas atrás, mabazi disse:

Eu usaria um ArrayList e um runtasklater para definir o tempo

 


//nao vou colocar os public void e bla bla bla, so o basico pra entender
onCommand(){
    Player player = (player)sender;
	if(command.getName().equals("valor"){
		player.sendMessage("digite o valor no chat");
        usaramComando.add(player);//add o player a lista de pessoas que usaram comando mas nao disseram o numero
		new bukkitrunnable( //Timer de 30s para caso o jogador nao digite nada
		//nao lembro oque vem dentro
			run(){
                if(usaramComando.contains(player){ //depois dos 30s ele verifica se o jogador ja digitou o numero, se nao ele expira
					usaramComando.remove(player);
                  	player.sendMessage("Tempo esgotado");
                }
			}
		}}.runTaskLater(this, 20*30);//20*30 = (20ticks/1s) totaliza 30s

}

private ArrayList<Player> usaramComando = new ArrayList<>(); //lista de todos que usaram /valor mas nao disseram o numero ainda
                   
event(AsyncPlayerChatEvent e){ //evento de msg no chat
    if(!usaramComando.contains(e.getPlayer()) return; //verifica se esta esperando o jogador dizer o numero
    String msg = e.getMessage(); //msg enviada no chat
    int valor = null;
    try{
      valor = Integer.parseInt(msg); //verifica se é um numero valido
    }catch(){
      //nao é um numero inteiro (pode ser letras)
      //msg de nao é um numero vai aqui
      usaramComando.remove(e.getPlayer());
    }
    if(valor != null){
      //player digitou um valor valido
      usaramComando.remove(e.getPlayer);
      e.setCancelled(true); //impede que o numero apareça no chat
    }
}

 

da esse erro -> image.png.34ff701ddd2d243c27765dbd7ab1c07d.png

Link para o comentário
Compartilhar em outros sites

19 minutos atrás, zToodi disse:

da esse erro -> image.png.34ff701ddd2d243c27765dbd7ab1c07d.png

erro meu, int nunca sera null, ele muda pra 0

 

boolean isInt = false;
try{
      valor = Integer.parseInt(msg); //verifica se é um numero valido
  	  isInt = true;
}catch(){
      //nao é um numero inteiro (pode ser letras)
      //msg de nao é um numero vai aqui
      usaramComando.remove(e.getPlayer());
}
if(isInt){
      //player digitou um valor valido
      usaramComando.remove(e.getPlayer);
      e.setCancelled(true); //impede que o numero apareça no chat
}

só add um boolean de verificação que inicia com false e se o jogador digitar um numero valido muda pra true e executa as ordens

Link para o comentário
Compartilhar em outros sites

1 hora atrás, mabazi disse:

erro meu, int nunca sera null, ele muda pra 0

 


boolean isInt = false;
try{
      valor = Integer.parseInt(msg); //verifica se é um numero valido
  	  isInt = true;
}catch(){
      //nao é um numero inteiro (pode ser letras)
      //msg de nao é um numero vai aqui
      usaramComando.remove(e.getPlayer());
}
if(isInt){
      //player digitou um valor valido
      usaramComando.remove(e.getPlayer);
      e.setCancelled(true); //impede que o numero apareça no chat
}

só add um boolean de verificação que inicia com false e se o jogador digitar um numero valido muda pra true e executa as ordens

image.png.2431a46e033177cb75e86feae3ab76e1.png

Link para o comentário
Compartilhar em outros sites

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