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