Update protocol - major overhaul

This commit is contained in:
md_5
2013-10-11 19:26:40 +11:00
parent 4257b81d8c
commit 7be929bb08
39 changed files with 285 additions and 278 deletions

View File

@@ -1,95 +1,96 @@
package net.md_5.bungee.protocol;
import net.md_5.bungee.protocol.handshake.Packet0Handshake;
import net.md_5.bungee.protocol.login.Packet0Kick;
import net.md_5.bungee.protocol.login.Packet1EncryptionResponse;
import net.md_5.bungee.protocol.login.Packet2LoginSuccess;
import net.md_5.bungee.protocol.packet.KeepAlive;
import net.md_5.bungee.protocol.packet.ClientSettings;
import net.md_5.bungee.protocol.packet.ClientStatus;
import net.md_5.bungee.protocol.packet.Login;
import net.md_5.bungee.protocol.packet.Chat;
import net.md_5.bungee.protocol.packet.PlayerListItem;
import net.md_5.bungee.protocol.packet.TabComplete;
import net.md_5.bungee.protocol.packet.ScoreboardObjective;
import net.md_5.bungee.protocol.packet.ScoreboardScore;
import net.md_5.bungee.protocol.packet.ScoreboardDisplay;
import net.md_5.bungee.protocol.packet.Team;
import net.md_5.bungee.protocol.packet.PluginMessage;
import net.md_5.bungee.protocol.packet.Kick;
import net.md_5.bungee.protocol.packet.Respawn;
import net.md_5.bungee.protocol.packet.Handshake;
import net.md_5.bungee.protocol.packet.EncryptionResponse;
import net.md_5.bungee.protocol.packet.LoginRequest;
import net.md_5.bungee.protocol.packet.LoginSuccess;
public abstract class AbstractPacketHandler
{
/*========================================================================*/
// Handshake Start
public void handle(Packet0Handshake handshake) throws Exception
{
}
// Handshake End
/*========================================================================*/
// Game Start
public void handle(Packet0Handshake handshake) throws Exception
public void handle(Handshake handshake) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
public void handle(KeepAlive keepAlive) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
public void handle(Login login) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
public void handle(Chat chat) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
public void handle(Respawn respawn) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
public void handle(LoginRequest loginRequest) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
public void handle(ClientSettings settings) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
public void handle(ClientStatus clientStatus) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
public void handle(PlayerListItem playerListItem) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
public void handle(TabComplete tabComplete) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
public void handle(ScoreboardObjective scoreboardObjective) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
public void handle(ScoreboardScore scoreboardScore) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
public void handle(ScoreboardDisplay displayScoreboard) throws Exception
{
}
public void handle(Packet0Handshake handshake) throws Exception
{
}
// Game End
/*========================================================================*/
// Ping Start
// Ping End
/*========================================================================*/
// Login Start
public void handle(Packet0Kick kick) throws Exception
public void handle(Team team) throws Exception
{
}
public void handle(Packet1EncryptionResponse encryptionResponse) throws Exception
public void handle(PluginMessage pluginMessage) throws Exception
{
}
public void handle(Packet2LoginSuccess loginSuccess) throws Exception
public void handle(Kick kick) throws Exception
{
}
public void handle(EncryptionResponse encryptionResponse) throws Exception
{
}
public void handle(LoginSuccess loginSuccess) throws Exception
{
}
// Login End
/*========================================================================*/
}

View File

@@ -3,34 +3,104 @@ package net.md_5.bungee.protocol;
import gnu.trove.map.TObjectIntMap;
import gnu.trove.map.hash.TObjectIntHashMap;
import java.lang.reflect.Constructor;
import net.md_5.bungee.protocol.handshake.HandshakeProtocol;
import net.md_5.bungee.protocol.packet.Chat;
import net.md_5.bungee.protocol.packet.ClientSettings;
import net.md_5.bungee.protocol.packet.EncryptionResponse;
import net.md_5.bungee.protocol.packet.Handshake;
import net.md_5.bungee.protocol.packet.KeepAlive;
import net.md_5.bungee.protocol.packet.Kick;
import net.md_5.bungee.protocol.packet.Login;
import net.md_5.bungee.protocol.packet.LoginRequest;
import net.md_5.bungee.protocol.packet.LoginSuccess;
import net.md_5.bungee.protocol.packet.PlayerListItem;
import net.md_5.bungee.protocol.packet.PluginMessage;
import net.md_5.bungee.protocol.packet.Respawn;
import net.md_5.bungee.protocol.packet.ScoreboardDisplay;
import net.md_5.bungee.protocol.packet.ScoreboardObjective;
import net.md_5.bungee.protocol.packet.ScoreboardScore;
import net.md_5.bungee.protocol.packet.TabComplete;
import net.md_5.bungee.protocol.packet.Team;
public class Protocol
public enum Protocol
{
private static final int MAX_PACKET_ID = 0xFF;
private static final int MAX_PROTOCOLS = 0xF;
// Undef
SERVER_HANDSHAKE
{
{
registerPacket( 0x00, Handshake.class );
}
},
// 0
CLIENT_GAME
{
{
registerPacket( 0x00, KeepAlive.class );
registerPacket( 0x01, Login.class );
registerPacket( 0x02, Chat.class );
registerPacket( 0x07, Respawn.class );
registerPacket( 0x3B, PlayerListItem.class );
registerPacket( 0x3D, TabComplete.class );
registerPacket( 0x3E, ScoreboardObjective.class );
registerPacket( 0x3F, ScoreboardScore.class );
registerPacket( 0x40, ScoreboardDisplay.class );
registerPacket( 0x41, Team.class );
registerPacket( 0x42, PluginMessage.class );
registerPacket( 0x43, Kick.class );
}
},
// 0
SERVER_GAME
{
{
registerPacket( 0x00, KeepAlive.class );
registerPacket( 0x14, TabComplete.class );
registerPacket( 0x15, ClientSettings.class );
registerPacket( 0x17, PluginMessage.class );
}
},
// 1
CLIENT_STATUS
{
{
}
},
// 1
SERVER_STATUS
{
{
}
},
// 2
CLIENT_LOGIN
{
{
registerPacket( 0x00, Kick.class );
registerPacket( 0x01, EncryptionResponse.class );
registerPacket( 0x02, LoginSuccess.class );
}
},
// 2
SERVER_LOGIN
{
{
registerPacket( 0x00, LoginRequest.class );
}
};
/*========================================================================*/
private static final Protocol[] protocols = new Protocol[ MAX_PROTOCOLS ];
public static final int MAX_PACKET_ID = 0xFF;
/*========================================================================*/
private final TObjectIntMap<Class<? extends DefinedPacket>> packetMap = new TObjectIntHashMap<>( MAX_PACKET_ID );
private final Class<? extends DefinedPacket>[] packetClasses = new Class[ MAX_PACKET_ID ];
private final Constructor<? extends DefinedPacket>[] packetConstructors = new Constructor[ MAX_PACKET_ID ];
static
{
}
public Protocol(int protocolId)
{
}
public static Protocol getProtocol(int id)
{
return protocols[id];
}
public final DefinedPacket createPacket(int id)
{
if ( id > MAX_PACKET_ID )

View File

@@ -1,16 +0,0 @@
package net.md_5.bungee.protocol.game;
import lombok.Getter;
import net.md_5.bungee.protocol.Protocol;
public class GameProtocol extends Protocol
{
@Getter
private static final GameProtocol instance = new GameProtocol();
private GameProtocol()
{
super( 0 );
}
}

View File

@@ -1,17 +0,0 @@
package net.md_5.bungee.protocol.handshake;
import lombok.Getter;
import net.md_5.bungee.protocol.Protocol;
public class HandshakeProtocol extends Protocol
{
@Getter
private static final HandshakeProtocol instance = new HandshakeProtocol();
private HandshakeProtocol()
{
super( 0xF );
registerPacket( 0, Packet0Handshake.class );
}
}

View File

@@ -1,17 +0,0 @@
package net.md_5.bungee.protocol.login;
import net.md_5.bungee.protocol.ping.*;
import lombok.Getter;
import net.md_5.bungee.protocol.Protocol;
public class LoginProtocol extends Protocol
{
@Getter
private static final LoginProtocol instance = new LoginProtocol();
private LoginProtocol()
{
super( 2 );
}
}

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -12,7 +12,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet2Chat extends DefinedPacket
public class Chat extends DefinedPacket
{
private String message;

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -12,7 +12,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet15Settings extends DefinedPacket
public class ClientSettings extends DefinedPacket
{
private String locale;

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -12,7 +12,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet16ClientStatus extends DefinedPacket
public class ClientStatus extends DefinedPacket
{
private byte payload;

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.login;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -12,7 +12,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet1EncryptionResponse extends DefinedPacket
public class EncryptionResponse extends DefinedPacket
{
private byte[] sharedSecret;

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.handshake;
package net.md_5.bungee.protocol.packet;
import io.netty.buffer.ByteBuf;
import lombok.AllArgsConstructor;
@@ -12,7 +12,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet0Handshake extends DefinedPacket
public class Handshake extends DefinedPacket
{
private int protocolVersion;

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -12,7 +12,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet0KeepAlive extends DefinedPacket
public class KeepAlive extends DefinedPacket
{
private int randomId;

View File

@@ -1,18 +1,18 @@
package net.md_5.bungee.protocol.login;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import net.md_5.bungee.protocol.DefinedPacket;
import net.md_5.bungee.protocol.AbstractPacketHandler;
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet0Kick extends DefinedPacket
public class Kick extends DefinedPacket
{
private String message;

View File

@@ -1,20 +1,18 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
import net.md_5.bungee.protocol.AbstractPacketHandler;
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet1Login extends DefinedPacket
public class Login extends DefinedPacket
{
private int entityId;

View File

@@ -1,32 +1,36 @@
package net.md_5.bungee.protocol.game;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import net.md_5.bungee.protocol.AbstractPacketHandler;
import net.md_5.bungee.protocol.DefinedPacket;
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet43Kick extends DefinedPacket
public class LoginRequest extends DefinedPacket
{
private String message;
private String data;
@Override
public void read(ByteBuf buf)
{
message = readString( buf );
data = readString( buf );
}
@Override
public void write(ByteBuf buf)
{
writeString( message, buf );
writeString( data, buf );
}
@Override

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.login;
package net.md_5.bungee.protocol.packet;
import io.netty.buffer.ByteBuf;
import lombok.AllArgsConstructor;
@@ -12,7 +12,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet2LoginSuccess extends DefinedPacket
public class LoginSuccess extends DefinedPacket
{
private String data;

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -12,7 +12,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet3BPlayerListItem extends DefinedPacket
public class PlayerListItem extends DefinedPacket
{
private String username;

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -17,7 +17,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet42PluginMessage extends DefinedPacket
public class PluginMessage extends DefinedPacket
{
private String tag;

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -13,7 +13,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet7Respawn extends DefinedPacket
public class Respawn extends DefinedPacket
{
private int dimension;

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -12,7 +12,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet40DisplayScoreboard extends DefinedPacket
public class ScoreboardDisplay extends DefinedPacket
{
/**

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -12,7 +12,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet3EScoreboardObjective extends DefinedPacket
public class ScoreboardObjective extends DefinedPacket
{
private String name;

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -14,7 +14,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet3FScoreboardScore extends DefinedPacket
public class ScoreboardScore extends DefinedPacket
{
private String itemName;

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -12,13 +12,13 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet3DTabComplete extends DefinedPacket
public class TabComplete extends DefinedPacket
{
private String cursor;
private String[] commands;
public Packet3DTabComplete(String[] alternatives)
public TabComplete(String[] alternatives)
{
commands = alternatives;
}

View File

@@ -1,4 +1,4 @@
package net.md_5.bungee.protocol.game;
package net.md_5.bungee.protocol.packet;
import net.md_5.bungee.protocol.DefinedPacket;
import io.netty.buffer.ByteBuf;
@@ -12,7 +12,7 @@ import net.md_5.bungee.protocol.AbstractPacketHandler;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Packet41Team extends DefinedPacket
public class Team extends DefinedPacket
{
private String name;
@@ -32,7 +32,7 @@ public class Packet41Team extends DefinedPacket
*
* @param name
*/
public Packet41Team(String name)
public Team(String name)
{
this();
this.name = name;

View File

@@ -1,16 +0,0 @@
package net.md_5.bungee.protocol.ping;
import lombok.Getter;
import net.md_5.bungee.protocol.Protocol;
public class PingProtocol extends Protocol
{
@Getter
private static final PingProtocol instance = new PingProtocol();
private PingProtocol()
{
super( 1 );
}
}