zToodi Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 Vi um sistema de cooldown e resolvi utilizar porém está com um atraso... Setei pra mostrar durante 30 segundos uma certa mensagem pra todos jogadores porém quando digito o comando ele demora 1 segundo para mostrar a mensagem, e quando chega no final da contagem ele se adianta 1 segundo. ex: era pra começar a contar do 30 e descer até o 1, quando chegasse no 1 iria executar algum evento porém ele começa no 31 e executa o evento no 2. SISTEMA QUE UTILIZEI: Link para o comentário Compartilhar em outros sites More sharing options...
Breniim Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 (editado) 3 minutos atrás, zToodi disse: Vi um sistema de cooldown e resolvi utilizar porém está com um atraso... Setei pra mostrar durante 30 segundos uma certa mensagem pra todos jogadores porém quando digito o comando ele demora 1 segundo para mostrar a mensagem, e quando chega no final da contagem ele se adianta 1 segundo. ex: era pra começar a contar do 30 e descer até o 1, quando chegasse no 1 iria executar algum evento porém ele começa no 31 e executa o evento no 2. SISTEMA QUE UTILIZEI: no runTaskTime(Main.getPlugin(Main.class), 20, 20 coloca assim: runTaskTime(Main.getPlugin(Main.class), 20, 30*20 me fale se vai funcionar. Editado Novembro 26, 2018 por Breniim Link para o comentário Compartilhar em outros sites More sharing options...
HeyStone Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 Usa hashmap... Link para o comentário Compartilhar em outros sites More sharing options...
Breniim Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 1 minuto atrás, HeyStone disse: Usa hashmap... Eita, eu acho que não precisa. Link para o comentário Compartilhar em outros sites More sharing options...
Breniim Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 5 minutos atrás, zToodi disse: Vi um sistema de cooldown e resolvi utilizar porém está com um atraso... Setei pra mostrar durante 30 segundos uma certa mensagem pra todos jogadores porém quando digito o comando ele demora 1 segundo para mostrar a mensagem, e quando chega no final da contagem ele se adianta 1 segundo. ex: era pra começar a contar do 30 e descer até o 1, quando chegasse no 1 iria executar algum evento porém ele começa no 31 e executa o evento no 2. SISTEMA QUE UTILIZEI: cara acho que tem um erro no seu codigo, no cmd.equalsignorecase("/sistema"), tira essa / e deixa so a palavra o plugin ja entende que e comando.Mas caso queria que seja //sistema fica a seu critério. Link para o comentário Compartilhar em outros sites More sharing options...
HeyStone Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 1 minuto atrás, Breniim disse: cara acho que tem um erro no seu codigo, no cmd.equalsignorecase("/sistema"), tira essa / e deixa so a palavra o plugin ja entende que e comando.Mas caso queria que seja //sistema fica a seu critério. Lógico que não ;=; kkkkkkkkk wtf Link para o comentário Compartilhar em outros sites More sharing options...
zToodi Postado Novembro 26, 2018 Autor Denunciar Compartilhar Postado Novembro 26, 2018 1 minuto atrás, Breniim disse: cara acho que tem um erro no seu codigo, no cmd.equalsignorecase("/sistema"), tira essa / e deixa so a palavra o plugin ja entende que e comando.Mas caso queria que seja //sistema fica a seu critério. Na verdade está certo, pois estou usando e.getMessage(): pra pegar a mensagem então seria correto por o / Link para o comentário Compartilhar em outros sites More sharing options...
Breniim Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 2 minutos atrás, zToodi disse: Na verdade está certo, pois estou usando e.getMessage(): pra pegar a mensagem então seria correto por o / Eu não faço assim,mas enfim.O delay deu certo? Link para o comentário Compartilhar em outros sites More sharing options...
zToodi Postado Novembro 26, 2018 Autor Denunciar Compartilhar Postado Novembro 26, 2018 6 minutos atrás, Breniim disse: no runTaskTime(Main.getPlugin(Main.class), 20, 20 coloca assim: runTaskTime(Main.getPlugin(Main.class), 20, 30*20 me fale se vai funcionar. Fiz oque disse, e agora está demorando 30 segundos para enviar cada mensagem... Link para o comentário Compartilhar em outros sites More sharing options...
Breniim Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 (editado) Eita eu errei o trem que eu disse,na hora de cancelar coloca o tempo igual a 1 e tira o 30*20 e deixa só o 20 if(Tempo == 1) { this.cancel } Editado Novembro 26, 2018 por Breniim Link para o comentário Compartilhar em outros sites More sharing options...
zToodi Postado Novembro 26, 2018 Autor Denunciar Compartilhar Postado Novembro 26, 2018 Agora, Breniim disse: Eita eu errei o trem que eu disse,na hora de cancelar coloca o tempo igual a 1 if(Tempo == 1) { this.cancel } Ja tentei, ai ele cancela nos 3 segundos .... Link para o comentário Compartilhar em outros sites More sharing options...
HeyStone Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 (editado) Map<String, Integer> time = new HashMap<>(); time.put(p.getName, 30); int seconds = time.get(p.getName); if (seconds > 1) { for (Player x : Bukkit.getOnlinePlayers()) { x.sendMessage("§eO sistema iniciará em §f" + seconds - 1 + "§e segundos."); } else { new BukkitRunnable() { @Override public void run() { p.kickPlayer("sistema."); } }.runTask(Main.class()); Editado Novembro 26, 2018 por HeyStone 1 Link para o comentário Compartilhar em outros sites More sharing options...
HeyStone Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 Fiz o código a mão, caso dê erro provavelmente é por questão de espaço ou por erro de ortografia. Link para o comentário Compartilhar em outros sites More sharing options...
HeyStone Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 5 minutos atrás, zToodi disse: Fiz oque disse, e agora está demorando 30 segundos para enviar cada mensagem... alterar o tempo da runnable afeta o tempo que ocorrerá o sistema, e nada do cooldown Link para o comentário Compartilhar em outros sites More sharing options...
zToodi Postado Novembro 26, 2018 Autor Denunciar Compartilhar Postado Novembro 26, 2018 12 minutos atrás, HeyStone disse: Fiz o código a mão, caso dê erro provavelmente é por questão de espaço ou por erro de ortografia. Fiz como disse: porém só aparece a mensagem de 30 segundos, depois não acontece nada... Link para o comentário Compartilhar em outros sites More sharing options...
HeyStone Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 1 minuto atrás, zToodi disse: Fiz como disse: porém só aparece a mensagem de 30 segundos, depois não acontece nada... Não vou saber então ;-; Desculpa aê, talvez seja pelo fato de eu ter feito em um task... Link para o comentário Compartilhar em outros sites More sharing options...
zToodi Postado Novembro 26, 2018 Autor Denunciar Compartilhar Postado Novembro 26, 2018 2 minutos atrás, HeyStone disse: Não vou saber então ;-; Desculpa aê, talvez seja pelo fato de eu ter feito em um task... ok ? Link para o comentário Compartilhar em outros sites More sharing options...
HeyStone Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 (editado) Fui dar uma estudada, e lá vamos nós aqui de novo... Tente: HashMap<String, Long> cooldown = new HashMap<String, Login>(); long secondsLeft = ((cooldown.get(p.getName()) / 1000) + cooldowntime) - (System.currentTimeMillis() / 1000); // Dentro da runnable if (cooldown.containsKey(p.getName())) { if (secondsLeft > 0) { for (Player x : Bukkit.getOnlinePlayers()) { x.sendMessage("system started"); } } if (secondsLeft == 30) { p.kickPlayer("system"); } OBS: quando o cara executar o comando dá put nele. EX: cooldown.put(p.getName(), System.currentTimeMillis()); Editado Novembro 26, 2018 por HeyStone Link para o comentário Compartilhar em outros sites More sharing options...
SlayerFear Postado Novembro 26, 2018 Denunciar Compartilhar Postado Novembro 26, 2018 Resolvi seu problema codigo aki em baixo public boolean onCommand(CommandSender sender, Command cmd, String arg2, String[] args) { Player p = (Player)sender; if(cmd.getName().equalsIgnoreCase("sistema") || cmd.getName().equalsIgnoreCase("system")) { if(p.hasPermission("recarregar.staff")) { new BukkitRunnable() { @Override public void run() { int segundos = 30; if(segundos >= 0) { for(Player all : Bukkit.getOnlinePlayers()) { all.sendMessage("§cServidor Reiniciando em §7" + segundos + " §cSegundos"); } segundos--; } if(segundos == 0) { p.kickPlayer("§cEsta Reiniciando"); this.cancel(); } } }.runTaskLater(Main.getPlugin(Main.class), 20); }else { p.sendMessage("§cNao permitido."); } } return false; } Link para o comentário Compartilhar em outros sites More sharing options...
InVinicius Postado Dezembro 22, 2018 Denunciar Compartilhar Postado Dezembro 22, 2018 Sua dúvida foi marcada como resolvida pela nossa equipe. Caso sua dúvida não tenha sido sanada, crie outro tópico. OBS: Essa mensagem é automática Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados