Will do final tests tomorrow, but all seems to work. Yay for efficiency and options for plugin developers!

This commit is contained in:
md_5 2013-05-30 19:36:43 +10:00
parent d82b29e15a
commit 9c35cad824
10 changed files with 20 additions and 19 deletions

View File

@ -4,6 +4,7 @@ import io.netty.buffer.ByteBuf;
import lombok.Getter; import lombok.Getter;
import net.md_5.bungee.protocol.packet.DefinedPacket; import net.md_5.bungee.protocol.packet.DefinedPacket;
import net.md_5.bungee.protocol.packet.forge.Forge1Login; import net.md_5.bungee.protocol.packet.forge.Forge1Login;
import net.md_5.bungee.protocol.skip.PacketReader;
public class Forge extends Vanilla public class Forge extends Vanilla
{ {
@ -11,9 +12,10 @@ public class Forge extends Vanilla
@Getter @Getter
private static final Forge instance = new Forge(); private static final Forge instance = new Forge();
public Forge()
{ {
classes[0x01] = Forge1Login.class; classes[0x01] = Forge1Login.class;
skipper = new PacketReader( this ); // TODO: :(
} }
@Override @Override

View File

@ -43,10 +43,10 @@ public class Vanilla implements Protocol
@Getter @Getter
private Constructor<? extends DefinedPacket>[] constructors = new Constructor[ 256 ]; private Constructor<? extends DefinedPacket>[] constructors = new Constructor[ 256 ];
@Getter @Getter
private final PacketReader skipper = new PacketReader( this ); protected PacketReader skipper;
/*========================================================================*/ /*========================================================================*/
public Vanilla()
{ {
classes[0x00] = Packet0KeepAlive.class; classes[0x00] = Packet0KeepAlive.class;
classes[0x01] = Packet1Login.class; classes[0x01] = Packet1Login.class;
@ -65,6 +65,7 @@ public class Vanilla implements Protocol
classes[0xFD] = PacketFDEncryptionRequest.class; classes[0xFD] = PacketFDEncryptionRequest.class;
classes[0xFE] = PacketFEPing.class; classes[0xFE] = PacketFEPing.class;
classes[0xFF] = PacketFFKick.class; classes[0xFF] = PacketFFKick.class;
skipper = new PacketReader( this );
} }
@Override @Override

View File

@ -39,7 +39,7 @@ public abstract class DefinedPacket
public void writeArray(byte[] b, ByteBuf buf) public void writeArray(byte[] b, ByteBuf buf)
{ {
// TODO: Check len - use Guava? // TODO: Check len - use Guava?
buf.writeByte( b.length ); buf.writeShort( b.length );
buf.writeBytes( b ); buf.writeBytes( b );
} }

View File

@ -26,7 +26,7 @@ public class Packet1Login extends DefinedPacket
public Packet1Login(int entityId, String levelType, byte gameMode, byte dimension, byte difficulty, byte unused, byte maxPlayers) public Packet1Login(int entityId, String levelType, byte gameMode, byte dimension, byte difficulty, byte unused, byte maxPlayers)
{ {
this( entityId, levelType, gameMode, entityId, difficulty, unused, maxPlayers ); this( entityId, levelType, gameMode, (int) dimension, difficulty, unused, maxPlayers );
} }
public Packet1Login(int entityId, String levelType, byte gameMode, int dimension, byte difficulty, byte unused, byte maxPlayers) public Packet1Login(int entityId, String levelType, byte gameMode, int dimension, byte difficulty, byte unused, byte maxPlayers)

View File

@ -13,14 +13,14 @@ public class PacketC9PlayerListItem extends DefinedPacket
private String username; private String username;
private boolean online; private boolean online;
private int ping; private short ping;
private PacketC9PlayerListItem() private PacketC9PlayerListItem()
{ {
super( 0xC9 ); super( 0xC9 );
} }
public PacketC9PlayerListItem(String username, boolean online, int ping) public PacketC9PlayerListItem(String username, boolean online, short ping)
{ {
super( 0xC9 ); super( 0xC9 );
this.username = username; this.username = username;
@ -33,7 +33,7 @@ public class PacketC9PlayerListItem extends DefinedPacket
{ {
username = readString( buf ); username = readString( buf );
online = buf.readBoolean(); online = buf.readBoolean();
ping = buf.readInt(); ping = buf.readShort();
} }
@Override @Override
@ -41,7 +41,7 @@ public class PacketC9PlayerListItem extends DefinedPacket
{ {
writeString( username, buf ); writeString( username, buf );
buf.writeBoolean( online ); buf.writeBoolean( online );
buf.writeInt( ping ); buf.writeShort(ping );
} }
@Override @Override

View File

@ -33,7 +33,7 @@ public class PacketCCSettings extends DefinedPacket
@Override @Override
public void write(ByteBuf buf) public void write(ByteBuf buf)
{ {
locale = readString( buf ); writeString( locale, buf );
buf.writeByte( viewDistance ); buf.writeByte( viewDistance );
buf.writeByte( chatFlags ); buf.writeByte( chatFlags );
buf.writeByte( difficulty ); buf.writeByte( difficulty );

View File

@ -31,14 +31,12 @@ import net.md_5.bungee.protocol.Forge;
import net.md_5.bungee.protocol.packet.DefinedPacket; import net.md_5.bungee.protocol.packet.DefinedPacket;
import net.md_5.bungee.protocol.packet.Packet1Login; import net.md_5.bungee.protocol.packet.Packet1Login;
import net.md_5.bungee.protocol.packet.Packet9Respawn; import net.md_5.bungee.protocol.packet.Packet9Respawn;
import net.md_5.bungee.protocol.packet.PacketCDClientStatus;
import net.md_5.bungee.protocol.packet.PacketCEScoreboardObjective; import net.md_5.bungee.protocol.packet.PacketCEScoreboardObjective;
import net.md_5.bungee.protocol.packet.PacketD1Team; import net.md_5.bungee.protocol.packet.PacketD1Team;
import net.md_5.bungee.protocol.packet.PacketFAPluginMessage; import net.md_5.bungee.protocol.packet.PacketFAPluginMessage;
import net.md_5.bungee.protocol.packet.PacketFCEncryptionResponse; import net.md_5.bungee.protocol.packet.PacketFCEncryptionResponse;
import net.md_5.bungee.protocol.packet.PacketFDEncryptionRequest; import net.md_5.bungee.protocol.packet.PacketFDEncryptionRequest;
import net.md_5.bungee.protocol.packet.PacketFFKick; import net.md_5.bungee.protocol.packet.PacketFFKick;
import net.md_5.bungee.protocol.Vanilla;
import net.md_5.bungee.protocol.packet.forge.Forge1Login; import net.md_5.bungee.protocol.packet.forge.Forge1Login;
@RequiredArgsConstructor @RequiredArgsConstructor
@ -62,7 +60,7 @@ public class ServerConnector extends PacketHandler
@Override @Override
public void exception(Throwable t) throws Exception public void exception(Throwable t) throws Exception
{ {
String message = "Exception Connectiong:" + Util.exception( t ); String message = "Exception Connecting:" + Util.exception( t );
if ( user.getServer() == null ) if ( user.getServer() == null )
{ {
user.disconnect( message ); user.disconnect( message );

View File

@ -20,9 +20,9 @@ public class Global implements TabListHandler
UserConnection con = (UserConnection) player; UserConnection con = (UserConnection) player;
for ( ProxiedPlayer p : ProxyServer.getInstance().getPlayers() ) for ( ProxiedPlayer p : ProxyServer.getInstance().getPlayers() )
{ {
con.sendPacket( new PacketC9PlayerListItem( p.getDisplayName(), true, p.getPing() ) ); con.sendPacket( new PacketC9PlayerListItem( p.getDisplayName(), true, (short) p.getPing() ) );
} }
BungeeCord.getInstance().broadcast( new PacketC9PlayerListItem( player.getDisplayName(), true, player.getPing() ) ); BungeeCord.getInstance().broadcast( new PacketC9PlayerListItem( player.getDisplayName(), true, (short) player.getPing() ) );
} }
@Override @Override
@ -30,7 +30,7 @@ public class Global implements TabListHandler
{ {
if ( !sentPings.contains( player ) ) if ( !sentPings.contains( player ) )
{ {
BungeeCord.getInstance().broadcast( new PacketC9PlayerListItem( player.getDisplayName(), true, player.getPing() ) ); BungeeCord.getInstance().broadcast( new PacketC9PlayerListItem( player.getDisplayName(), true, (short) player.getPing() ) );
sentPings.add( player ); sentPings.add( player );
} }
} }
@ -38,7 +38,7 @@ public class Global implements TabListHandler
@Override @Override
public void onDisconnect(ProxiedPlayer player) public void onDisconnect(ProxiedPlayer player)
{ {
BungeeCord.getInstance().broadcast( new PacketC9PlayerListItem( player.getDisplayName(), false, 9999 ) ); BungeeCord.getInstance().broadcast( new PacketC9PlayerListItem( player.getDisplayName(), false, (short) 9999 ) );
sentPings.remove( player ); sentPings.remove( player );
} }

View File

@ -25,7 +25,7 @@ public class GlobalPing extends Global
int lastPing = lastPings.get( player ); int lastPing = lastPings.get( player );
if ( ping - PING_THRESHOLD > lastPing && ping + PING_THRESHOLD < lastPing ) if ( ping - PING_THRESHOLD > lastPing && ping + PING_THRESHOLD < lastPing )
{ {
BungeeCord.getInstance().broadcast( new PacketC9PlayerListItem( player.getDisplayName(), true, ping ) ); BungeeCord.getInstance().broadcast( new PacketC9PlayerListItem( player.getDisplayName(), true, (short) ping ) );
lastPings.put( player, ping ); lastPings.put( player, ping );
} }
} }

View File

@ -38,7 +38,7 @@ public class ServerUnique implements TabListHandler
{ {
for ( String username : usernames ) for ( String username : usernames )
{ {
( (UserConnection) player ).sendPacket( new PacketC9PlayerListItem( username, false, 9999 ) ); ( (UserConnection) player ).sendPacket( new PacketC9PlayerListItem( username, false, (short) 9999 ) );
} }
usernames.clear(); usernames.clear();
} }