Подключение к серверу

Версия Minecraft
1.7.10
API
Forge
Здравствуйте, помогите пожалуйста, как подключиться к серверу, используя собственный мод?
Ни один из способов ниже не работает. "Event" в консоль выводиться, а также возникает ошибка
java.lang.RuntimeException: No OpenGL context found in the current thread.


Java:
public void onConnect(FMLNetworkEvent.ClientDisconnectionFromServerEvent event)
        {
            System.out.println("Event");
    
            //FMLClientHandler.instance().connectToServer(new GuiMultiplayer(null), new ServerData("My server", "localhost:25565" false));
            //FMLClientHandler.instance().connectToServer(null, new ServerData("MY SERVER", "localhost:25565"));
            //FMLClientHandler.instance().setupServerList();
            //FMLClientHandler.instance().connectToServer(new GuiMainMenu(), new ServerData("MY SERVER", "localhost:25565"));
          
        }

Пытался использовать данную конструкцию:

Java:
minecraft.addScheduledTask(() -> {
    FMLClientHandler.instance().connectToServer(new GuiMainMenu(), new ServerData("MY SERVER", "localhost:25565"));
});
но использовать лямбда выражение нельзя.
 
292
14
160
использовать лямбда выражение нельзя.
Почему? Если из-за того, что в проекте указана Java 7 или ниже, можно заменить лямбду на анонимный класс:
Java:
minecraft.addScheduledTask((new Runnable() {
    @Override
    public void run() {
        FMLClientHandler.instance().connectToServer(new GuiMainMenu(), new ServerData("MY SERVER", "localhost:25565"));
    }
});
 
214
11
59
переустанови проект. юзай шаблон с оф сайта. этот метод не локализирован, насколько я помню и должен выглядеть как func что то там.

Есть вариант без гемороя, но до жути неприемлимый:
Java:
Arrays.stream(Minecraft.class.getDeclaredMethods())
    .filter(m -> m.getParameterTypes().lenght == 1)
    .filter(m -> m.getParameterTypes()[0] == Runnable.class)
    .findFirst()
    .ifPresent(m -> m.invoke(Minecraft.getMinecraft(), () -> {
        //твой раннабл собстна
    }));
 
292
14
160
В таком случае:
The method addScheduledTask(() -> {}) is undefined for the type Minecraft
Не заметил, что в теме указана версия 1.7.10. На этой версии метода addScheduledTask вообще нет, насколько я знаю.
Можешь реализовать свои таски: в каком-то классе создай поле с очередью типа Queue<Runnable>, в которую из других потоков (например, из тела твоего метода onConnect) можешь закидывать раннейблы в виде лямбд, а потом в клиентском тике проходись по этой очереди и выполняй раннейблы.
 
Последнее редактирование:
Сверху