Autoreconnect

Версия Minecraft
1.12.2
4
0
Привет всем. Сейчас нахожусь на даче, интернет здесь только мобильный, соответственно, нестабильный, из-за чего часто выкидывает с сервера. Подскажите, пожалуйста, как реализовать в моде автоматическое переподключение к серверу.
На уму лишь одна идея: создать таймер и через 15-30 сек. проверять, находится ли игрок на сервере, если нет, то подключаться автоматически, но как это реализовать - без понятия. Или как-то отслеживать отключение от сервера(аля PlayerLeaveEvent на кране). С Java знаком более года, но работал исключительно с плагинами Spigot\BungeeCord. "Шаблон", если можно так назвать, мода имеется (спасибо вашим туториалам!)
Заранее спасибо!
 

Icosider

Kotliner
Администратор
3,603
99
664
При срабатывании события ClientDisconnectionFromServerEvent проверяй через FutureTask доступность сервера, если тот доступен, то делай FMLClientHandler.instance().connectToServer(new GuiMultiplayer(mc.currentScreen), * здесь твой класс ServerData *);

Пример класса ServerData:
Java:
class MyServerData extends ServerData
{
    public MyServerData()
    {
        /**
         *   Первый аргумент можно оставить пустым, это название сервера
         *   IP адрес сервера, можно не указывать порт если он у севера 25565
         */
        super("", "127.0.0.1:25565");
    }
}
 
4
0
При срабатывании события ClientDisconnectionFromServerEvent проверяй через FutureTask доступность сервера, если тот доступен, то делай FMLClientHandler.instance().connectToServer(new GuiMultiplayer(mc.currentScreen), * здесь твой класс ServerData *);

Пример класса ServerData:
Java:
class MyServerData extends ServerData
{
public MyServerData()
{
/**
* Первый аргумент можно оставить пустым, это название сервера
* IP адрес сервера, можно не указывать порт если он у севера 25565
*/
super("", "127.0.0.1:25565");
}
}
Добрый день.
Спасибо, попробовал ваш код, но столкнулся с ошибками.
Класс
MyServerData решил не делать, сохраняю дату при заходе в мир.
Java:
//ExampleMod.java
public static ServerData data;
//EventsHandler.java
    @SubscribeEvent
    public void onJoin(EntityJoinWorldEvent e) {
            ExampleMod.data = Minecraft.getMinecraft().getCurrentServerData();
    }

Java:
    @SubscribeEvent
    public void onKick(ClientDisconnectionFromServerEvent e) {
        if (ExampleMod.data != null)
            FMLClientHandler.instance().connectToServer(new GuiMultiplayer(Minecraft.getMinecraft().currentScreen),ExampleMod.data); //EventsHandler.java:29
    }

Ошибка:
[18:26:21] [Netty Client IO #1/ERROR] [FML]: Exception caught during firing event net.minecraftforge.fml.common.network.FMLNetworkEvent$ClientDisconnectionFromServerEvent@56d12d8b:
java.lang.RuntimeException: No OpenGL context found in the current thread.
at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124) ~[lwjgl-2.9.4-nightly-20150209.jar:?]
at org.lwjgl.opengl.GL11.glClear(GL11.java:585) ~[lwjgl-2.9.4-nightly-20150209.jar:?]
at net.minecraft.client.renderer.GlStateManager.clear(GlStateManager.java:579) ~[GlStateManager.class:?]
at net.minecraft.client.LoadingScreenRenderer.displayString(LoadingScreenRenderer.java:71) ~[LoadingScreenRenderer.class:?]
at net.minecraft.client.LoadingScreenRenderer.resetProgressAndMessage(LoadingScreenRenderer.java:46) ~[LoadingScreenRenderer.class:?]
at net.minecraft.client.Minecraft.loadWorld(Minecraft.java:2608) ~[Minecraft.class:?]
at net.minecraft.client.Minecraft.loadWorld(Minecraft.java:2561) ~[Minecraft.class:?]
at net.minecraft.client.multiplayer.GuiConnecting.<init>(GuiConnecting.java:38) ~[GuiConnecting.class:?]
at net.minecraftforge.fml.client.FMLClientHandler.connectToServer(FMLClientHandler.java:878) ~[FMLClientHandler.class:?]
at ru.ecer.mod.EventsHandler.onKick(EventsHandler.java:29) ~[EventsHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_12_EventsHandler_onKick_ClientDisconnectionFromServerEvent.invoke(.dynamic) ~[?:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182) [EventBus.class:?]
at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.close(NetworkDispatcher.java:506) [NetworkDispatcher.class:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeClose(AbstractChannelHandlerContext.java:624) [AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.access$1100(AbstractChannelHandlerContext.java:38) [AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext$13.run(AbstractChannelHandlerContext.java:613) [AbstractChannelHandlerContext$13.class:4.1.9.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [AbstractEventExecutor.class:4.1.9.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403) [SingleThreadEventExecutor.class:4.1.9.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:442) [NioEventLoop.class:4.1.9.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [SingleThreadEventExecutor$5.class:4.1.9.Final]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_171]
[18:26:21] [Netty Client IO #1/ERROR] [FML]: Index: 1 Listeners:
[18:26:21] [Netty Client IO #1/ERROR] [FML]: 0: NORMAL
[18:26:21] [Netty Client IO #1/ERROR] [FML]: 1: ASM: ru.ecer.mod.EventsHandler@7454f141 onKick(Lnet/minecraftforge/fml/common/network/FMLNetworkEvent$ClientDisconnectionFromServerEvent;)V
[18:26:21] [main/INFO] [FML]: Applying holder lookups
[18:26:21] [main/INFO] [FML]: Holder lookups applied
[18:26:22] [main/FATAL] [minecraft/Minecraft]: Error executing task
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_171]
at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1176) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:441) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.NullPointerException
at net.minecraft.client.network.NetHandlerPlayClient.handleTimeUpdate(NetHandlerPlayClient.java:1041) ~[NetHandlerPlayClient.class:?]
at net.minecraft.network.play.server.SPacketTimeUpdate.processPacket(SPacketTimeUpdate.java:58) ~[SPacketTimeUpdate.class:?]
at net.minecraft.network.play.server.SPacketTimeUpdate.processPacket(SPacketTimeUpdate.java:10) ~[SPacketTimeUpdate.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_171]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
... 15 more
[18:26:22] [Netty Client IO #2/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, examplemod] at SERVER
[18:26:22] [main/FATAL] [minecraft/Minecraft]: Error executing task
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_171]
at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1176) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:441) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.NullPointerException
at net.minecraft.client.network.NetHandlerPlayClient.handleTimeUpdate(NetHandlerPlayClient.java:1041) ~[NetHandlerPlayClient.class:?]
at net.minecraft.network.play.server.SPacketTimeUpdate.processPacket(SPacketTimeUpdate.java:58) ~[SPacketTimeUpdate.class:?]
at net.minecraft.network.play.server.SPacketTimeUpdate.processPacket(SPacketTimeUpdate.java:10) ~[SPacketTimeUpdate.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_171]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
... 15 more
[18:26:23] [main/FATAL] [minecraft/Minecraft]: Error executing task
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_171]
at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1176) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:441) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.NullPointerException
at net.minecraft.client.network.NetHandlerPlayClient.handleTimeUpdate(NetHandlerPlayClient.java:1041) ~[NetHandlerPlayClient.class:?]
at net.minecraft.network.play.server.SPacketTimeUpdate.processPacket(SPacketTimeUpdate.java:58) ~[SPacketTimeUpdate.class:?]
at net.minecraft.network.play.server.SPacketTimeUpdate.processPacket(SPacketTimeUpdate.java:10) ~[SPacketTimeUpdate.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_171]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
... 15 more
[18:26:24] [main/FATAL] [minecraft/Minecraft]: Error executing task
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_171]
at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1176) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:441) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.NullPointerException
at net.minecraft.client.network.NetHandlerPlayClient.handleTimeUpdate(NetHandlerPlayClient.java:1041) ~[NetHandlerPlayClient.class:?]
at net.minecraft.network.play.server.SPacketTimeUpdate.processPacket(SPacketTimeUpdate.java:58) ~[SPacketTimeUpdate.class:?]
at net.minecraft.network.play.server.SPacketTimeUpdate.processPacket(SPacketTimeUpdate.java:10) ~[SPacketTimeUpdate.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_171]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
... 15 more
[18:26:25] [main/FATAL] [minecraft/Minecraft]: Error executing task
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_171]
at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1176) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:441) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.NullPointerException
at net.minecraft.client.network.NetHandlerPlayClient.handleTimeUpdate(NetHandlerPlayClient.java:1041) ~[NetHandlerPlayClient.class:?]
at net.minecraft.network.play.server.SPacketTimeUpdate.processPacket(SPacketTimeUpdate.java:58) ~[SPacketTimeUpdate.class:?]
at net.minecraft.network.play.server.SPacketTimeUpdate.processPacket(SPacketTimeUpdate.java:10) ~[SPacketTimeUpdate.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_171]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
... 15 more
[18:26:26] [main/FATAL] [minecraft/Minecraft]: Error executing task
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_171]
at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1176) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:441) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_171]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.NullPointerException
at net.minecraft.client.network.NetHandlerPlayClient.handleTimeUpdate(NetHandlerPlayClient.java:1041) ~[NetHandlerPlayClient.class:?]
at net.minecraft.network.play.server.SPacketTimeUpdate.processPacket(SPacketTimeUpdate.java:58) ~[SPacketTimeUpdate.class:?]
at net.minecraft.network.play.server.SPacketTimeUpdate.processPacket(SPacketTimeUpdate.java:10) ~[SPacketTimeUpdate.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_171]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_171]
at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
... 15 more
На missing mods не стоит обращать внимания, так как тестировал на публичном сервере без модов.
 

Icosider

Kotliner
Администратор
3,603
99
664
Реализация своего таска:
Java:
public class MyTask extends FutureTask<MyTask.MyServerData>
{
    public MyTask(MyServerData data, OldServerPinger oldPinger)
    {
        super(() -> {
            try {
                oldPinger.func_147224_a(data);
            } catch (Throwable e) {
                FMLLog.warning("Unable to connect");
            }
            return data;
        });
    }

    class MyServerData extends ServerData
    {
        public MyServerData()
        {
            super("", "127.0.0.1:25565");
        }
    }
}
Помимо этого, рекомендую проверку на доступность сервера засунуть в отдельный поток.
 
4
0
Сделал всё, как вы написали, ошибок нет, но и к серверу клиент не подключается.
Код:
Java:
//Events
    @SubscribeEvent
    public void onKick(ClientDisconnectionFromServerEvent e) {
        MyTask task = new MyTask(new MyServerData(), new ServerPinger());
        if (task.isDone()) {
            FMLClientHandler.instance().connectToServer(new GuiMultiplayer(Minecraft.getMinecraft().currentScreen),
                    new MyServerData());
        }
    }

//MyTask.java
public class MyTask extends FutureTask<MyServerData> {

    public MyTask(MyServerData data, ServerPinger oldPinger) {
        super(() -> {
            try {
                oldPinger.ping(data);
            } catch (Throwable e) {
                FMLLog.warning("Unable to connect");
            }
            return data;
        });
    }

}
 
4
0
[16:20:52] [Netty Client IO #1/INFO] [STDOUT]: [ru.ecer.mod.EventsHandler:eek:nKick:28]: Меня кикнули!
[16:20:52] [main/INFO] [FML]: Applying holder lookups
[16:20:52] [main/INFO] [FML]: Holder lookups applied
[16:20:53] [Netty Client IO #2/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, examplemod] at SERVER
[16:20:55] [Netty Client IO #3/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, examplemod] at SERVER
[16:20:57] [Netty Client IO #4/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, examplemod] at SERVER
 
Сверху