Если кратко, есть специальный рендер TE, примерно что-то такое:
Проблема следующая, операция te.timer++ будет выполняться столько раз в секунду, сколько у игрока fps, я бы хотел, чтобы эта операция выполнялась 1 раз в реальную секунду.
Пробовал увеличивать эту переменную через updateEntity в te, каждые 20 тиков, оно то так работает отлично, но есть нюанс, если игрок не смотрит на этот te, то и анимация после if (te.timer >= 120) не выполняется, а сама переменная продолжает увеличиваться, а поскольку таких te в одном месте может быть довольно много, то и после того, как игрок на них посмотрит, они начнут воспроизводить эту анимацию синхронно, что будет выглядить не очень.
Я попробовал уже всё, до чего додумался, но так и не смог придумать адекватный способ увеличивать переменную из рендера, при этом без прямой зависимости от fps игрока, разве что систем тайм не тягал, но мне кажется это уже перебор будет.
Есть у кого-либо идеи, как можно решить этот вопрос?
Java:
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f) {
te.timer++;
if (te.timer >= 120){
//some render action
te.timer = 0;
}
}
Проблема следующая, операция te.timer++ будет выполняться столько раз в секунду, сколько у игрока fps, я бы хотел, чтобы эта операция выполнялась 1 раз в реальную секунду.
Пробовал увеличивать эту переменную через updateEntity в te, каждые 20 тиков, оно то так работает отлично, но есть нюанс, если игрок не смотрит на этот te, то и анимация после if (te.timer >= 120) не выполняется, а сама переменная продолжает увеличиваться, а поскольку таких te в одном месте может быть довольно много, то и после того, как игрок на них посмотрит, они начнут воспроизводить эту анимацию синхронно, что будет выглядить не очень.
Я попробовал уже всё, до чего додумался, но так и не смог придумать адекватный способ увеличивать переменную из рендера, при этом без прямой зависимости от fps игрока, разве что систем тайм не тягал, но мне кажется это уже перебор будет.
Есть у кого-либо идеи, как можно решить этот вопрос?