Some fixes
This commit is contained in:
parent
0618777b85
commit
621ad9222b
|
|
@ -1,13 +1,18 @@
|
|||
package org.adde0109.ambassador;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.velocitypowered.api.event.Continuation;
|
||||
import com.velocitypowered.api.event.Subscribe;
|
||||
import com.velocitypowered.api.event.player.ServerPreConnectEvent;
|
||||
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
||||
import com.velocitypowered.api.plugin.Plugin;
|
||||
import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
|
||||
import org.adde0109.ambassador.Forge.ForgeConnection;
|
||||
import org.adde0109.ambassador.Forge.ForgeHandshakeHandler;
|
||||
import org.checkerframework.checker.index.qual.PolyUpperBound;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
|
@ -45,7 +50,13 @@ public class Ambassador {
|
|||
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onServerPreConnectEvent(ServerPreConnectEvent event, Continuation continuation) {
|
||||
ForgeConnection forgeConnection = forgeHandshakeHandler.getForgeConnection(event.getPlayer());
|
||||
if (forgeConnection != null) {
|
||||
|
||||
|
||||
}
|
||||
continuation.resume();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ public class AmbassadorConfig {
|
|||
if (config != null) {
|
||||
String serverName = config.getOrElse("forge-server", "");
|
||||
if (!Objects.equals(serverName, ""))
|
||||
this.handshakeServer = server.getServer(serverName)
|
||||
handshakeServer = server.getServer(serverName)
|
||||
.orElseThrow(() -> new Exception(serverName + "is not a registered server!"));
|
||||
this.forced = config.getOrElse("forced",forced);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package org.adde0109.ambassador;
|
||||
package org.adde0109.ambassador.Forge;
|
||||
|
||||
import com.velocitypowered.api.event.Continuation;
|
||||
import com.velocitypowered.api.proxy.LoginPhaseConnection;
|
||||
|
|
@ -1,16 +1,17 @@
|
|||
package org.adde0109.ambassador;
|
||||
package org.adde0109.ambassador.Forge;
|
||||
|
||||
import com.velocitypowered.api.event.Continuation;
|
||||
import com.velocitypowered.api.event.Subscribe;
|
||||
import com.velocitypowered.api.event.connection.PreLoginEvent;
|
||||
import com.velocitypowered.api.event.player.ServerLoginPluginMessageEvent;
|
||||
import com.velocitypowered.api.proxy.LoginPhaseConnection;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.adde0109.ambassador.event.PreSyncEvent;
|
||||
import org.adde0109.ambassador.AmbassadorConfig;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
public class ForgeHandshakeHandler {
|
||||
|
|
@ -24,7 +25,7 @@ public class ForgeHandshakeHandler {
|
|||
public Map<InetSocketAddress,ForgeConnection> incomingForgeConnections = new HashMap<InetSocketAddress,ForgeConnection>();
|
||||
|
||||
|
||||
ForgeHandshakeHandler(AmbassadorConfig config, ProxyServer server, Logger logger) {
|
||||
public ForgeHandshakeHandler(AmbassadorConfig config, ProxyServer server, Logger logger) {
|
||||
this.config = config;
|
||||
this.server = server;
|
||||
this.logger = logger;
|
||||
|
|
@ -38,36 +39,35 @@ public class ForgeHandshakeHandler {
|
|||
}
|
||||
RegisteredServer defaultServer = config.getServer(event.getConnection().getProtocolVersion().getProtocol());
|
||||
|
||||
this.server.getEventManager().fire(new PreSyncEvent(event.getUsername(),event.getConnection(), defaultServer))
|
||||
.thenAccept((e) -> {
|
||||
if (e.getResult().getServer().isEmpty()) {
|
||||
//Do not sync
|
||||
if (defaultServer == null) {
|
||||
continuation.resume();
|
||||
return;
|
||||
}
|
||||
RegisteredServer newServer = e.getResult().getServer().get();
|
||||
|
||||
|
||||
|
||||
//If a connection does not already exist, create one.
|
||||
if (!forgeServerConnectionMap.containsKey(newServer)) {
|
||||
forgeServerConnectionMap.put(newServer, new ForgeServerConnection(newServer,logger));
|
||||
if (!forgeServerConnectionMap.containsKey(defaultServer)) {
|
||||
forgeServerConnectionMap.put(defaultServer, new ForgeServerConnection(defaultServer,logger));
|
||||
}
|
||||
|
||||
ForgeServerConnection forgeServerConnection = forgeServerConnectionMap.get(newServer);
|
||||
ForgeServerConnection forgeServerConnection = forgeServerConnectionMap.get(defaultServer);
|
||||
|
||||
//Syncing - continuation is forwarded to this method
|
||||
ForgeConnection.sync((LoginPhaseConnection) event.getConnection(),forgeServerConnection,continuation).thenAccept(
|
||||
this::onSyncComplete);
|
||||
});
|
||||
}
|
||||
|
||||
public void onSyncComplete(ForgeConnection forgeConnection) {
|
||||
private void onSyncComplete(ForgeConnection forgeConnection) {
|
||||
if (forgeConnection != null) {
|
||||
incomingForgeConnections.values().removeIf((c) -> !c.getConnection().isActive());
|
||||
incomingForgeConnections.put(forgeConnection.getConnection().getRemoteAddress(), forgeConnection);
|
||||
}
|
||||
}
|
||||
|
||||
public ForgeConnection getForgeConnection(Player player) {
|
||||
return getForgeConnection(player.getRemoteAddress());
|
||||
}
|
||||
|
||||
private ForgeConnection getForgeConnection(InetSocketAddress socketAddress) {
|
||||
incomingForgeConnections.values().removeIf((c) -> !c.getConnection().isActive());
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package org.adde0109.ambassador;
|
||||
package org.adde0109.ambassador.Forge;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package org.adde0109.ambassador;
|
||||
package org.adde0109.ambassador.Forge;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
import com.velocitypowered.api.event.Continuation;
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
package org.adde0109.ambassador.event;
|
||||
|
||||
public class PostSyncEvent {
|
||||
|
||||
PostSyncEvent() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
package org.adde0109.ambassador.event;
|
||||
|
||||
import com.velocitypowered.api.event.ResultedEvent;
|
||||
import com.velocitypowered.api.event.player.ServerPreConnectEvent;
|
||||
import com.velocitypowered.api.proxy.InboundConnection;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
|
||||
public class PreSyncEvent implements ResultedEvent<ServerPreConnectEvent.ServerResult> {
|
||||
|
||||
private final String username;
|
||||
private final InboundConnection connection;
|
||||
private final RegisteredServer originalServer;
|
||||
private ServerPreConnectEvent.ServerResult result;
|
||||
|
||||
public PreSyncEvent(String username, InboundConnection connection,
|
||||
RegisteredServer originalServer) {
|
||||
this.username = username;
|
||||
this.connection = connection;
|
||||
this.originalServer = originalServer;
|
||||
this.result = ServerPreConnectEvent.ServerResult.allowed(originalServer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServerPreConnectEvent.ServerResult getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setResult(ServerPreConnectEvent.ServerResult result) {
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user