Ir para conteúdo

[Tutorial] Como fazer Cooldowns Simples.


Katho

Posts Recomendados

Olá hoje eu vim aqui trazer um tutorial sobre Cooldown para BukkitAPI.

Isso só não é para BukkitAPI , pois existem varios outros usos.

separator_line-01-01.png

 

Bom esse é meu primeiro tutorial então se faltar alguma coisa ou não consiguirem entender muito bem me falem nas respostas, pois eu ainda não consigo muito bem explicar algumas coisas...

 

Bom começando esse cooldown apenas serve para cooldown relacionados a Players pois ele não é uma runnable para rodar no servidor então ainda é melhor usar Loops para fazer coisas relacionado a tempo em eventos....

Ou seja ele serve apenas para eventos com player...

 

Primeiro vamos criar uma hashmap com um Player e uma Long.

private HashMap<Player, Long> cooldown = new HashMap<>();

Isso ira armazenar o tempo que resta do cooldown e qual player está rodando ele, depois asim criamos o metodo.

public void metodoCooldown(Player p) {


}

Logo depois adicionamos o tempo do Cooldown ou seja quanto tempo ele ira ficar no cooldown...

public void metodoCooldown(Player p) {

int cdTempo = 3; // Tempo do Cooldown em Segundos.

}

agora iremos checar se o player estiver nessa Hashmap ou seja se ele estiver em cooldown.

public void metodoCooldown(Player p) {

int cdTempo = 3; // Tempo do Cooldown em Segundos.

if (cooldown.containsKey(p)) {



}

} 

Depois vamos criar uma long que mostra o resto do cooldown (Quanto tempo falta.)

long cdRestante = ((cooldown.get(p) / 1000) + cdTempo ) - (System.currentTimeMillis() / 1000); 

Vamos pegar o tempo da Hashmap Dividir por 1000 transformar em segundos depois adicionar o tempo

subtrair esse valor pelo tempo atual dividido por 1000 ou seja em segundos...

Logo depois é só chegar se o tempo restante estiver em tantos fazer isso e se for 0 (Se já estiver acabado.) remover o Player da Hashmap.

if ( cdRestante > 0 ) {

p.sendmessage("§cVocê ainda esta no cooldown espere" + cdRestante);

} else {
cooldown.remove(p);
}

Depois checamos se o player não estiver em cooldown adicionar ele e executar oque nós queremos ou seja o codigo final fica asim:

private HashMap<Player, Long> cooldown = new HashMap<>();

public void metodoCooldown(Player p) {

int cdTempo = 3;

if (p.contains(p)) { //Execute se caso ele ainda estiver em cooldown.

long cdRestante = ((cooldown.get(p) / 1000) + cdTempo) - (System.currentTimeMillis() / 1000);

if (cdRestante > 0) {

p.sendmessage("§cVocê ainda está no cooldown espere " + cdRestante); //Se ainda estiver n cooldown.

} else {

cooldown.remove(p); //Encerre o Cooldown.

}

} else { //Executa o comando.

p.sendmessage("§aVocê acabou de iniciar o cooldown.")

}

}

separator_line-01-01.png

Espero que deja pra entender, se caso encontrarem erros bruscos de português ou tiverem alguma duvida me falem que eu explico ou corrigo... Obrigado por ter lido até aqui se tiver gostado e sido util deixe um curtir u.u

separator_line-01-01.png

-Katho. 

 

 

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...