Compare commits

..

No commits in common. "a7dbbc2f0a4bc741d695016fc9597d185b965e5d" and "497c6879e05d168102b3331e55c53ccfd9fef541" have entirely different histories.

13 changed files with 35 additions and 69 deletions

View File

@ -55,7 +55,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId> <artifactId>maven-shade-plugin</artifactId>
<version>3.5.1</version> <version>3.5.0</version>
<executions> <executions>
<execution> <execution>
<phase>package</phase> <phase>package</phase>

View File

@ -33,13 +33,6 @@ public final class SelectorComponent extends BaseComponent
*/ */
private String selector; private String selector;
/**
* The separator of multiple selected entities.
* <br>
* The default is {@code {"color": "gray", "text": ", "}}.
*/
private BaseComponent separator;
/** /**
* Creates a selector component from the original to clone it. * Creates a selector component from the original to clone it.
* *
@ -49,17 +42,6 @@ public final class SelectorComponent extends BaseComponent
{ {
super( original ); super( original );
setSelector( original.getSelector() ); setSelector( original.getSelector() );
setSeparator( original.getSeparator() );
}
/**
* Creates a selector component from the selector
*
* @param selector the selector as a String
*/
public SelectorComponent(String selector)
{
setSelector( selector );
} }
@Override @Override

View File

@ -22,12 +22,6 @@ public class SelectorComponentSerializer extends BaseComponentSerializer impleme
throw new JsonParseException( "Could not parse JSON: missing 'selector' property" ); throw new JsonParseException( "Could not parse JSON: missing 'selector' property" );
} }
SelectorComponent component = new SelectorComponent( object.get( "selector" ).getAsString() ); SelectorComponent component = new SelectorComponent( object.get( "selector" ).getAsString() );
if ( object.has( "separator" ) )
{
component.setSeparator( ComponentSerializer.deserialize( object.get( "separator" ).getAsString() ) );
}
deserialize( object, component, context ); deserialize( object, component, context );
return component; return component;
} }
@ -38,11 +32,6 @@ public class SelectorComponentSerializer extends BaseComponentSerializer impleme
JsonObject object = new JsonObject(); JsonObject object = new JsonObject();
serialize( object, component, context ); serialize( object, component, context );
object.addProperty( "selector", component.getSelector() ); object.addProperty( "selector", component.getSelector() );
if ( component.getSeparator() != null )
{
object.addProperty( "separator", ComponentSerializer.toString( component.getSeparator() ) );
}
return object; return object;
} }
} }

View File

@ -38,7 +38,7 @@ public class CommandSend extends Command implements TabExecutor
this.sender = sender; this.sender = sender;
for ( ServerConnectRequest.Result result : ServerConnectRequest.Result.values() ) for ( ServerConnectRequest.Result result : ServerConnectRequest.Result.values() )
{ {
results.put( result, Collections.synchronizedList( new ArrayList<>() ) ); results.put( result, new ArrayList<String>() );
} }
} }

View File

@ -83,7 +83,7 @@
<dependency> <dependency>
<groupId>io.netty</groupId> <groupId>io.netty</groupId>
<artifactId>netty-bom</artifactId> <artifactId>netty-bom</artifactId>
<version>4.1.99.Final</version> <version>4.1.97.Final</version>
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>

View File

@ -31,12 +31,12 @@ public class LegacyDecoder extends ByteToMessageDecoder
if ( packetID == 0xFE ) if ( packetID == 0xFE )
{ {
out.add( new PacketWrapper( new LegacyPing( in.isReadable() && in.readUnsignedByte() == 0x01 ), Unpooled.EMPTY_BUFFER, Protocol.STATUS ) ); out.add( new PacketWrapper( new LegacyPing( in.isReadable() && in.readUnsignedByte() == 0x01 ), Unpooled.EMPTY_BUFFER ) );
return; return;
} else if ( packetID == 0x02 && in.isReadable() ) } else if ( packetID == 0x02 && in.isReadable() )
{ {
in.skipBytes( in.readableBytes() ); in.skipBytes( in.readableBytes() );
out.add( new PacketWrapper( new LegacyHandshake(), Unpooled.EMPTY_BUFFER, Protocol.STATUS ) ); out.add( new PacketWrapper( new LegacyHandshake(), Unpooled.EMPTY_BUFFER ) );
return; return;
} }

View File

@ -50,7 +50,7 @@ public class MinecraftDecoder extends MessageToMessageDecoder<ByteBuf>
in.skipBytes( in.readableBytes() ); in.skipBytes( in.readableBytes() );
} }
out.add( new PacketWrapper( packet, slice, protocol ) ); out.add( new PacketWrapper( packet, slice ) );
slice = null; slice = null;
} finally } finally
{ {

View File

@ -10,7 +10,6 @@ public class PacketWrapper
public final DefinedPacket packet; public final DefinedPacket packet;
public final ByteBuf buf; public final ByteBuf buf;
public final Protocol protocol;
@Setter @Setter
private boolean released; private boolean released;

View File

@ -172,7 +172,7 @@ public class BungeeTitle implements Title
{ {
if ( player.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_17 ) if ( player.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_17 )
{ {
( (UserConnection) player ).sendPacketQueued( packet.newPacket ); player.unsafe().sendPacket( packet.newPacket );
} else } else
{ {
player.unsafe().sendPacket( packet.oldPacket ); player.unsafe().sendPacket( packet.oldPacket );

View File

@ -43,6 +43,7 @@ import net.md_5.bungee.protocol.packet.GameState;
import net.md_5.bungee.protocol.packet.Handshake; import net.md_5.bungee.protocol.packet.Handshake;
import net.md_5.bungee.protocol.packet.Kick; import net.md_5.bungee.protocol.packet.Kick;
import net.md_5.bungee.protocol.packet.Login; import net.md_5.bungee.protocol.packet.Login;
import net.md_5.bungee.protocol.packet.LoginAcknowledged;
import net.md_5.bungee.protocol.packet.LoginPayloadRequest; import net.md_5.bungee.protocol.packet.LoginPayloadRequest;
import net.md_5.bungee.protocol.packet.LoginPayloadResponse; import net.md_5.bungee.protocol.packet.LoginPayloadResponse;
import net.md_5.bungee.protocol.packet.LoginRequest; import net.md_5.bungee.protocol.packet.LoginRequest;
@ -333,9 +334,9 @@ public class ServerConnector extends PacketHandler
user.unsafe().sendPacket( new StartConfiguration() ); user.unsafe().sendPacket( new StartConfiguration() );
} else } else
{ {
LoginResult loginProfile = user.getPendingConnection().getLoginProfile(); ch.setDecodeProtocol( Protocol.CONFIGURATION );
user.unsafe().sendPacket( new LoginSuccess( user.getUniqueId(), user.getName(), ( loginProfile == null ) ? null : loginProfile.getProperties() ) ); ch.write( new LoginAcknowledged() );
user.getCh().setEncodeProtocol( Protocol.CONFIGURATION ); ch.setEncodeProtocol( Protocol.CONFIGURATION );
} }
} }

View File

@ -59,6 +59,7 @@ import net.md_5.bungee.protocol.packet.Handshake;
import net.md_5.bungee.protocol.packet.Kick; import net.md_5.bungee.protocol.packet.Kick;
import net.md_5.bungee.protocol.packet.LegacyHandshake; import net.md_5.bungee.protocol.packet.LegacyHandshake;
import net.md_5.bungee.protocol.packet.LegacyPing; import net.md_5.bungee.protocol.packet.LegacyPing;
import net.md_5.bungee.protocol.packet.LoginAcknowledged;
import net.md_5.bungee.protocol.packet.LoginPayloadResponse; import net.md_5.bungee.protocol.packet.LoginPayloadResponse;
import net.md_5.bungee.protocol.packet.LoginRequest; import net.md_5.bungee.protocol.packet.LoginRequest;
import net.md_5.bungee.protocol.packet.LoginSuccess; import net.md_5.bungee.protocol.packet.LoginSuccess;
@ -122,12 +123,12 @@ public class InitialHandler extends PacketHandler implements PendingConnection
private enum State private enum State
{ {
HANDSHAKE, STATUS, PING, USERNAME, ENCRYPT, FINISHING; HANDSHAKE, STATUS, PING, USERNAME, ENCRYPT, FINISHING, CONFIGURING;
} }
private boolean canSendKickMessage() private boolean canSendKickMessage()
{ {
return thisState == State.USERNAME || thisState == State.ENCRYPT || thisState == State.FINISHING; return thisState == State.USERNAME || thisState == State.ENCRYPT || thisState == State.FINISHING || thisState == State.CONFIGURING;
} }
@Override @Override
@ -597,12 +598,15 @@ public class InitialHandler extends PacketHandler implements PendingConnection
userCon = new UserConnection( bungee, ch, getName(), InitialHandler.this ); userCon = new UserConnection( bungee, ch, getName(), InitialHandler.this );
userCon.setCompressionThreshold( BungeeCord.getInstance().config.getCompressionThreshold() ); userCon.setCompressionThreshold( BungeeCord.getInstance().config.getCompressionThreshold() );
if ( getVersion() < ProtocolConstants.MINECRAFT_1_20_2 ) unsafe.sendPacket( new LoginSuccess( getUniqueId(), getName(), ( loginProfile == null ) ? null : loginProfile.getProperties() ) );
if ( getVersion() >= ProtocolConstants.MINECRAFT_1_20_2 )
{
thisState = State.CONFIGURING;
} else
{ {
unsafe.sendPacket( new LoginSuccess( getUniqueId(), getName(), ( loginProfile == null ) ? null : loginProfile.getProperties() ) );
ch.setProtocol( Protocol.GAME ); ch.setProtocol( Protocol.GAME );
finish2();
} }
finish2();
} }
} }
} ); } );
@ -613,6 +617,15 @@ public class InitialHandler extends PacketHandler implements PendingConnection
bungee.getPluginManager().callEvent( new LoginEvent( InitialHandler.this, complete ) ); bungee.getPluginManager().callEvent( new LoginEvent( InitialHandler.this, complete ) );
} }
@Override
public void handle(LoginAcknowledged loginAcknowledged) throws Exception
{
Preconditions.checkState( thisState == State.CONFIGURING, "Not expecting CONFIGURING" );
finish2();
ch.setEncodeProtocol( Protocol.CONFIGURATION );
}
private void finish2() private void finish2()
{ {
userCon.init(); userCon.init();

View File

@ -10,7 +10,6 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import net.md_5.bungee.BungeeCord; import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.ServerConnection;
import net.md_5.bungee.ServerConnection.KeepAliveData; import net.md_5.bungee.ServerConnection.KeepAliveData;
import net.md_5.bungee.UserConnection; import net.md_5.bungee.UserConnection;
import net.md_5.bungee.Util; import net.md_5.bungee.Util;
@ -135,22 +134,14 @@ public class UpstreamBridge extends PacketHandler
@Override @Override
public void handle(PacketWrapper packet) throws Exception public void handle(PacketWrapper packet) throws Exception
{ {
ServerConnection server = con.getServer(); if ( con.getServer() != null )
if ( server != null && server.isConnected() )
{ {
Protocol serverEncode = server.getCh().getEncodeProtocol();
// #3527: May still have old packets from client in game state when switching server to configuration state - discard those
if ( packet.protocol != serverEncode )
{
return;
}
EntityMap rewrite = con.getEntityRewrite(); EntityMap rewrite = con.getEntityRewrite();
if ( rewrite != null && serverEncode == Protocol.GAME ) if ( rewrite != null && con.getServer().getCh().getEncodeProtocol() == Protocol.GAME )
{ {
rewrite.rewriteServerbound( packet.buf, con.getClientEntityId(), con.getServerEntityId(), con.getPendingConnection().getVersion() ); rewrite.rewriteServerbound( packet.buf, con.getClientEntityId(), con.getServerEntityId(), con.getPendingConnection().getVersion() );
} }
server.getCh().write( packet ); con.getServer().getCh().write( packet );
} }
} }
@ -331,19 +322,8 @@ public class UpstreamBridge extends PacketHandler
con.getPendingConnection().relayMessage( pluginMessage ); con.getPendingConnection().relayMessage( pluginMessage );
} }
@Override
public void handle(LoginAcknowledged loginAcknowledged) throws Exception
{
configureServer();
}
@Override @Override
public void handle(StartConfiguration startConfiguration) throws Exception public void handle(StartConfiguration startConfiguration) throws Exception
{
configureServer();
}
private void configureServer()
{ {
ChannelWrapper ch = con.getServer().getCh(); ChannelWrapper ch = con.getServer().getCh();
if ( ch.getDecodeProtocol() == Protocol.LOGIN ) if ( ch.getDecodeProtocol() == Protocol.LOGIN )
@ -362,6 +342,8 @@ public class UpstreamBridge extends PacketHandler
public void handle(FinishConfiguration finishConfiguration) throws Exception public void handle(FinishConfiguration finishConfiguration) throws Exception
{ {
con.sendQueuedPackets(); con.sendQueuedPackets();
super.handle( finishConfiguration );
} }
@Override @Override

View File

@ -174,7 +174,7 @@ public class HandlerBoss extends ChannelInboundHandlerAdapter
{ {
ProxyServer.getInstance().getLogger().log( Level.WARNING, "{0} - could not decode packet! {1}", new Object[] ProxyServer.getInstance().getLogger().log( Level.WARNING, "{0} - could not decode packet! {1}", new Object[]
{ {
handler, cause handler, cause.getCause() != null ? cause.getCause() : cause
} ); } );
} }
} else if ( cause instanceof IOException || ( cause instanceof IllegalStateException && handler instanceof InitialHandler ) ) } else if ( cause instanceof IOException || ( cause instanceof IllegalStateException && handler instanceof InitialHandler ) )