Ir para conteúdo

Um pequeno metodo para cooldown em kits


Guest VitorEmanoel

Posts Recomendados

Guest VitorEmanoel

Eu estava com duvida em fazer cooldown para meus kits então consegui fazer e resolvi posta aqui o metodo bem simples para fazer isto.

Estes metodos são para setar o cooldown e para pegar o tempo restante.

 

Para setar o cooldown em p coloque o player (isso acho que esta claro) em kit coloque o nome do kit que você irá inserir o cooldown, e em time coloque o tempo do cooldown em minutos.

 

Para pegar o tempo restante de um kit basta coloca o player eo kit.

public static void setKitCooldown(Player p, String kit, int time){
		File file1 = new File(Main1.getMain().getDataFolder(), "KitsCooldown.yml");
		YamlConfiguration fc1 = YamlConfiguration.loadConfiguration(file1);
		try {
			fc1.load(file1);
		} catch (IOException | InvalidConfigurationException e){
			e.printStackTrace();
		}
		long now = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(time);
		fc1.set("KitsCooldown." + p.getUniqueId() + "." + kit + ".Time", now);
		try {
			fc1.save(file1);
		} catch (IOException e){
			e.printStackTrace();
		}
	}
	public static String getTime(Player p, String kit){
		File file1 = new File(Main1.getMain().getDataFolder(), "KitsCooldown.yml");
		YamlConfiguration fc1 = YamlConfiguration.loadConfiguration(file1);
		try {
			fc1.load(file1);
		} catch (IOException | InvalidConfigurationException e){
			e.printStackTrace();
		}
		long time = fc1.getLong("KitsCooldown." + p.getUniqueId() + "." + kit + ".Time");
		long now = System.currentTimeMillis();
		long all = time - now;
		long minutes = TimeUnit.MILLISECONDS.toMinutes(all) - (TimeUnit.MILLISECONDS.toHours(all) * 60);
	    long seconds = TimeUnit.MILLISECONDS.toSeconds(all) - (TimeUnit.MILLISECONDS.toMinutes(all) * 60);
	 
	    String result = String.valueOf(minutes) + " minutos " + String.valueOf(seconds) + " segundos.";
	 
	    return result;
	}

Para verificar se o player ja pode usar o kit use este metodo.

if(!(fc1.get("KitsCooldown." + p.getUniqueId() + "." + a) == null) && fc1.getLong("KitsCooldown." + p.getUniqueId() + "." + a + ".Time") < System.currentTimeMillis()){
    //De o kit a ele
}else{
    //Mensagem de que tem que esperar para pegar o kit
}

Mesmo o código sendo bem básico e bem bosta postei por que algumas pessoas podem ter duvida de como fazer isto.

Espero que tenha ajudado.

Link para o comentário
Compartilhar em outros sites

Guest VitorEmanoel

Melhor fazer isso em HashMap não? Melhor do que ficar atualizando arquivo toda hora e.e

Tentei usar em hashmap, porem não tem como especificar qual kit está com cooldown. (Ate o nível do meu conhecimento, como vocês são fodas deve ter um metodo melhor.)

Link para o comentário
Compartilhar em outros sites

Tentei usar em hashmap, porem não tem como especificar qual kit está com cooldown. (Ate o nível do meu conhecimento, como vocês são fodas deve ter um metodo melhor.)

Para ser bem honesto... Você pode fazer 2 hashmaps "clones" Uma <string,long> para identificar o tempo e outra <string,string> para identificar o kit, ai você controla as duas ao mesmo tempo kkk

 

 Mas você me deu uma idéia de construir um sisteminha para reconhecer o kil em cooldown... Vou ver se boto a idéia em pratica kk 

Link para o comentário
Compartilhar em outros sites

Guest VitorEmanoel

Para ser bem honesto... Você pode fazer 2 hashmaps "clones" Uma <string,long> para identificar o tempo e outra <string,string> para identificar o kit, ai você controla as duas ao mesmo tempo kkk

 

 Mas você me deu uma idéia de construir um sisteminha para reconhecer o kil em cooldown... Vou ver se boto a idéia em pratica kk 

Irei tentar usar hasmaps como você falou para deixar o metodo mais optimizado.

Link para o comentário
Compartilhar em outros sites

Irei tentar usar hasmaps como você falou para deixar o metodo mais optimizado.

Lembrando que nesse caso é só uma sugestão, deve ter um jeito mais otimizado e mais fácil no qual não estou conseguindo pensar agora e.e

Link para o comentário
Compartilhar em outros sites

Tentei usar em hashmap, porem não tem como especificar qual kit está com cooldown. (Ate o nível do meu conhecimento, como vocês são fodas deve ter um metodo melhor.)

Claro que tem.

 

// Jogador: { Kit: Cooldown }

Map<Player, Map<String, Long>> cooldowns = new WeakHashMap<>();

Link para o comentário
Compartilhar em outros sites

 

if(!(fc1.get("KitsCooldown." + p.getUniqueId() + "." + a) == null) && fc1.getLong("KitsCooldown." + p.getUniqueId() + "." + a + ".Time") < System.currentTimeMillis()){
    //De o kit a ele
}else{
    //Mensagem de que tem que esperar para pegar o kit
}

O que este "a" significa???? 

 

Link para o comentário
Compartilhar em outros sites

Ou também pode pode usar apeanas uma HashMap uahsuahs
Faço isso sempre kkkkk (le~gambiarra)

 

HashMap<Player, HashMap<String, long>> kits = new HashMap<>();

 

Aí fica fácil. Um pouco confuso no começo porém fácil

Editado por Pinke
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...