冰冷冷
本帖最后由 冰冷冷 于 2019-10-2 23:13 编辑

forge 1.13+ 进入/断开服务器连接事件的临时替代方法



在1.13以前的版本中两个事件为
FMLNetworkEvent.ClientConnectedToServerEvent 当FML客户端发送连接服务端的请求时触发
FMLNetworkEvent.ClientDisconnectionFromServerEvent 当FML客户端和服务端断开时触发
而在1.13+版本中有很大变化,以上两个事件已删除


解决办法

@Mod.EventBusSubscriber(modid = VexMusic.MODID, value = Dist.CLIENT)
private static class ConnectedToServerListener {
    @SubscribeEvent
    public static void onGuiOpen(GuiOpenEvent event) {
        GuiScreen gui = event.getGui();
        if (gui instanceof GuiMainMenu || gui instanceof GuiConnecting) {
            //你需要做的事情相当于  FMLNetworkEvent.ClientConnectedToServerEvent
            MinecraftForge.EVENT_BUS.unregister(ConnectedToServerListener.class);
        }
    }
}
@Mod.EventBusSubscriber(modid = VexMusic.MODID, value = Dist.CLIENT)
private static class DisconnectionFromServerListener {
    @SubscribeEvent
    public static void onGuiOpen(GuiOpenEvent event) {
        if (event.getGui() instanceof GuiMultiplayer) {
            //你需要做的事情 相当于 FMLNetworkEvent.ClientDisconnectionFromServerEvent
            MusicPlayer.mp3Player.stop();
            MusicPlayer.playerList.stop();
        }
    }
}
暂时只能通过检测gui来判断断开与连接

如果有更好方法或者哪里有错误还希望各位大佬多多指点




85302485
可以! 精华帖子,有很大帮助

3TUSK
你提到了 https://github.com/MinecraftForge/MinecraftForge/issues/5536。这个 issue ticket 由下面这笔 commit 关闭:

https://github.com/MinecraftForg ... d0fabdc91540b67cc8f

这笔 commit 中追加了 ClientPlayerNetworkEvent.LoggedInEvent 和 ClientPlayerNetworkEvent.LoggedOutEvent,应该能解决楼主的问题了吧?

冰冷冷
3TUSK 发表于 2019-10-4 08:44
你提到了 https://github.com/MinecraftForge/MinecraftForge/issues/5536。这个 issue ticket 由下面这笔  ...

但是在1.13.2中没有这两个事件。所以只能用这两个来代替,之后的版本就有了



第一页 上一页 下一页 最后一页