Reset kick
This commit is contained in:
parent
7f434a8c5e
commit
e754f58623
|
|
@ -21,6 +21,8 @@ import org.adde0109.ambassador.velocity.client.FML2CRPMResetCompleteDecoder;
|
|||
import org.adde0109.ambassador.velocity.client.OutboundSuccessHolder;
|
||||
import org.adde0109.ambassador.velocity.client.ClientPacketQueue;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public enum VelocityForgeClientConnectionPhase implements ClientConnectionPhase {
|
||||
|
||||
NOT_STARTED {
|
||||
|
|
@ -114,7 +116,10 @@ public enum VelocityForgeClientConnectionPhase implements ClientConnectionPhase
|
|||
|
||||
@Override
|
||||
public void resetConnectionPhase(ConnectedPlayer player) {
|
||||
player.disconnect(Component.text("reconnect"));
|
||||
Ambassador.getTemporaryForced().put(player.getUsername(), player.getConnectionInFlight().getServer(),
|
||||
Ambassador.getInstance().config.getServerSwitchCancellationTime(), TimeUnit.SECONDS);
|
||||
//Disconnect - Reset Timeout
|
||||
player.disconnect(Ambassador.getInstance().config.getDisconnectResetMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -123,6 +128,8 @@ public enum VelocityForgeClientConnectionPhase implements ClientConnectionPhase
|
|||
}
|
||||
};
|
||||
|
||||
public ModListReplyPacket clientModList;
|
||||
|
||||
public boolean handle(ConnectedPlayer player, IForgeLoginWrapperPacket msg, VelocityServerConnection server) {
|
||||
player.setPhase(nextPhase());
|
||||
|
||||
|
|
@ -130,6 +137,7 @@ public enum VelocityForgeClientConnectionPhase implements ClientConnectionPhase
|
|||
ModInfo modInfo = new ModInfo("FML2", replyPacket.getMods().stream().map(
|
||||
(v) -> new ModInfo.Mod(v,"1")).toList());
|
||||
player.setModInfo(modInfo);
|
||||
this.clientModList = replyPacket;
|
||||
if (!(server.getConnection().getType() instanceof ForgeFMLConnectionType)) {
|
||||
complete(player);
|
||||
player.getConnectionInFlight().getConnection().getChannel().config().setAutoRead(true);
|
||||
|
|
@ -160,9 +168,11 @@ public enum VelocityForgeClientConnectionPhase implements ClientConnectionPhase
|
|||
if (isResettable(player)) {
|
||||
player.setPhase(RESETTABLE);
|
||||
RESETTABLE.onTransitionToNewPhase(player);
|
||||
RESETTABLE.clientModList = clientModList;
|
||||
} else {
|
||||
player.setPhase(COMPLETE);
|
||||
COMPLETE.onTransitionToNewPhase(player);
|
||||
COMPLETE.clientModList = clientModList;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package org.adde0109.ambassador.forge.packet;
|
|||
|
||||
import com.velocitypowered.api.proxy.messages.ChannelIdentifier;
|
||||
import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier;
|
||||
import com.velocitypowered.api.util.ModInfo;
|
||||
import com.velocitypowered.proxy.protocol.ProtocolUtils;
|
||||
import com.velocitypowered.proxy.protocol.packet.LoginPluginResponse;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ public class VelocityEventHandler {
|
|||
ForgeConstants.FORGE_HANDSHAKE_HANDLER, new ForgeLoginWrapperHandler(player));
|
||||
});
|
||||
}
|
||||
//event.getPlayer().sendMessage(Component.text("login event"));
|
||||
continuation.resume();
|
||||
}
|
||||
|
||||
|
|
@ -48,6 +49,7 @@ public class VelocityEventHandler {
|
|||
public void onPostLoginEvent(PostLoginEvent event, Continuation continuation) {
|
||||
if (((ConnectedPlayer) event.getPlayer()).getPhase() instanceof VelocityForgeClientConnectionPhase)
|
||||
((VelocityServer) Ambassador.getInstance().server).unregisterConnection((ConnectedPlayer) event.getPlayer());
|
||||
//event.getPlayer().sendMessage(Component.text("post login event"));
|
||||
continuation.resume();
|
||||
}
|
||||
|
||||
|
|
@ -61,6 +63,7 @@ public class VelocityEventHandler {
|
|||
RegisteredServer chosenServer = Ambassador.getTemporaryForced().remove(player.getUsername());
|
||||
if (chosenServer != null)
|
||||
event.setInitialServer(chosenServer);
|
||||
//event.getPlayer().sendMessage(Component.text("choose server event"));
|
||||
continuation.resume();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ public class ForgeLoginSessionHandler implements MinecraftSessionHandler {
|
|||
|
||||
@Override
|
||||
public boolean handle(Disconnect packet) {
|
||||
if (!serverConnection.getPhase().consideredComplete()) {
|
||||
if (!serverConnection.getPlayer().getPhase().consideredComplete()) {
|
||||
serverConnection.getPlayer().handleConnectionException(serverConnection.getServer(), packet, false);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -79,7 +79,7 @@ public class ForgeLoginSessionHandler implements MinecraftSessionHandler {
|
|||
@Override
|
||||
public void disconnected() {
|
||||
//Same as default just not safe.
|
||||
if (!serverConnection.getPhase().consideredComplete()) {
|
||||
if (!serverConnection.getPlayer().getPhase().consideredComplete()) {
|
||||
if (server.getConfiguration().getPlayerInfoForwardingMode() == PlayerInfoForwarding.LEGACY) {
|
||||
serverConnection.getPlayer().handleConnectionException(serverConnection.getServer(),
|
||||
new QuietRuntimeException("The connection to the remote server was unexpectedly closed.\n"
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user