From 2e0f41afea1628494418f1ca08fc3f3513c81812 Mon Sep 17 00:00:00 2001 From: Logicism Date: Mon, 22 Jul 2019 00:42:29 -0700 Subject: [PATCH] Merge branch 'master' of https://github.com/GeyserMC/Geyser into crash-fix # Conflicts: # connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java --- .../thread/PingPassthroughThread.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 connector/src/main/java/org/geysermc/connector/thread/PingPassthroughThread.java diff --git a/connector/src/main/java/org/geysermc/connector/thread/PingPassthroughThread.java b/connector/src/main/java/org/geysermc/connector/thread/PingPassthroughThread.java new file mode 100644 index 000000000..ce7e54a0b --- /dev/null +++ b/connector/src/main/java/org/geysermc/connector/thread/PingPassthroughThread.java @@ -0,0 +1,40 @@ +package org.geysermc.connector.thread; + +import com.github.steveice10.mc.protocol.MinecraftConstants; +import com.github.steveice10.mc.protocol.MinecraftProtocol; +import com.github.steveice10.mc.protocol.data.SubProtocol; +import com.github.steveice10.mc.protocol.data.status.ServerStatusInfo; +import com.github.steveice10.mc.protocol.data.status.handler.ServerInfoHandler; +import com.github.steveice10.packetlib.Client; +import com.github.steveice10.packetlib.tcp.TcpSessionFactory; +import lombok.Getter; +import org.geysermc.connector.GeyserConnector; + +public class PingPassthroughThread implements Runnable { + + private GeyserConnector connector; + + public PingPassthroughThread(GeyserConnector connector) { + this.connector = connector; + } + + @Getter + private ServerStatusInfo info; + + private Client client; + + @Override + public void run() { + try { + this.client = new Client(connector.getConfig().getRemote().getAddress(), connector.getConfig().getRemote().getPort(), new MinecraftProtocol(SubProtocol.STATUS), new TcpSessionFactory()); + this.client.getSession().setFlag(MinecraftConstants.SERVER_INFO_HANDLER_KEY, (ServerInfoHandler) (session, info) -> { + this.info = info; + this.client.getSession().disconnect(null); + }); + + client.getSession().connect(); + } catch (Exception ex) { + ex.printStackTrace(); + } + } +}