Аналогия Timer...

MrKTOTO

Каменная лига
Сообщения
32
Лучшие ответы
0
Симпатии
0
#1
Версия Minecraft
1.7.10
Подтверждение
Я максимально подробно описал проблему, включая исходный код файлов, краш лог, изображения и другую информацию, которая может помочь пользователям форума решить мой вопрос!
Есть в языке Lua в garrys mod такая прекрасная штука таймер (кликните, чтобы посмотреть подробнее). При написании кода на нём я привык к такой полезной фиче и хотелось бы узнать, есть ли что-то подобное в java или в самом minecraft. Если вы не поняли по ссылке, объясняю, что это... Это такая штука, вызвав которую и указав какое кол-во итераций(повторений) нужно и через какой период нужно выполнять определённую функцию, то есть аналогия цикла for, только с некой задержкой между выполнениями, Thread.sleep(ms) не совсем подходит для этой задачи т.к. майнкрафт немного тупит так скажем при выполнении этого, вооот и есть ли что-то встроенное, похожее на это? Чтобы допустим можно было проверить существование этого таймера (то есть выполняется ли он прямо сейчас), как в lua и не выполнять его ещё раз, воот.

К примеру:
При ударе предметом запускается таймер допустим на постепенное восстановление предмета, но при повторном ударе таймер бы не запускался снова, а проверялось бы существует ли он уже и просто продолжалось выполнение старого до определённого кол-ва итераций.

вот пример на lua
 
Последнее редактирование:

Agravaine

Алмазная лига
Сообщения
4,412
Лучшие ответы
182
Симпатии
578
#4
Я тебе прошу, не делай такое в майне. Это будет полный ппц производительности.
Напиши свой таймер на тиках.
[1.7+] - Scheduler что-то подобное.
 

MrKTOTO

Каменная лига
Сообщения
32
Лучшие ответы
0
Симпатии
0
#5
Прошу прощения конечно, но, что я делаю не так?) Использовал Scheduler, тот, что ты прислал. Но тут при запуске runTimer, крашится игра...
currentTimer это у меня по типу переменной просто привязанной к игроку, написано в ExtendedPlayer
Screenshot_702.png
 
Последнее редактирование:

Doc

Золотая лига
Сообщения
2,274
Лучшие ответы
122
Симпатии
288
#6

Agravaine

Алмазная лига
Сообщения
4,412
Лучшие ответы
182
Симпатии
578
#8
Загружать класс(регаются ивенты) нужно в preInit.
 

Agravaine

Алмазная лига
Сообщения
4,412
Лучшие ответы
182
Симпатии
578
#10
Там же в статическом блоке решаются ивенты вроде.
Можешь их перенести в метод и вызвать в преИнит.
 

MrKTOTO

Каменная лига
Сообщения
32
Лучшие ответы
0
Симпатии
0
#11
Крашит, аж при загрузке майна

Написал в preInit():
Java:
Scheduler.reg();
Изменил в Scheduler:
Java:
 public static void reg(){
        if(FMLCommonHandler.instance().getSide().isClient()){
            client = new Scheduler(Side.CLIENT);
            FMLCommonHandler.instance().bus().register(client.ticker);
        }else{
            client = null;
        }

        server = new Scheduler(Side.SERVER);
        FMLCommonHandler.instance().bus().register(server.ticker);
    }
 

Вложения

Agravaine

Алмазная лига
Сообщения
4,412
Лучшие ответы
182
Симпатии
578
#12
Попробуй сделать класс Ticker или Task публичными.
 
Сверху