Start work on more efficient, publically accessable packet API
This commit is contained in:
@@ -51,9 +51,9 @@ import net.md_5.bungee.api.scheduler.TaskScheduler;
|
||||
import net.md_5.bungee.command.*;
|
||||
import net.md_5.bungee.config.YamlConfig;
|
||||
import net.md_5.bungee.netty.PipelineUtils;
|
||||
import net.md_5.bungee.packet.DefinedPacket;
|
||||
import net.md_5.bungee.packet.Packet3Chat;
|
||||
import net.md_5.bungee.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.protocol.packet.DefinedPacket;
|
||||
import net.md_5.bungee.protocol.packet.Packet3Chat;
|
||||
import net.md_5.bungee.protocol.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.protocol.PacketDefinitions;
|
||||
import net.md_5.bungee.scheduler.BungeeThreadPool;
|
||||
import net.md_5.bungee.util.CaseInsensitiveMap;
|
||||
|
@@ -25,8 +25,8 @@ import net.md_5.bungee.api.connection.Server;
|
||||
import net.md_5.bungee.connection.PingHandler;
|
||||
import net.md_5.bungee.netty.HandlerBoss;
|
||||
import net.md_5.bungee.netty.PipelineUtils;
|
||||
import net.md_5.bungee.packet.DefinedPacket;
|
||||
import net.md_5.bungee.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.protocol.packet.DefinedPacket;
|
||||
import net.md_5.bungee.protocol.packet.PacketFAPluginMessage;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class BungeeServerInfo implements ServerInfo
|
||||
|
@@ -15,8 +15,8 @@ import javax.crypto.SecretKey;
|
||||
import javax.crypto.spec.IvParameterSpec;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import lombok.Getter;
|
||||
import net.md_5.bungee.packet.PacketFCEncryptionResponse;
|
||||
import net.md_5.bungee.packet.PacketFDEncryptionRequest;
|
||||
import net.md_5.bungee.protocol.packet.PacketFCEncryptionResponse;
|
||||
import net.md_5.bungee.protocol.packet.PacketFDEncryptionRequest;
|
||||
|
||||
/**
|
||||
* Class containing all encryption related methods for the proxy.
|
||||
|
@@ -7,8 +7,8 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import net.md_5.bungee.api.connection.Server;
|
||||
import net.md_5.bungee.netty.ChannelWrapper;
|
||||
import net.md_5.bungee.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.packet.PacketFFKick;
|
||||
import net.md_5.bungee.protocol.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.protocol.packet.PacketFFKick;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class ServerConnection implements Server
|
||||
|
@@ -26,17 +26,17 @@ import net.md_5.bungee.netty.ChannelWrapper;
|
||||
import net.md_5.bungee.netty.CipherDecoder;
|
||||
import net.md_5.bungee.netty.CipherEncoder;
|
||||
import net.md_5.bungee.netty.PacketDecoder;
|
||||
import net.md_5.bungee.packet.DefinedPacket;
|
||||
import net.md_5.bungee.packet.Packet1Login;
|
||||
import net.md_5.bungee.packet.Packet9Respawn;
|
||||
import net.md_5.bungee.packet.PacketCDClientStatus;
|
||||
import net.md_5.bungee.packet.PacketCEScoreboardObjective;
|
||||
import net.md_5.bungee.packet.PacketD1Team;
|
||||
import net.md_5.bungee.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.packet.PacketFCEncryptionResponse;
|
||||
import net.md_5.bungee.packet.PacketFDEncryptionRequest;
|
||||
import net.md_5.bungee.packet.PacketFFKick;
|
||||
import net.md_5.bungee.packet.PacketHandler;
|
||||
import net.md_5.bungee.protocol.packet.DefinedPacket;
|
||||
import net.md_5.bungee.protocol.packet.Packet1Login;
|
||||
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.PacketD1Team;
|
||||
import net.md_5.bungee.protocol.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.protocol.packet.PacketFCEncryptionResponse;
|
||||
import net.md_5.bungee.protocol.packet.PacketFDEncryptionRequest;
|
||||
import net.md_5.bungee.protocol.packet.PacketFFKick;
|
||||
import net.md_5.bungee.protocol.packet.PacketHandler;
|
||||
import net.md_5.bungee.protocol.PacketDefinitions;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
|
@@ -30,12 +30,12 @@ import net.md_5.bungee.connection.InitialHandler;
|
||||
import net.md_5.bungee.netty.ChannelWrapper;
|
||||
import net.md_5.bungee.netty.HandlerBoss;
|
||||
import net.md_5.bungee.netty.PipelineUtils;
|
||||
import net.md_5.bungee.packet.DefinedPacket;
|
||||
import net.md_5.bungee.packet.Packet3Chat;
|
||||
import net.md_5.bungee.packet.Packet9Respawn;
|
||||
import net.md_5.bungee.packet.PacketCCSettings;
|
||||
import net.md_5.bungee.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.packet.PacketFFKick;
|
||||
import net.md_5.bungee.protocol.packet.DefinedPacket;
|
||||
import net.md_5.bungee.protocol.packet.Packet3Chat;
|
||||
import net.md_5.bungee.protocol.packet.Packet9Respawn;
|
||||
import net.md_5.bungee.protocol.packet.PacketCCSettings;
|
||||
import net.md_5.bungee.protocol.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.protocol.packet.PacketFFKick;
|
||||
import net.md_5.bungee.util.CaseInsensitiveSet;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
|
@@ -22,16 +22,16 @@ import net.md_5.bungee.api.scoreboard.Score;
|
||||
import net.md_5.bungee.api.scoreboard.Scoreboard;
|
||||
import net.md_5.bungee.api.scoreboard.Team;
|
||||
import net.md_5.bungee.netty.ChannelWrapper;
|
||||
import net.md_5.bungee.packet.Packet0KeepAlive;
|
||||
import net.md_5.bungee.packet.Packet3Chat;
|
||||
import net.md_5.bungee.packet.PacketC9PlayerListItem;
|
||||
import net.md_5.bungee.packet.PacketCEScoreboardObjective;
|
||||
import net.md_5.bungee.packet.PacketCFScoreboardScore;
|
||||
import net.md_5.bungee.packet.PacketD0DisplayScoreboard;
|
||||
import net.md_5.bungee.packet.PacketD1Team;
|
||||
import net.md_5.bungee.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.packet.PacketFFKick;
|
||||
import net.md_5.bungee.packet.PacketHandler;
|
||||
import net.md_5.bungee.protocol.packet.Packet0KeepAlive;
|
||||
import net.md_5.bungee.protocol.packet.Packet3Chat;
|
||||
import net.md_5.bungee.protocol.packet.PacketC9PlayerListItem;
|
||||
import net.md_5.bungee.protocol.packet.PacketCEScoreboardObjective;
|
||||
import net.md_5.bungee.protocol.packet.PacketCFScoreboardScore;
|
||||
import net.md_5.bungee.protocol.packet.PacketD0DisplayScoreboard;
|
||||
import net.md_5.bungee.protocol.packet.PacketD1Team;
|
||||
import net.md_5.bungee.protocol.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.protocol.packet.PacketFFKick;
|
||||
import net.md_5.bungee.protocol.packet.PacketHandler;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class DownstreamBridge extends PacketHandler
|
||||
|
@@ -34,15 +34,15 @@ import net.md_5.bungee.netty.ChannelWrapper;
|
||||
import net.md_5.bungee.netty.CipherDecoder;
|
||||
import net.md_5.bungee.netty.CipherEncoder;
|
||||
import net.md_5.bungee.netty.PacketDecoder;
|
||||
import net.md_5.bungee.packet.Packet1Login;
|
||||
import net.md_5.bungee.packet.Packet2Handshake;
|
||||
import net.md_5.bungee.packet.PacketCDClientStatus;
|
||||
import net.md_5.bungee.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.packet.PacketFCEncryptionResponse;
|
||||
import net.md_5.bungee.packet.PacketFDEncryptionRequest;
|
||||
import net.md_5.bungee.packet.PacketFEPing;
|
||||
import net.md_5.bungee.packet.PacketFFKick;
|
||||
import net.md_5.bungee.packet.PacketHandler;
|
||||
import net.md_5.bungee.protocol.packet.Packet1Login;
|
||||
import net.md_5.bungee.protocol.packet.Packet2Handshake;
|
||||
import net.md_5.bungee.protocol.packet.PacketCDClientStatus;
|
||||
import net.md_5.bungee.protocol.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.protocol.packet.PacketFCEncryptionResponse;
|
||||
import net.md_5.bungee.protocol.packet.PacketFDEncryptionRequest;
|
||||
import net.md_5.bungee.protocol.packet.PacketFEPing;
|
||||
import net.md_5.bungee.protocol.packet.PacketFFKick;
|
||||
import net.md_5.bungee.protocol.packet.PacketHandler;
|
||||
import net.md_5.bungee.protocol.PacketDefinitions;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
|
@@ -5,8 +5,8 @@ import net.md_5.bungee.api.Callback;
|
||||
import net.md_5.bungee.api.ServerPing;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.netty.ChannelWrapper;
|
||||
import net.md_5.bungee.packet.PacketFFKick;
|
||||
import net.md_5.bungee.packet.PacketHandler;
|
||||
import net.md_5.bungee.protocol.packet.PacketFFKick;
|
||||
import net.md_5.bungee.protocol.packet.PacketHandler;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class PingHandler extends PacketHandler
|
||||
|
@@ -10,11 +10,11 @@ import net.md_5.bungee.api.event.ChatEvent;
|
||||
import net.md_5.bungee.api.event.PlayerDisconnectEvent;
|
||||
import net.md_5.bungee.api.event.PluginMessageEvent;
|
||||
import net.md_5.bungee.netty.ChannelWrapper;
|
||||
import net.md_5.bungee.packet.Packet0KeepAlive;
|
||||
import net.md_5.bungee.packet.Packet3Chat;
|
||||
import net.md_5.bungee.packet.PacketCCSettings;
|
||||
import net.md_5.bungee.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.packet.PacketHandler;
|
||||
import net.md_5.bungee.protocol.packet.Packet0KeepAlive;
|
||||
import net.md_5.bungee.protocol.packet.Packet3Chat;
|
||||
import net.md_5.bungee.protocol.packet.PacketCCSettings;
|
||||
import net.md_5.bungee.protocol.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.protocol.packet.PacketHandler;
|
||||
|
||||
public class UpstreamBridge extends PacketHandler
|
||||
{
|
||||
|
@@ -4,7 +4,7 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.handler.codec.MessageToByteEncoder;
|
||||
import net.md_5.bungee.packet.DefinedPacket;
|
||||
import net.md_5.bungee.protocol.packet.DefinedPacket;
|
||||
|
||||
@ChannelHandler.Sharable
|
||||
public class DefinedPacketEncoder extends MessageToByteEncoder<DefinedPacket>
|
||||
|
@@ -8,8 +8,8 @@ import java.io.IOException;
|
||||
import java.util.logging.Level;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.connection.CancelSendSignal;
|
||||
import net.md_5.bungee.packet.DefinedPacket;
|
||||
import net.md_5.bungee.packet.PacketHandler;
|
||||
import net.md_5.bungee.protocol.packet.DefinedPacket;
|
||||
import net.md_5.bungee.protocol.packet.PacketHandler;
|
||||
|
||||
/**
|
||||
* This class is a primitive wrapper for {@link PacketHandler} instances tied to
|
||||
|
@@ -1,240 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutput;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import lombok.Delegate;
|
||||
import net.md_5.bungee.Util;
|
||||
|
||||
/**
|
||||
* This class represents a packet which has been given a special definition. All
|
||||
* subclasses can read and write to the backing byte array which can be
|
||||
* retrieved via the {@link #getPacket()} method.
|
||||
*/
|
||||
public abstract class DefinedPacket implements DataOutput
|
||||
{
|
||||
|
||||
private static interface Overriden
|
||||
{
|
||||
|
||||
void readUTF();
|
||||
|
||||
void writeUTF(String s);
|
||||
}
|
||||
private ByteArrayInputStream byteStream;
|
||||
private DataInputStream in;
|
||||
@Delegate(excludes = Overriden.class)
|
||||
private ByteArrayDataOutput out;
|
||||
private byte[] buf;
|
||||
|
||||
public DefinedPacket(int id, byte[] buf)
|
||||
{
|
||||
byteStream = new ByteArrayInputStream( buf );
|
||||
in = new DataInputStream( byteStream );
|
||||
if ( readUnsignedByte() != id )
|
||||
{
|
||||
throw new IllegalArgumentException( "Wasn't expecting packet id " + Util.hex( id ) );
|
||||
}
|
||||
this.buf = buf;
|
||||
}
|
||||
|
||||
public DefinedPacket(int id)
|
||||
{
|
||||
out = ByteStreams.newDataOutput();
|
||||
writeByte( id );
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the bytes that make up this packet.
|
||||
*
|
||||
* @return the bytes which make up this packet, either the original byte
|
||||
* array or the newly written one.
|
||||
*/
|
||||
public byte[] getPacket()
|
||||
{
|
||||
return buf == null ? buf = out.toByteArray() : buf;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeUTF(String s)
|
||||
{
|
||||
writeShort( s.length() );
|
||||
writeChars( s );
|
||||
}
|
||||
|
||||
public String readUTF()
|
||||
{
|
||||
short len = readShort();
|
||||
char[] chars = new char[ len ];
|
||||
for ( int i = 0; i < len; i++ )
|
||||
{
|
||||
chars[i] = this.readChar();
|
||||
}
|
||||
return new String( chars );
|
||||
}
|
||||
|
||||
public void writeArray(byte[] b)
|
||||
{
|
||||
writeShort( b.length );
|
||||
write( b );
|
||||
}
|
||||
|
||||
public byte[] readArray()
|
||||
{
|
||||
short len = readShort();
|
||||
byte[] ret = new byte[ len ];
|
||||
readFully( ret );
|
||||
return ret;
|
||||
}
|
||||
|
||||
public final int available()
|
||||
{
|
||||
return byteStream.available();
|
||||
}
|
||||
|
||||
public final void readFully(byte b[])
|
||||
{
|
||||
try
|
||||
{
|
||||
in.readFully( b );
|
||||
} catch ( IOException e )
|
||||
{
|
||||
throw new IllegalStateException( e );
|
||||
}
|
||||
}
|
||||
|
||||
public final boolean readBoolean()
|
||||
{
|
||||
try
|
||||
{
|
||||
return in.readBoolean();
|
||||
} catch ( IOException e )
|
||||
{
|
||||
throw new IllegalStateException( e );
|
||||
}
|
||||
}
|
||||
|
||||
public final byte readByte()
|
||||
{
|
||||
try
|
||||
{
|
||||
return in.readByte();
|
||||
} catch ( IOException e )
|
||||
{
|
||||
throw new IllegalStateException( e );
|
||||
}
|
||||
}
|
||||
|
||||
public final int readUnsignedByte()
|
||||
{
|
||||
try
|
||||
{
|
||||
return in.readUnsignedByte();
|
||||
} catch ( IOException e )
|
||||
{
|
||||
throw new IllegalStateException( e );
|
||||
}
|
||||
}
|
||||
|
||||
public final short readShort()
|
||||
{
|
||||
try
|
||||
{
|
||||
return in.readShort();
|
||||
} catch ( IOException e )
|
||||
{
|
||||
throw new IllegalStateException( e );
|
||||
}
|
||||
}
|
||||
|
||||
public final char readChar()
|
||||
{
|
||||
try
|
||||
{
|
||||
return in.readChar();
|
||||
} catch ( IOException e )
|
||||
{
|
||||
throw new IllegalStateException( e );
|
||||
}
|
||||
}
|
||||
|
||||
public final int readInt()
|
||||
{
|
||||
try
|
||||
{
|
||||
return in.readInt();
|
||||
} catch ( IOException e )
|
||||
{
|
||||
throw new IllegalStateException( e );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public abstract boolean equals(Object obj);
|
||||
|
||||
@Override
|
||||
public abstract int hashCode();
|
||||
|
||||
@Override
|
||||
public abstract String toString();
|
||||
|
||||
public abstract void handle(PacketHandler handler) throws Exception;
|
||||
@SuppressWarnings("unchecked")
|
||||
private static Class<? extends DefinedPacket>[] classes = new Class[ 256 ];
|
||||
@SuppressWarnings("unchecked")
|
||||
private static Constructor<? extends DefinedPacket>[] consructors = new Constructor[ 256 ];
|
||||
|
||||
public static DefinedPacket packet(byte[] buf)
|
||||
{
|
||||
int id = buf[0] & 0xFF;
|
||||
Class<? extends DefinedPacket> clazz = classes[id];
|
||||
DefinedPacket ret = null;
|
||||
if ( clazz != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
Constructor<? extends DefinedPacket> constructor = consructors[id];
|
||||
if ( constructor == null )
|
||||
{
|
||||
constructor = clazz.getDeclaredConstructor( byte[].class );
|
||||
consructors[id] = constructor;
|
||||
}
|
||||
|
||||
if ( constructor != null )
|
||||
{
|
||||
ret = constructor.newInstance( buf );
|
||||
}
|
||||
} catch ( IllegalAccessException | InstantiationException | InvocationTargetException | NoSuchMethodException ex )
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static
|
||||
{
|
||||
classes[0x00] = Packet0KeepAlive.class;
|
||||
classes[0x01] = Packet1Login.class;
|
||||
classes[0x02] = Packet2Handshake.class;
|
||||
classes[0x03] = Packet3Chat.class;
|
||||
classes[0x09] = Packet9Respawn.class;
|
||||
classes[0xC9] = PacketC9PlayerListItem.class;
|
||||
classes[0xCC] = PacketCCSettings.class;
|
||||
classes[0xCD] = PacketCDClientStatus.class;
|
||||
classes[0xCE] = PacketCEScoreboardObjective.class;
|
||||
classes[0xCF] = PacketCFScoreboardScore.class;
|
||||
classes[0xD0] = PacketD0DisplayScoreboard.class;
|
||||
classes[0xD1] = PacketD1Team.class;
|
||||
classes[0xFA] = PacketFAPluginMessage.class;
|
||||
classes[0xFC] = PacketFCEncryptionResponse.class;
|
||||
classes[0xFD] = PacketFDEncryptionRequest.class;
|
||||
classes[0xFE] = PacketFEPing.class;
|
||||
classes[0xFF] = PacketFFKick.class;
|
||||
}
|
||||
}
|
@@ -1,24 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class Packet0KeepAlive extends DefinedPacket
|
||||
{
|
||||
|
||||
public int id;
|
||||
|
||||
Packet0KeepAlive(byte[] buf)
|
||||
{
|
||||
super( 0x00, buf );
|
||||
id = readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,70 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class Packet1Login extends DefinedPacket
|
||||
{
|
||||
|
||||
public int entityId;
|
||||
public String levelType;
|
||||
public byte gameMode;
|
||||
public int dimension;
|
||||
public byte difficulty;
|
||||
public byte unused;
|
||||
public byte maxPlayers;
|
||||
|
||||
public Packet1Login(int entityId, String levelType, byte gameMode, byte dimension, byte difficulty, byte unused, byte maxPlayers, boolean forge)
|
||||
{
|
||||
super( 0x01 );
|
||||
writeInt( entityId );
|
||||
writeUTF( levelType );
|
||||
writeByte( gameMode );
|
||||
if ( forge )
|
||||
{
|
||||
writeInt( dimension );
|
||||
} else
|
||||
{
|
||||
writeByte( dimension );
|
||||
}
|
||||
writeByte( difficulty );
|
||||
writeByte( unused );
|
||||
writeByte( maxPlayers );
|
||||
this.entityId = entityId;
|
||||
this.levelType = levelType;
|
||||
this.gameMode = gameMode;
|
||||
this.dimension = dimension;
|
||||
this.difficulty = difficulty;
|
||||
this.unused = unused;
|
||||
this.maxPlayers = maxPlayers;
|
||||
}
|
||||
|
||||
Packet1Login(byte[] buf)
|
||||
{
|
||||
super( 0x01, buf );
|
||||
this.entityId = readInt();
|
||||
this.levelType = readUTF();
|
||||
this.gameMode = readByte();
|
||||
if ( available() == 4 )
|
||||
{
|
||||
this.dimension = readByte();
|
||||
} else if ( available() == 7 )
|
||||
{
|
||||
this.dimension = readInt();
|
||||
} else
|
||||
{
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
this.difficulty = readByte();
|
||||
this.unused = readByte();
|
||||
this.maxPlayers = readByte();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,43 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class Packet2Handshake extends DefinedPacket
|
||||
{
|
||||
|
||||
public byte procolVersion;
|
||||
public String username;
|
||||
public String host;
|
||||
public int port;
|
||||
|
||||
public Packet2Handshake(byte protocolVersion, String username, String host, int port)
|
||||
{
|
||||
super( 0x02 );
|
||||
writeByte( protocolVersion );
|
||||
writeUTF( username );
|
||||
writeUTF( host );
|
||||
writeInt( port );
|
||||
this.procolVersion = protocolVersion;
|
||||
this.username = username;
|
||||
this.host = host;
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
Packet2Handshake(byte[] buf)
|
||||
{
|
||||
super( 0x02, buf );
|
||||
this.procolVersion = readByte();
|
||||
this.username = readUTF();
|
||||
this.host = readUTF();
|
||||
this.port = readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class Packet3Chat extends DefinedPacket
|
||||
{
|
||||
|
||||
public String message;
|
||||
|
||||
public Packet3Chat(String message)
|
||||
{
|
||||
super( 0x03 );
|
||||
writeUTF( message );
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
Packet3Chat(byte[] buf)
|
||||
{
|
||||
super( 0x03, buf );
|
||||
this.message = readUTF();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,49 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class Packet9Respawn extends DefinedPacket
|
||||
{
|
||||
|
||||
public static final Packet9Respawn DIM1_SWITCH = new Packet9Respawn( (byte) 1, (byte) 0, (byte) 0, (short) 256, "DEFAULT" );
|
||||
public static final Packet9Respawn DIM2_SWITCH = new Packet9Respawn( (byte) -1, (byte) 0, (byte) 0, (short) 256, "DEFAULT" );
|
||||
public int dimension;
|
||||
public byte difficulty;
|
||||
public byte gameMode;
|
||||
public short worldHeight;
|
||||
public String levelType;
|
||||
|
||||
public Packet9Respawn(int dimension, byte difficulty, byte gameMode, short worldHeight, String levelType)
|
||||
{
|
||||
super( 0x09 );
|
||||
writeInt( dimension );
|
||||
writeByte( difficulty );
|
||||
writeByte( gameMode );
|
||||
writeShort( worldHeight );
|
||||
writeUTF( levelType );
|
||||
this.dimension = dimension;
|
||||
this.difficulty = difficulty;
|
||||
this.gameMode = gameMode;
|
||||
this.worldHeight = worldHeight;
|
||||
this.levelType = levelType;
|
||||
}
|
||||
|
||||
Packet9Respawn(byte[] buf)
|
||||
{
|
||||
super( 0x09, buf );
|
||||
this.dimension = readInt();
|
||||
this.difficulty = readByte();
|
||||
this.gameMode = readByte();
|
||||
this.worldHeight = readShort();
|
||||
this.levelType = readUTF();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,36 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PacketC9PlayerListItem extends DefinedPacket
|
||||
{
|
||||
|
||||
public String username;
|
||||
public boolean online;
|
||||
public int ping;
|
||||
|
||||
PacketC9PlayerListItem(byte[] buf)
|
||||
{
|
||||
super( 0xC9, buf );
|
||||
username = readUTF();
|
||||
online = readBoolean();
|
||||
ping = readShort();
|
||||
}
|
||||
|
||||
public PacketC9PlayerListItem(String username, boolean online, int ping)
|
||||
{
|
||||
super( 0xC9 );
|
||||
writeUTF( username );
|
||||
writeBoolean( online );
|
||||
writeShort( ping );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,32 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PacketCCSettings extends DefinedPacket
|
||||
{
|
||||
|
||||
public String locale;
|
||||
public byte viewDistance;
|
||||
public byte chatFlags;
|
||||
public byte difficulty;
|
||||
public boolean showCape;
|
||||
|
||||
public PacketCCSettings(byte[] buf)
|
||||
{
|
||||
super( 0xCC, buf );
|
||||
locale = readUTF();
|
||||
viewDistance = readByte();
|
||||
chatFlags = readByte();
|
||||
difficulty = readByte();
|
||||
showCape = readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,38 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PacketCDClientStatus extends DefinedPacket
|
||||
{
|
||||
|
||||
/**
|
||||
* Represents the packet the client sends to the server when it is ready to
|
||||
* login.
|
||||
*/
|
||||
public static PacketCDClientStatus CLIENT_LOGIN = new PacketCDClientStatus( (byte) 0 );
|
||||
|
||||
/**
|
||||
* Sent from the client to the server upon respawn,
|
||||
*
|
||||
* @param payload 0 if initial spawn, 1 if respawn after death.
|
||||
*/
|
||||
public PacketCDClientStatus(byte payload)
|
||||
{
|
||||
super( 0xCD );
|
||||
writeByte( payload );
|
||||
}
|
||||
|
||||
PacketCDClientStatus(byte[] buf)
|
||||
{
|
||||
super( 0xCD, buf );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,42 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PacketCEScoreboardObjective extends DefinedPacket
|
||||
{
|
||||
|
||||
public String name;
|
||||
public String text;
|
||||
/**
|
||||
* 0 to create, 1 to remove.
|
||||
*/
|
||||
public byte action;
|
||||
|
||||
public PacketCEScoreboardObjective(String name, String text, byte status)
|
||||
{
|
||||
super( 0xCE );
|
||||
writeUTF( name );
|
||||
writeUTF( text );
|
||||
writeByte( status );
|
||||
this.name = name;
|
||||
this.text = text;
|
||||
this.action = status;
|
||||
}
|
||||
|
||||
PacketCEScoreboardObjective(byte[] buf)
|
||||
{
|
||||
super( 0xCE, buf );
|
||||
this.name = readUTF();
|
||||
this.text = readUTF();
|
||||
this.action = readByte();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,52 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PacketCFScoreboardScore extends DefinedPacket
|
||||
{
|
||||
|
||||
public String itemName;
|
||||
/**
|
||||
* 0 = create / update, 1 = remove.
|
||||
*/
|
||||
public byte action;
|
||||
public String scoreName;
|
||||
public int value;
|
||||
|
||||
public PacketCFScoreboardScore(byte[] buf)
|
||||
{
|
||||
super( 0xCF, buf );
|
||||
itemName = readUTF();
|
||||
action = readByte();
|
||||
if ( action == 0 )
|
||||
{
|
||||
scoreName = readUTF();
|
||||
value = readInt();
|
||||
}
|
||||
}
|
||||
|
||||
public PacketCFScoreboardScore(String itemName, byte action, String scoreName, int value)
|
||||
{
|
||||
super( 0xCF );
|
||||
writeUTF( itemName );
|
||||
writeByte( action );
|
||||
if ( action == 0 )
|
||||
{
|
||||
writeUTF( scoreName );
|
||||
writeInt( value );
|
||||
}
|
||||
this.itemName = itemName;
|
||||
this.action = action;
|
||||
this.scoreName = scoreName;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,29 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PacketD0DisplayScoreboard extends DefinedPacket
|
||||
{
|
||||
|
||||
/**
|
||||
* 0 = list, 1 = side, 2 = below.
|
||||
*/
|
||||
public byte position;
|
||||
public String name;
|
||||
|
||||
public PacketD0DisplayScoreboard(byte[] buf)
|
||||
{
|
||||
super( 0xD0, buf );
|
||||
position = readByte();
|
||||
name = readUTF();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,63 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PacketD1Team extends DefinedPacket
|
||||
{
|
||||
|
||||
public String name;
|
||||
/**
|
||||
* 0 - create, 1 remove, 2 info update, 3 player add, 4 player remove.
|
||||
*/
|
||||
public byte mode;
|
||||
public String displayName;
|
||||
public String prefix;
|
||||
public String suffix;
|
||||
public byte friendlyFire;
|
||||
public short playerCount;
|
||||
public String[] players;
|
||||
|
||||
public PacketD1Team(byte[] buf)
|
||||
{
|
||||
super( 0xD1, buf );
|
||||
name = readUTF();
|
||||
mode = readByte();
|
||||
if ( mode == 0 || mode == 2 )
|
||||
{
|
||||
displayName = readUTF();
|
||||
prefix = readUTF();
|
||||
suffix = readUTF();
|
||||
friendlyFire = readByte();
|
||||
}
|
||||
if ( mode == 0 || mode == 3 || mode == 4 )
|
||||
{
|
||||
players = new String[ readShort() ];
|
||||
for ( int i = 0; i < players.length; i++ )
|
||||
{
|
||||
players[i] = readUTF();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public PacketD1Team()
|
||||
{
|
||||
super( 0xD1 );
|
||||
}
|
||||
|
||||
public static PacketD1Team destroy(String name)
|
||||
{
|
||||
PacketD1Team packet = new PacketD1Team();
|
||||
packet.writeUTF( name );
|
||||
packet.writeByte( 1 );
|
||||
return packet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,35 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PacketFAPluginMessage extends DefinedPacket
|
||||
{
|
||||
|
||||
public String tag;
|
||||
public byte[] data;
|
||||
|
||||
public PacketFAPluginMessage(String tag, byte[] data)
|
||||
{
|
||||
super( 0xFA );
|
||||
writeUTF( tag );
|
||||
writeArray( data );
|
||||
this.tag = tag;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
PacketFAPluginMessage(byte[] buf)
|
||||
{
|
||||
super( 0xFA, buf );
|
||||
this.tag = readUTF();
|
||||
this.data = readArray();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,42 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PacketFCEncryptionResponse extends DefinedPacket
|
||||
{
|
||||
|
||||
public byte[] sharedSecret;
|
||||
public byte[] verifyToken;
|
||||
|
||||
public PacketFCEncryptionResponse()
|
||||
{
|
||||
super( 0xFC );
|
||||
writeArray( new byte[ 0 ] );
|
||||
writeArray( new byte[ 0 ] );
|
||||
}
|
||||
|
||||
public PacketFCEncryptionResponse(byte[] sharedSecret, byte[] verifyToken)
|
||||
{
|
||||
super( 0xFC );
|
||||
writeArray( sharedSecret );
|
||||
writeArray( verifyToken );
|
||||
this.sharedSecret = sharedSecret;
|
||||
this.verifyToken = verifyToken;
|
||||
}
|
||||
|
||||
PacketFCEncryptionResponse(byte[] buf)
|
||||
{
|
||||
super( 0xFC, buf );
|
||||
this.sharedSecret = readArray();
|
||||
this.verifyToken = readArray();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,40 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PacketFDEncryptionRequest extends DefinedPacket
|
||||
{
|
||||
|
||||
public String serverId;
|
||||
public byte[] publicKey;
|
||||
public byte[] verifyToken;
|
||||
|
||||
public PacketFDEncryptionRequest(String serverId, byte[] publicKey, byte[] verifyToken)
|
||||
{
|
||||
super( 0xFD );
|
||||
writeUTF( serverId );
|
||||
writeArray( publicKey );
|
||||
writeArray( verifyToken );
|
||||
this.serverId = serverId;
|
||||
this.publicKey = publicKey;
|
||||
this.verifyToken = verifyToken;
|
||||
}
|
||||
|
||||
PacketFDEncryptionRequest(byte[] buf)
|
||||
{
|
||||
super( 0xFD, buf );
|
||||
serverId = readUTF();
|
||||
publicKey = readArray();
|
||||
verifyToken = readArray();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,24 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PacketFEPing extends DefinedPacket
|
||||
{
|
||||
|
||||
public byte version;
|
||||
|
||||
PacketFEPing(byte[] buffer)
|
||||
{
|
||||
super( 0xFE, buffer );
|
||||
version = readByte();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PacketFFKick extends DefinedPacket
|
||||
{
|
||||
|
||||
public String message;
|
||||
|
||||
public PacketFFKick(String message)
|
||||
{
|
||||
super( 0xFF );
|
||||
writeUTF( message );
|
||||
}
|
||||
|
||||
PacketFFKick(byte[] buf)
|
||||
{
|
||||
super( 0xFF, buf );
|
||||
this.message = readUTF();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -1,94 +0,0 @@
|
||||
package net.md_5.bungee.packet;
|
||||
|
||||
import net.md_5.bungee.netty.ChannelWrapper;
|
||||
|
||||
public abstract class PacketHandler
|
||||
{
|
||||
|
||||
@Override
|
||||
public abstract String toString();
|
||||
|
||||
public void connected(ChannelWrapper channel) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void disconnected(ChannelWrapper channel) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void exception(Throwable t) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(byte[] buf) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(Packet0KeepAlive alive) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(Packet1Login login) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(Packet2Handshake handshake) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(Packet3Chat chat) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(Packet9Respawn respawn) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(PacketC9PlayerListItem playerList) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(PacketCCSettings settings) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(PacketCDClientStatus clientStatus) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(PacketCEScoreboardObjective objective) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(PacketCFScoreboardScore score) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(PacketD0DisplayScoreboard displayScoreboard) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(PacketD1Team team) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(PacketFAPluginMessage pluginMessage) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(PacketFCEncryptionResponse encryptResponse) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(PacketFDEncryptionRequest encryptRequest) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(PacketFEPing ping) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(PacketFFKick kick) throws Exception
|
||||
{
|
||||
}
|
||||
}
|
@@ -7,7 +7,7 @@ import net.md_5.bungee.UserConnection;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.TabListHandler;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.packet.PacketC9PlayerListItem;
|
||||
import net.md_5.bungee.protocol.packet.PacketC9PlayerListItem;
|
||||
|
||||
public class Global implements TabListHandler
|
||||
{
|
||||
|
@@ -4,7 +4,7 @@ import gnu.trove.map.TObjectIntMap;
|
||||
import gnu.trove.map.hash.TObjectIntHashMap;
|
||||
import net.md_5.bungee.BungeeCord;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.packet.PacketC9PlayerListItem;
|
||||
import net.md_5.bungee.protocol.packet.PacketC9PlayerListItem;
|
||||
|
||||
public class GlobalPing extends Global
|
||||
{
|
||||
|
@@ -7,7 +7,7 @@ import java.util.Collection;
|
||||
import net.md_5.bungee.UserConnection;
|
||||
import net.md_5.bungee.api.TabListHandler;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.packet.PacketC9PlayerListItem;
|
||||
import net.md_5.bungee.protocol.packet.PacketC9PlayerListItem;
|
||||
|
||||
public class ServerUnique implements TabListHandler
|
||||
{
|
||||
|
Reference in New Issue
Block a user