Compare commits
6 Commits
87b3d814dd
...
cf36174de7
Author | SHA1 | Date | |
---|---|---|---|
cf36174de7 | |||
b7f0cc4217 | |||
a0f6d000ec | |||
ca3323c00f | |||
f52180c385 | |||
949cde9e2b |
@ -52,7 +52,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>
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
pom.xml
2
pom.xml
@ -82,7 +82,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>
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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 );
|
||||||
|
@ -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 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
@ -131,12 +132,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
|
||||||
@ -624,14 +625,17 @@ 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() ) );
|
unsafe.sendPacket( new LoginSuccess( getUniqueId(), getName(), ( loginProfile == null ) ? null : loginProfile.getProperties() ) );
|
||||||
|
if ( getVersion() >= ProtocolConstants.MINECRAFT_1_20_2 )
|
||||||
|
{
|
||||||
|
thisState = State.CONFIGURING;
|
||||||
|
} else
|
||||||
|
{
|
||||||
ch.setProtocol( Protocol.GAME );
|
ch.setProtocol( Protocol.GAME );
|
||||||
}
|
|
||||||
finish2();
|
finish2();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -640,6 +644,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();
|
||||||
|
@ -9,7 +9,6 @@ import java.util.ArrayList;
|
|||||||
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 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -341,19 +332,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 )
|
||||||
@ -372,6 +352,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
|
||||||
|
@ -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 ) )
|
||||||
|
Loading…
Reference in New Issue
Block a user