This commit is contained in:
Finn
2026-01-18 22:36:53 +01:00
parent fb56d47b16
commit a345b81846
2 changed files with 32 additions and 19 deletions

View File

@@ -4,6 +4,7 @@ import dev.unlegitdqrk.unlegitlibrary.event.EventListener;
import dev.unlegitdqrk.unlegitlibrary.event.Listener; import dev.unlegitdqrk.unlegitlibrary.event.Listener;
import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.connect.ClientConnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.connect.ClientConnectedEvent;
import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientDisconnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientDisconnectedEvent;
import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientFullyDisconnectedEvent;
import dev.unlegitdqrk.unlegitlibrary.network.system.utils.Transport; import dev.unlegitdqrk.unlegitlibrary.network.system.utils.Transport;
import lombok.Getter; import lombok.Getter;
import org.openautonomousconnection.protocol.annotations.ProtocolInfo; import org.openautonomousconnection.protocol.annotations.ProtocolInfo;
@@ -59,7 +60,7 @@ public final class ClientListener extends EventListener {
* @param event The client disconnected event. * @param event The client disconnected event.
*/ */
@Listener @Listener
public void onDisconnect(ClientDisconnectedEvent event) { public void onDisconnect(ClientFullyDisconnectedEvent event) {
client.onDisconnect(event); client.onDisconnect(event);
} }

View File

@@ -4,7 +4,6 @@ import dev.unlegitdqrk.unlegitlibrary.network.system.client.NetworkClient;
import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientDisconnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientDisconnectedEvent;
import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientFullyDisconnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientFullyDisconnectedEvent;
import dev.unlegitdqrk.unlegitlibrary.network.system.utils.Transport; import dev.unlegitdqrk.unlegitlibrary.network.system.utils.Transport;
import dev.unlegitdqrk.unlegitlibrary.network.system.utils.TransportPolicy;
import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils;
import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider; import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider;
import lombok.Getter; import lombok.Getter;
@@ -55,28 +54,38 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
*/ */
private ProtocolVersion serverVersion = null; private ProtocolVersion serverVersion = null;
@Getter
private String insHost;
@Getter
private int insPort;
/** /**
* Initializes the ProtocolClient, setting up certificate folders and the INS client connection. * Initializes the ProtocolClient, setting up certificate folders and the INS client connection.
*/ */
public ProtocolClient(String insHost, int insPort) { public ProtocolClient(String insHost, int insPort) {
// Initialize and verify certificate folders and files // Initialize and verify certificate folders and files
folderStructure = new ClientCertificateFolderStructure(); folderStructure = new ClientCertificateFolderStructure();
this.insHost = insHost; }
this.insPort = insPort;
/**
* Connects to a INS Server.
*
* @param host Server host
* @param tcpPort TCP port
* @param udpPort UDP port
*/
public final void buildINSConnection(String host, int tcpPort, int udpPort) {
if (!protocolBridge.isRunningAsClient())
throw new IllegalStateException("Not running as client");
if (clientToINS != null &&
(clientToINS.isFullyConnected() || clientToINS.isTcpConnected() || clientToINS.isUdpConnected()))
return;
createINSConnection(host, tcpPort, udpPort);
} }
/** /**
* Initialize connection to INS server * Initialize connection to INS server
*/ */
private void createNetworkClient() { private void createINSConnection(String host, int tcpPort, int udpPort) {
clientToINS = new NetworkClient.ClientBuilder().setLogger(protocolBridge.getLogger()).setProxy(protocolBridge.getProxy()). clientToINS = new NetworkClient.ClientBuilder().setLogger(protocolBridge.getLogger()).setProxy(protocolBridge.getProxy()).
setHost(insHost).setTcpPort(insPort).setUdpPort(0). setHost(host).setTcpPort(tcpPort).setUdpPort(udpPort).
setPacketHandler(protocolBridge.getProtocolValues().packetHandler).setEventManager(protocolBridge.getProtocolValues().eventManager). setPacketHandler(protocolBridge.getProtocolValues().packetHandler).setEventManager(protocolBridge.getProtocolValues().eventManager).
setRootCAFolder(folderStructure.publicCAFolder).setClientCertificatesFolder(folderStructure.publicClientFolder, folderStructure.privateClientFolder). setRootCAFolder(folderStructure.publicCAFolder).setClientCertificatesFolder(folderStructure.publicClientFolder, folderStructure.privateClientFolder).
build(); build();
@@ -89,7 +98,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
* @param tcpPort TCP port * @param tcpPort TCP port
* @param udpPort UDP port * @param udpPort UDP port
*/ */
public final void connectToServer(String host, int tcpPort, int udpPort) { public final void buildServerConnection(String host, int tcpPort, int udpPort) {
if (!protocolBridge.isRunningAsClient()) if (!protocolBridge.isRunningAsClient())
throw new IllegalStateException("Not running as client"); throw new IllegalStateException("Not running as client");
@@ -97,7 +106,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
(clientToServer.isFullyConnected() || clientToServer.isTcpConnected() || clientToServer.isUdpConnected())) (clientToServer.isFullyConnected() || clientToServer.isTcpConnected() || clientToServer.isUdpConnected()))
return; return;
createServerClient(host, tcpPort, udpPort); createServerConnection(host, tcpPort, udpPort);
} }
/** /**
@@ -116,7 +125,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
* @param tcpPort Server port * @param tcpPort Server port
* @param udpPort Server port * @param udpPort Server port
*/ */
private final void createServerClient(String host, int tcpPort, int udpPort) { private final void createServerConnection(String host, int tcpPort, int udpPort) {
clientToServer = new NetworkClient.ClientBuilder() clientToServer = new NetworkClient.ClientBuilder()
.setLogger(protocolBridge.getLogger()) .setLogger(protocolBridge.getLogger())
.setProxy(protocolBridge.getProxy()) .setProxy(protocolBridge.getProxy())
@@ -144,7 +153,6 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
throw new IllegalStateException("ProtocolBridge already attached!"); throw new IllegalStateException("ProtocolBridge already attached!");
this.protocolBridge = bridge; this.protocolBridge = bridge;
createNetworkClient();
} }
/** /**
@@ -231,14 +239,18 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider {
* *
* @param event the ClientDisconnectedEvent triggered on INS disconnection. * @param event the ClientDisconnectedEvent triggered on INS disconnection.
*/ */
public final void onDisconnect(ClientDisconnectedEvent event) { public final void onDisconnect(ClientFullyDisconnectedEvent event) {
// Reset server version on INS disconnect // Reset server version on INS disconnect
if (!clientToINS.isTcpConnected()) { if (!clientToINS.isFullyConnected() && clientToINS != null) {
insServerVersion = null; insServerVersion = null;
clientToINS = null;
disconnectFromServer(); disconnectFromServer();
} }
if (!clientToServer.isFullyConnected()) serverVersion = null; if (!clientToServer.isFullyConnected() && clientToServer != null) {
serverVersion = null;
clientToServer = null;
}
} }
/** /**