yurirp4 Postado Setembro 14, 2017 Denunciar Compartilhar Postado Setembro 14, 2017 galera to tetando alguns dias fazer cooldown mais n ta funfando Codigo: public static HashMap<String, Long> tempo = new HashMap<String, Long>(); public static KConfig config1 = new KConfig("tempo.yml"); public static String gettempo(String string){ Date vencimento = new Date(tempo.get(string)); Date atual = new Date(); long variacao = atual.getTime() - vencimento.getTime(); long varsegundos = variacao / 10000 % 60; long varminutos = variacao / 60000 % 60; long varhora = variacao / 3600000 % 24; long vardias = variacao / 8640000 % 7; String segundos = String.valueOf(varsegundos).replaceAll("-", ""); String miutos = String.valueOf(varminutos).replaceAll("-", ""); Integer.parseInt(miutos); String horas = String.valueOf(varhora).replaceAll("-", ""); String dias = String.valueOf(vardias).replaceAll("-", ""); if (dias.equals("0") && horas.equals("0") && miutos.equals("0")){ return "§cVoce precisa esperar §4" + horas + "§ch" + "§f" + miutos + "§cm §c" + segundos + "§cs "; } if (dias.equals("0")){ return "§cVoce precisa esperar §4" + horas + "§ch" + "§f" + miutos + "§cm §c" + segundos + "§cs "; } if (dias.equals("0") && horas.equals("0")){ return "§cVoce precisa esperar §4" + "§f" + miutos + "§cm §c" + segundos + "§cs "; } return "§cVoce precisa esperar §4" + horas + "§ch" + "§f" + miutos + "§cm §c" + segundos + "§cs "; } public static void additem(Player p){ if (tempo.containsKey(p.getName())){ if (passo(p.getName())){ tempo.remove(p.getName()); }else{ p.sendMessage(gettempo(p + "§cPara Usa o Comando Novamente")); return; } } } public static boolean passo(String string){ Date vencimento = new Date(tempo.get(string)); Date atual = new Date(); if (atual.after(vencimento)){ return true; }else{ return false; } } public HashMap<Player, Integer> site = new HashMap<>(); public HashMap<Player, Integer> task = new HashMap<>(); e no onComando Coloquei Main.additem(p); Quem Puder me ajudar agra Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Setembro 16, 2017 Denunciar Compartilhar Postado Setembro 16, 2017 (editado) private HashMap<String, Long> cooldowns = new HashMap<>(); public String getTime(String playerName) { if(!cooldowns.containsKey(playerName)) return "agora"; long time = cooldowns.get(playerName); if (time == 0) { return "nunca"; } long day = TimeUnit.MILLISECONDS.toDays(time); long hours = TimeUnit.MILLISECONDS.toHours(time) - (day * 24); long minutes = TimeUnit.MILLISECONDS.toMinutes(time) - (TimeUnit.MILLISECONDS.toHours(time) * 60); long seconds = TimeUnit.MILLISECONDS.toSeconds(time) - (TimeUnit.MILLISECONDS.toMinutes(time) * 60); StringBuilder sb = new StringBuilder(); if (day > 0) { sb.append(day).append(" ").append(day == 1 ? "dia" : "dias").append(" "); } if (hours > 0) { sb.append(hours).append(" ").append(hours == 1 ? "hora" : "horas").append(" "); } if (minutes > 0) { sb.append(minutes).append(" ").append(minutes == 1 ? "minuto" : "minutos").append(" "); } if (seconds > 0) { sb.append(seconds).append(" ").append(seconds == 1 ? "segundo" : "segundos"); } String diff = sb.toString(); return diff.isEmpty() ? "agora" : diff; } public void addItem(Player player){ Long delay = TimeUnit.HOURS.toMillis(24); // cooldown de 24 hora if (cooldowns.keySet().contains(player.getName().toLowerCase())) { if (cooldowns.get(player.getName().toLowerCase()) > System.currentTimeMillis()) { e.getPlayer().sendMessage(getTime(player.getName().toLowerCase()) + " para usar o comando"); return; } cooldowns.put(player.getName().toLowerCase(), System.currentTimeMillis() + delay); } cooldowns.put(player.getName().toLowerCase(), System.currentTimeMillis() + delay); // adiciona o item.. algo que você ainda não fez .-. você verifica se tem algo na hash mas nunca coloca nada nela... } Editado Setembro 16, 2017 por zAth Link para o comentário Compartilhar em outros sites More sharing options...
FilipeNock Postado Setembro 14, 2017 Denunciar Compartilhar Postado Setembro 14, 2017 Eu uso segundos pra countdown... desse modo aqui public HashMap<Player, Long> tempo = new HashMap<>(); public void checkExampleKit(Player player) { if (!tempo.containsKey(player)) { tempo.put(player, (long)0); } if (tempo.get(player) > TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis())) { long diference = tempo.get(player) - TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()); player.sendMessage("Voce esta em countdown: " + DayHourMinSec(diference)); } else { long timetoadd = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()) + 2629800; //2629800 = 30 Dias tempo.put(player, timetoadd); player.sendMessage("Voce recebeu seu Kit"); } } public static String DayHourMinSec(long millis) { String string; if (millis < 0) {throw new IllegalArgumentException("Number must be greater to 0");} long days = TimeUnit.SECONDS.toDays(millis); millis -= TimeUnit.DAYS.toSeconds(days); long hours = TimeUnit.SECONDS.toHours(millis); millis -= TimeUnit.HOURS.toSeconds(hours); long minutes = TimeUnit.SECONDS.toMinutes(millis); millis -= TimeUnit.MINUTES.toSeconds(minutes); long seconds = TimeUnit.SECONDS.toSeconds(millis); StringBuilder sb = new StringBuilder(64); if (days > 0) {sb.append(days);} if (days > 1) { sb.append(" Dias "); } if (days == 1){ sb.append(" Dia "); } if (hours > 0) {sb.append(hours);} if (hours > 1) { sb.append(" Horas "); } else if (hours == 1){ sb.append(" Hora "); } if (minutes > 0) {sb.append(minutes);} if (minutes > 1) { sb.append(" Minutos "); } else if (minutes == 1){ sb.append(" Minuto "); } if (seconds > 0) {sb.append(seconds);} if (seconds > 1) { sb.append(" Segundos"); } else if (seconds == 1){ sb.append(" Segundo"); } string = sb.toString(); return string; } Link para o comentário Compartilhar em outros sites More sharing options...
Atlvntis. Postado Setembro 14, 2017 Denunciar Compartilhar Postado Setembro 14, 2017 Que tipo de delay é ? Explica o que exatamente você quer fazer e o Por que de não funcionar... Mostre prints de erros, se os mesmos ocorrerem! Link para o comentário Compartilhar em outros sites More sharing options...
TequilAxBr Postado Setembro 14, 2017 Denunciar Compartilhar Postado Setembro 14, 2017 Primeiro você vai criar a HashMap: HashMap<UUID, Long> delay = ...; Caso não saiba verificar se existe um elemento na HashMap, ou se não sabe adicionar ou remover um elemento, recomendo pesquisar. Ai beleza, você vai formatar o delay do cara em dias, horas, minutos e segundos. Para sua sorte, tem esse método aqui: public static String formatDifferenceStr(long time) { if (time == 0) { return "never"; } long day = TimeUnit.MILLISECONDS.toDays(time); long hours = TimeUnit.MILLISECONDS.toHours(time) - (day * 24); long minutes = TimeUnit.MILLISECONDS.toMinutes(time) - (TimeUnit.MILLISECONDS.toHours(time) * 60); long seconds = TimeUnit.MILLISECONDS.toSeconds(time) - (TimeUnit.MILLISECONDS.toMinutes(time) * 60); StringBuilder sb = new StringBuilder(); if (day > 0) { sb.append(day).append(" ").append(day == 1 ? "dia" : "dias").append(" "); } if (hours > 0) { sb.append(hours).append(" ").append(hours == 1 ? "hora" : "horas").append(" "); } if (minutes > 0) { sb.append(minutes).append(" ").append(minutes == 1 ? "minuto" : "minutos").append(" "); } if (seconds > 0) { sb.append(seconds).append(" ").append(seconds == 1 ? "segundo" : "segundos"); } String diff = sb.toString(); return diff.isEmpty() ? "agora" : diff; } Para utiliza-lo: formatDifferenceStr(delay.get(player.getUniqueId()); //retorna uma string formatada Link para o comentário Compartilhar em outros sites More sharing options...
yurirp4 Postado Setembro 15, 2017 Autor Denunciar Compartilhar Postado Setembro 15, 2017 (editado) tequila aqui http://prntscr.com/glaxuje codigo http://prntscr.com/glaxx0 Editado Setembro 15, 2017 por yurirp4 Link para o comentário Compartilhar em outros sites More sharing options...
TequilAxBr Postado Setembro 15, 2017 Denunciar Compartilhar Postado Setembro 15, 2017 tequila aqui http://prntscr.com/glaxuje codigo http://prntscr.com/glaxx0 Código completo e erro completo... Link para o comentário Compartilhar em outros sites More sharing options...
yurirp4 Postado Setembro 15, 2017 Autor Denunciar Compartilhar Postado Setembro 15, 2017 Código completo e erro completo... Erro : http://prntscr.com/glb1mrCodigo: http://prntscr.com/glb1rc , http://prntscr.com/glb1ta Link para o comentário Compartilhar em outros sites More sharing options...
TequilAxBr Postado Setembro 15, 2017 Denunciar Compartilhar Postado Setembro 15, 2017 Erro : http://prntscr.com/glb1mrCodigo: http://prntscr.com/glb1rc , http://prntscr.com/glb1ta Não vou pedir novamente, código completo... Todas as partes que envolvem a HashMap "delay". Se você não adicionou um elemento, esse é o erro. Link para o comentário Compartilhar em outros sites More sharing options...
yurirp4 Postado Setembro 15, 2017 Autor Denunciar Compartilhar Postado Setembro 15, 2017 Não vou pedir novamente, código completo... Todas as partes que envolvem a HashMap "delay". Se você não adicionou um elemento, esse é o erro. Codigo (e SO isso ) public HashMap<UUID, Long> delay = new HashMap<>(); public static String formatDifferenceStr(long time) { if (time == 0) { return "never"; } long day = TimeUnit.MILLISECONDS.toDays(time); long hours = TimeUnit.MILLISECONDS.toHours(time) - (day * 24); long minutes = TimeUnit.MILLISECONDS.toMinutes(time) - (TimeUnit.MILLISECONDS.toHours(time) * 60); long seconds = TimeUnit.MILLISECONDS.toSeconds(time) - (TimeUnit.MILLISECONDS.toMinutes(time) * 60); StringBuilder sb = new StringBuilder(); if (day > 0) { sb.append(day).append(" ").append(day == 1 ? "dia" : "dias").append(" "); } if (hours > 0) { sb.append(hours).append(" ").append(hours == 1 ? "hora" : "horas").append(" "); } if (minutes > 0) { sb.append(minutes).append(" ").append(minutes == 1 ? "minuto" : "minutos").append(" "); } if (seconds > 0) { sb.append(seconds).append(" ").append(seconds == 1 ? "segundo" : "segundos"); } String diff = sb.toString(); return diff.isEmpty() ? "agora" : diff; } no oncommand formatDifferenceStr(delay.get(p.getUniqueId())); so tem isso Link para o comentário Compartilhar em outros sites More sharing options...
TequilAxBr Postado Setembro 15, 2017 Denunciar Compartilhar Postado Setembro 15, 2017 Codigo (e SO isso ) public HashMap<UUID, Long> delay = new HashMap<>(); public static String formatDifferenceStr(long time) { if (time == 0) { return "never"; } long day = TimeUnit.MILLISECONDS.toDays(time); long hours = TimeUnit.MILLISECONDS.toHours(time) - (day * 24); long minutes = TimeUnit.MILLISECONDS.toMinutes(time) - (TimeUnit.MILLISECONDS.toHours(time) * 60); long seconds = TimeUnit.MILLISECONDS.toSeconds(time) - (TimeUnit.MILLISECONDS.toMinutes(time) * 60); StringBuilder sb = new StringBuilder(); if (day > 0) { sb.append(day).append(" ").append(day == 1 ? "dia" : "dias").append(" "); } if (hours > 0) { sb.append(hours).append(" ").append(hours == 1 ? "hora" : "horas").append(" "); } if (minutes > 0) { sb.append(minutes).append(" ").append(minutes == 1 ? "minuto" : "minutos").append(" "); } if (seconds > 0) { sb.append(seconds).append(" ").append(seconds == 1 ? "segundo" : "segundos"); } String diff = sb.toString(); return diff.isEmpty() ? "agora" : diff; } no oncommand formatDifferenceStr(delay.get(p.getUniqueId())); so tem isso Como tu quer pegar algo de uma HashMap que não existe? Adicione o elemento né cara, não vou dar tudo de mão beijada... Pense ai. Link para o comentário Compartilhar em outros sites More sharing options...
TequilAxBr Postado Setembro 16, 2017 Denunciar Compartilhar Postado Setembro 16, 2017 Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas. Atenciosamente, Gamer's Board Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
yurirp4
galera to tetando alguns dias fazer cooldown mais n ta funfando
Codigo:
e no onComando Coloquei
Quem Puder me ajudar agra
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados