Войти или зарегистрироваться

Помогите Организация проверки срока истечения бана

  • Автор темы Автор темы ReloGGrc
  • Дата начала Дата начала

ReloGGrc

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
ALis
В общем есть команда временного бана, сделать её проблем не составляет, но...
Есть ещё команда /checkban которая выводит тип бана, дату бана, инициатора бана, причину бана и срок истечения бана, и отсюда мне нужна помощь только с выводом типа бана и срок истечения бана. Ребятки, подскажите пожалуйста
 
Вообще трудно сказать что либо не видя как именно ты хранишь время. Я бы сделал так: Хранить в инфе дату когда должна пройти блокировка в юникс формате, а для того чтобы определить вечный бан или нет можно в место числа даты записывать -1, тоесть если в дате у тебя -1 то блокировка вечная, если какоето число то не вечная,
А для того чтобы вывести сколько осталось до окончания блокировки следует просто вычесть из даты окончания бана дату в данный момент. И просто спарсить ее через java.util.Date.

Получить дату на данный момент System.currentTimeMillis()
Подробнее про юникс формат https://ru.wikipedia.org/wiki/Unix-время#:~:text=Unix time, также POSIX-время,Unix Epoch
 
Вообще трудно сказать что либо не видя как именно ты хранишь время. Я бы сделал так: Хранить в инфе дату когда должна пройти блокировка в юникс формате, а для того чтобы определить вечный бан или нет можно в место числа даты записывать -1, тоесть если в дате у тебя -1 то блокировка вечная, если какоето число то не вечная,
А для того чтобы вывести сколько осталось до окончания блокировки следует просто вычесть из даты окончания бана дату в данный момент. И просто спарсить ее через java.util.Date.

Получить дату на данный момент System.currentTimeMillis()
Подробнее про юникс формат https://ru.wikipedia.org/wiki/Unix-время#:~:text=Unix time, также POSIX-время,Unix Epoch
Спасибо большое, а реализовывать разбан по истечении времени подскажете как? Шедулеры?
 
Последнее редактирование:
Спасибо большое, а реализовывать разбан по истечении времени подскажете как? Шедулеры?

Можно, но проще просто при коннект игрока проверять, если истекло время - снимать бан, если нет выкидывать его с сообщением о бане
 
Вообще трудно сказать что либо не видя как именно ты хранишь время. Я бы сделал так: Хранить в инфе дату когда должна пройти блокировка в юникс формате, а для того чтобы определить вечный бан или нет можно в место числа даты записывать -1, тоесть если в дате у тебя -1 то блокировка вечная, если какоето число то не вечная,
А для того чтобы вывести сколько осталось до окончания блокировки следует просто вычесть из даты окончания бана дату в данный момент. И просто спарсить ее через java.util.Date.

Получить дату на данный момент System.currentTimeMillis()
Подробнее про юникс формат https://ru.wikipedia.org/wiki/Unix-время#:~:text=Unix time, также POSIX-время,Unix Epoch
Я бы брал не юникс, а в миллисекундах, так точнее
 
Видимо, пора мне в больничку с белыми стенами... Миллисекунды стали настолько стандартом, что я как-то и не задумывался.
В вебе наиболее используемый формат - это секунды. Как минимум так в PHP.

Но, вообще, если говорить при unix-time, то это скорее "с какого момента", а не "в каком формате". То, что оно в секундах - это скорее условность, а не правило. Первое, что человек должен понимать - это что отсчет ведётся с 1970 года, а уж в секундах или нет - это уже вопрос второй.
Хотя формально, конечно, System.currentTimeMillis() возвращает не unix-time, а просто кол-во миллисекунд, прошедшее с 1970 года:
https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#currentTimeMillis()

Но в рамках данной темы это абсолютно неважно, потому что даже разницу в 999 мс игрок вряд ли заметит. В чем удобно, в том и хранить время. Главное его везде одинаково читать и записывать (и в игре, и на сайте, например)
 
В вебе наиболее используемый формат - это секунды. Как минимум так в PHP.

Но, вообще, если говорить при unix-time, то это скорее "с какого момента", а не "в каком формате". То, что оно в секундах - это скорее условность, а не правило. Первое, что человек должен понимать - это что отсчет ведётся с 1970 года, а уж в секундах или нет - это уже вопрос второй.
Хотя формально, конечно, System.currentTimeMillis() возвращает не unix-time, а просто кол-во миллисекунд, прошедшее с 1970 года:
https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#currentTimeMillis()

Но в рамках данной темы это абсолютно неважно, потому что даже разницу в 999 мс игрок вряд ли заметит. В чем удобно, в том и хранить время. Главное его везде одинаково читать и записывать (и в игре, и на сайте, например)
Спасибо большое за совет!
 
Назад
Верх