Ir para conteúdo
  • 0

[Resolvido] [Duvida] temban Com Java Calendar


LuizB

Pergunta

Posts Recomendados

  • 0

Como faço pra fazer um sistema de tempban Com JavaCalendar

Eu não sei se é possivel fazer com JavaCalendar mas aconselho fazer em JavaScript pois é mais fácil identificar algum tipo de erro caso exista!

Link para o comentário
Compartilhar em outros sites

Eu não sei se é possivel fazer com JavaCalendar mas aconselho fazer em JavaScript pois é mais fácil identificar algum tipo de erro caso exista!

Estou Usando A API Do Spigot ou seja não da pra fazer Com JS

Link para o comentário
Compartilhar em outros sites

Estou Usando A API Do Spigot ou seja não da pra fazer Com JS

Se você estiver fazendo seu server (pelo que eu entendi sim) pegue um plugin avançado já pronto. Existem vários no site da Spigot mas alguns são pagos!

Link para o comentário
Compartilhar em outros sites

Se você estiver fazendo seu server (pelo que eu entendi sim) pegue um plugin avançado já pronto. Existem vários no site da Spigot mas alguns são pagos!

Eu Quero Aprender a Fazer 

Link para o comentário
Compartilhar em outros sites

Eu Quero Aprender a Fazer 

Aconselho fazer um curso ou dar uma boa pesquisada então na internet, acho meio difícil explicar por aqui! Se procurar bem você acha algo parecido, exatamente oque você quer não sei se vai encontrar. Abraços!

Link para o comentário
Compartilhar em outros sites

Guest Mateus Demarchi

Pode Me Ensinar ?

Você vai ter que salvar quando o player for banido, ( System.currentTimeMillis() )

 

Para converter esse tempo em milisegundos para outras medidas;

long seg = (bantime / 1000) % 60; //segundos
long min = (bantime / (1000 * 60)) % 60; //minutos
long hor = (bantime / (1000 * 60 * 60)) % 24; //horas

depois é só comparar o tempo que ele foi banido com o tempo atual se for maior que o tempo do ban.

Link para o comentário
Compartilhar em outros sites

Você vai ter que salvar quando o player for banido, ( System.currentTimeMillis() )

 

Para converter esse tempo em milisegundos para outras medidas;

long seg = (bantime / 1000) % 60; //segundos
long min = (bantime / (1000 * 60)) % 60; //minutos
long hor = (bantime / (1000 * 60 * 60)) % 24; //horas

depois é só comparar o tempo que ele foi banido com o tempo atual se for maior que o tempo do ban.

Essa Porcetagem é o que ?

 

@EDIT

 

Esse bantime é o tempo que o sender colocou ?

Editado por Cuthmf
Link para o comentário
Compartilhar em outros sites

Guest Mateus Demarchi

Essa Porcetagem é o que ?

Significa resto, é matemática. Tem que saber bem para começar a fazer sistemas mais complexos.

Link para o comentário
Compartilhar em outros sites

Você vai ter que salvar quando o player for banido, ( System.currentTimeMillis() )

 

Para converter esse tempo em milisegundos para outras medidas;

long seg = (bantime / 1000) % 60; //segundos
long min = (bantime / (1000 * 60)) % 60; //minutos
long hor = (bantime / (1000 * 60 * 60)) % 24; //horas

depois é só comparar o tempo que ele foi banido com o tempo atual se for maior que o tempo do ban.

TimeUnit pra que

 

@Topic:

Como já lhe disse:

long time = System.currentTimeMillis() + TimeUnit.seconds.toMillis(60); // Tempo em mile segundos + 60 segundos
Link para o comentário
Compartilhar em outros sites

Guest Mateus Demarchi

 

TimeUnit pra que

 

@Topic:

Como já lhe disse:

long time = System.currentTimeMillis() + TimeUnit.seconds.toMillis(60); // Tempo em mile segundos + 60 segundos

;- é ué, bem lembrado :D.

Link para o comentário
Compartilhar em outros sites

 

TimeUnit pra que

 

@Topic:

Como já lhe disse:

long time = System.currentTimeMillis() + TimeUnit.seconds.toMillis(60); // Tempo em mile segundos + 60 segundos

Então se eu quiser  1 minuto é

long time = System.currentTimeMillis() + TimeUnit.seconds.toMillis(60*60);

?

Link para o comentário
Compartilhar em outros sites

Então se eu quiser  1 minuto é

long time = System.currentTimeMillis() + TimeUnit.seconds.toMillis(60*60);

?

Na verdade:

long time = System.currentTimeMillis() + TimeUnit.minutes.toMillis(1);
Link para o comentário
Compartilhar em outros sites

 

TimeUnit pra que

 

@Topic:

Como já lhe disse:

long time = System.currentTimeMillis() + TimeUnit.seconds.toMillis(60); // Tempo em mile segundos + 60 segundos

Eu Coloquei

 

 

long time = System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(60);
		System.out.println(time);

Ai Deu : 1463256333310

@EDIT

 

o Cara Explicou Que Se Colocar System.currentTimeMillis();

 

Vai Pegar Todos Os Milisegundos desde 01 de janeiro de 1970

 

Editado por Cuthmf
Link para o comentário
Compartilhar em outros sites

Eu Coloquei

 

 

long time = System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(60);
		System.out.println(time);

Ai Deu : 1463256333310

@EDIT

 

o Cara Explicou Que Se Colocar System.currentTimeMillis();

 

Vai Pegar Todos Os Milisegundos desde 01 de janeiro de 1970

 

Sim, ele pegou o atual tempo em mile segundos desde 1 de Janeiro de 1970 e somou com mais um minuto.

Para ver funcionando use:

System.out.println(System.currentTimeMillis());
long time = System.currentTimeMillis() + TimeUnit.minutes.toMillis(1);
Date data = new Date(time);
SimpleDataFormat sdf = new SimpleDataFormat("dd/MM/yyyy HH:mm:ss");
System.out.println(sdf.format(data));

Isso é em java 7, acho que no 8 simplificou

Link para o comentário
Compartilhar em outros sites

Sim, ele pegou o atual tempo em mile segundos desde 1 de Janeiro de 1970 e somou com mais um minuto.

Para ver funcionando use:

System.out.println(System.currentTimeMillis());
long time = System.currentTimeMillis() + TimeUnit.minutes.toMillis(1);
Date data = new Date(time);
SimpleDataFormat sdf = new SimpleDataFormat("dd/MM/yyyy HH:mm:ss");
System.out.println(sdf.format(data));

Isso é em java 7, acho que no 8 simplificou

Sim Funcionou 

 

 

1463257073599
14/05/2016 17:18:53

Mais pq somar mais um minuto ?

 

 

@EDIT

 

Tem que salvar Esse Tempo na Config ? e ficar checando se ele já passou ? 

Editado por Cuthmf
Link para o comentário
Compartilhar em outros sites

Sim Funcionou 

 

 

1463257073599
14/05/2016 17:18:53

Mais pq somar mais um minuto ?

Não é Tempban? Tem que adicionar alguma coisa...

Mas pode ser mais que um minuto:

long time = System.currentTimeMillis() + TimeUnit.minutes.toMillis(1); // +1 minuto
long time = System.currentTimeMillis() + TimeUnit.minutes.toMillis(10); // +10 minutos
long time = System.currentTimeMillis() + TimeUnit.minutes.toMillis(100); // +100 minutos
long time = System.currentTimeMillis() + TimeUnit.minutes.toMillis(1000); // +1000 minutos

Também tem horas, etc

Olha: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html

E isso é o que ele converte para mile segundos: http://prntscr.com/b42fx8

Editado por ƒσƒασ
Link para o comentário
Compartilhar em outros sites

Não é Tempban? Tem que adicionar alguma coisa...

Mas pode ser mais que um minuto:

long time = System.currentTimeMillis() + TimeUnit.minutes.toMillis(1); // +1 minuto
long time = System.currentTimeMillis() + TimeUnit.minutes.toMillis(10); // +10 minutos
long time = System.currentTimeMillis() + TimeUnit.minutes.toMillis(100); // +100 minutos
long time = System.currentTimeMillis() + TimeUnit.minutes.toMillis(1000); // +1000 minutos

Também tem horas, etc

Olha: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html

E isso é o que ele converte para mile segundos: http://prntscr.com/b42fx8

Mais pq tem que adicionar Algo ?

Sim é tempban

 

E Como faço pra checar se o tempo já Passou ?

Irei criar um Scheduler que se repete a cada 1 min

Link para o comentário
Compartilhar em outros sites

Mais pq tem que adicionar Algo ?

Sim é tempban

 

E Como faço pra checar se o tempo já Passou ?

Irei criar um Scheduler que se repete a cada 1 min

Como assim "pq tem que adicionar algo"?

 

Simples, checa se o currentTimeMillis que tu salvou é menor que o da máquina, se for, desbane o cara

Link para o comentário
Compartilhar em outros sites

Como assim "pq tem que adicionar algo"?

 

Simples, checa se o currentTimeMillis que tu salvou é menor que o da máquina, se for, desbane o cara

Tem que Adicionar 1

 

@EDIT

 

Então tem que salvar

 

Por Exemplo:

 

 

1463257164800

Na Config

if (milisalvado <= System.CurrentTimeMillis){

      desban

}

Editado por Cuthmf
Link para o comentário
Compartilhar em outros sites

 

Tem que Adicionar 1

 

@EDIT

 

Então tem que salvar

 

Por Exemplo:

 

1463257164800

Na Config
if (milisalvado <= System.CurrentTimeMillis){

desban

}

sim, desse jeito
Link para o comentário
Compartilhar em outros sites

sim, desse jeito

e se tipo eu quise pra quando o Player Entrar Aparece

 

Você Foi Foi Banido(a) Por 30 minuto(s)

 

e se depois de 1 minuto ele entrase 

 

aparece

 

Você Foi Banido(a) Por 29 Minuto(s) 

 

E Assim continua ate chegar a 1 minuto

Link para o comentário
Compartilhar em outros sites

Usa esse método para pegar o tempo restante:

public String getTime(long time) {
    String format = "";
    long hours = TimeUnit.MILLISECONDS.toHours(time);
    long hoursInMillis = TimeUnit.HOURS.toMillis(hours);
    long minutes = TimeUnit.MILLISECONDS.toMinutes(time - hoursInMillis);
    long minutesInMillis = TimeUnit.MINUTES.toMillis(minutes);
    long seconds = TimeUnit.MILLISECONDS.toSeconds(time - (hoursInMillis + minutesInMillis));
    if (hours > 0)
    format = hours + (hours > 1 ? " horas" : " hora");
    if (minutes > 0) {
        if ((seconds > 0) && (hours > 0))
        format += ", ";
        else if (hours > 0)
        format += " e ";
        format += minutes + (minutes > 1 ? " minutos" : " minuto");
    }
    if (seconds > 0) {
        if ((hours > 0) || (minutes > 0))
        format += " e ";
        format += seconds + (seconds > 1 ? " segundos" : " segundo");
    }
    if (format.equals("")) {
        long rest = time / 100;
        if (rest == 0)
        rest = 1;
        format = "0." + rest + " segundos";
    }
    return format;
}
p.kickPlayer("§cVocê está banido por " + getTime(System.currentTimeMillis() - millissalvo))

Obs, não fui eu que criei.

Deve haver um método mais fácil, mas não estou lembrado

Link para o comentário
Compartilhar em outros sites

Usa esse método para pegar o tempo restante:

public String getTime(long time) {
    String format = "";
    long hours = TimeUnit.MILLISECONDS.toHours(time);
    long hoursInMillis = TimeUnit.HOURS.toMillis(hours);
    long minutes = TimeUnit.MILLISECONDS.toMinutes(time - hoursInMillis);
    long minutesInMillis = TimeUnit.MINUTES.toMillis(minutes);
    long seconds = TimeUnit.MILLISECONDS.toSeconds(time - (hoursInMillis + minutesInMillis));
    if (hours > 0)
    format = hours + (hours > 1 ? " horas" : " hora");
    if (minutes > 0) {
        if ((seconds > 0) && (hours > 0))
        format += ", ";
        else if (hours > 0)
        format += " e ";
        format += minutes + (minutes > 1 ? " minutos" : " minuto");
    }
    if (seconds > 0) {
        if ((hours > 0) || (minutes > 0))
        format += " e ";
        format += seconds + (seconds > 1 ? " segundos" : " segundo");
    }
    if (format.equals("")) {
        long rest = time / 100;
        if (rest == 0)
        rest = 1;
        format = "0." + rest + " segundos";
    }
    return format;
}
p.kickPlayer("§cVocê está banido por " + getTime(System.currentTimeMillis() - millissalvo))

Obs, não fui eu que criei.

Deve haver um método mais fácil, mas não estou lembrado

Krl Me Buguei Todo Nisso ae kkk

 

Onde eu coloco o args[1] ?

 

Do Comando

Link para o comentário
Compartilhar em outros sites

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