Как выполнять что то каждый тик?

Версия Minecraft
1.7.10
API
Forge
Есть класс.
Java:
public class ClientTickEvent {
    @SubscribeEvent
    public static void onClientTick(TickEvent.ClientTickEvent event){
        if (event.phase == Phase.START) {
        
        }
    }
}
И есть класс
Java:
public class ReconnectEvent{

    public static float reconnectDelay = 6;

    @SubscribeEvent
    public void DisconnectGuiOpenEvent(GuiScreenEvent.InitGuiEvent.Post event){
        if(event.gui instanceof GuiDisconnected){
            event.buttonList.add(new GuiButton(1, event.gui.width / 2 - 100, event.gui.height / 3 + 120 + 12, "Reconnect in "+ reconnectDelay + "..."));
            reconnectDelay -= 0.05;
            event.buttonList.remove(1);
        }   
    }
}
Как сделать чтобы
Java:
event.buttonList.add(new GuiButton(1, event.gui.width / 2 - 100, event.gui.height / 3 + 120 + 12, "Reconnect in "+ reconnectDelay + "..."));
reconnectDelay -= 0.05;
event.buttonList.remove(1);
выполнялось каждый тик, когда
Java:
if(event.gui instanceof GuiDisconnected)
 
5,547
186
1,040
Такое не нужно делать каждый тик. Для добавления новых кнопок в не свое гуи используй событие GuiOpenEvent или GuiScreenEvent.InitGuiEvent.Post

В твоем коде происходит добавление новой кнопки и удаление второй по счету с нуля кнопки. Возможно, удаляешь ту же кнопку, что и добавляешь, поэтому эффекта не видно. Попробуй убрать event.buttonList.remove(1)
 
@hohserg1 Вопрос чуть другой, если что
В твоем коде происходит добавление новой кнопки и удаление второй по счету с нуля кнопки. Возможно, удаляешь ту же кнопку, что и добавляешь
Суть в том что я не знаю как иначе изменять название кнопки. По задумке на ней должен быть таймер обратного отсчета.
 
5,547
186
1,040
Сделай свою кастомную кнопку, которая будет формировать свою отображаемую надпись в зависимости от какого-то внешнего состояния, которое будешь менять каждый тик
 
Сделай свою кастомную кнопку, которая будет формировать свою отображаемую надпись в зависимости от какого-то внешнего состояния, которое будешь менять каждый тик
Это мне ничего не говорит. Вопрос совсем другой. Если вы пытаетесь помочь то хотя бы прочитайте тему
 
958
21
213
Это мне ничего не говорит. Вопрос совсем другой. Если вы пытаетесь помочь то хотя бы прочитайте тему
В классе GuiScreen есть метод update(как-то так), он исполняется каждый тик.... дерзай.
и да. кнопка не умеет в логику. она тупо отображает текстуру... Так что выноси кнопку в переменную и делай через неё
 
5,547
186
1,040
Это мне ничего не говорит. Вопрос совсем другой. Если вы пытаетесь помочь то хотя бы прочитайте тему
Ну так напиши вопрос прозрачно 🤦‍♂️

как иначе изменять название кнопки
Изменять название кнопки не надо. Лучше сделать рендер названия кнопки зависящим от внешнего изменяемого состояния и менять это состояние, а не саму кнопку.
Лучше сделать так, чтобы не смешить фронтэнд и бакэнд в одну кашу. Кнопка - это фронтэнд. А фронтэнд не должен хранить состояние, его должен хранить бакэнд(потому что от этого состояния обычно зависит какая-то другая логика, например, другая кнопка или триггер истечения таймера или еще чего, я не знаю, какую именно фичу ты делаешь)
Так понятнее?
 
Последнее редактирование:
Сверху