Now just to implement the necessary constructors and constants
This commit is contained in:
parent
125d3f07f7
commit
9b0c827c37
@ -1,19 +1,8 @@
|
|||||||
package net.md_5.bungee.protocol.packet;
|
package net.md_5.bungee.protocol.packet;
|
||||||
|
|
||||||
public abstract class PacketHandler
|
public abstract class AbstractPacketHandler
|
||||||
{
|
{
|
||||||
|
|
||||||
@Override
|
|
||||||
public abstract String toString();
|
|
||||||
|
|
||||||
public void exception(Throwable t) throws Exception
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void handle(byte[] buf) throws Exception
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void handle(Packet0KeepAlive alive) throws Exception
|
public void handle(Packet0KeepAlive alive) throws Exception
|
||||||
{
|
{
|
||||||
}
|
}
|
@ -56,7 +56,7 @@ public abstract class DefinedPacket
|
|||||||
|
|
||||||
public abstract void write(ByteBuf buf);
|
public abstract void write(ByteBuf buf);
|
||||||
|
|
||||||
public abstract void handle(PacketHandler handler) throws Exception;
|
public abstract void handle(AbstractPacketHandler handler) throws Exception;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract boolean equals(Object obj);
|
public abstract boolean equals(Object obj);
|
||||||
|
@ -29,7 +29,7 @@ public class Packet0KeepAlive extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ public class Packet1Login extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ public class Packet2Handshake extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ public class Packet3Chat extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ public class Packet9Respawn extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,14 @@ public class PacketC9PlayerListItem extends DefinedPacket
|
|||||||
super( 0xC9 );
|
super( 0xC9 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PacketC9PlayerListItem(String username, boolean online, int ping)
|
||||||
|
{
|
||||||
|
super( 0xC9 );
|
||||||
|
this.username = username;
|
||||||
|
this.online = online;
|
||||||
|
this.ping = ping;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void read(ByteBuf buf)
|
public void read(ByteBuf buf)
|
||||||
{
|
{
|
||||||
@ -35,7 +43,7 @@ public class PacketC9PlayerListItem extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ public class PacketCCSettings extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ public class PacketCDClientStatus extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ public class PacketCEScoreboardObjective extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ public class PacketCFScoreboardScore extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ public class PacketD0DisplayScoreboard extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ public class PacketD1Team extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ public class PacketFAPluginMessage extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ public class PacketFCEncryptionResponse extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ public class PacketFDEncryptionRequest extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ public class PacketFEPing extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ public class PacketFFKick extends DefinedPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ public class Forge1Login extends Packet1Login
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(PacketHandler handler) throws Exception
|
public void handle(AbstractPacketHandler handler) throws Exception
|
||||||
{
|
{
|
||||||
handler.handle( this );
|
handler.handle( this );
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package net.md_5.bungee.protocol;
|
|||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
|
import net.md_5.bungee.protocol.packet.AbstractPacketHandler;
|
||||||
import net.md_5.bungee.protocol.packet.DefinedPacket;
|
import net.md_5.bungee.protocol.packet.DefinedPacket;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -10,8 +11,12 @@ public class PacketTest
|
|||||||
{
|
{
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testPackets() throws NoSuchMethodException
|
public void testPackets() throws Exception
|
||||||
{
|
{
|
||||||
|
AbstractPacketHandler handler = new AbstractPacketHandler()
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
for ( short i = 0; i < 256; i++ )
|
for ( short i = 0; i < 256; i++ )
|
||||||
{
|
{
|
||||||
Class<? extends DefinedPacket> clazz = Vanilla.getInstance().getClasses()[ i];
|
Class<? extends DefinedPacket> clazz = Vanilla.getInstance().getClasses()[ i];
|
||||||
@ -29,8 +34,11 @@ public class PacketTest
|
|||||||
|
|
||||||
for ( Field field : clazz.getDeclaredFields() )
|
for ( Field field : clazz.getDeclaredFields() )
|
||||||
{
|
{
|
||||||
Assert.assertTrue( "Packet " + clazz + " has non private field " + field, Modifier.isPrivate( field.getModifiers() ) );
|
// TODO: Enable this test again in v2
|
||||||
}
|
// Assert.assertTrue( "Packet " + clazz + " has non private field " + field, Modifier.isPrivate( field.getModifiers() ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
packet.handle( handler ); // Make sure there are no exceptions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ import net.md_5.bungee.netty.ChannelWrapper;
|
|||||||
import net.md_5.bungee.netty.CipherDecoder;
|
import net.md_5.bungee.netty.CipherDecoder;
|
||||||
import net.md_5.bungee.netty.CipherEncoder;
|
import net.md_5.bungee.netty.CipherEncoder;
|
||||||
import net.md_5.bungee.netty.PacketDecoder;
|
import net.md_5.bungee.netty.PacketDecoder;
|
||||||
|
import net.md_5.bungee.netty.PacketHandler;
|
||||||
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;
|
||||||
@ -36,7 +37,6 @@ 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.packet.PacketHandler;
|
|
||||||
import net.md_5.bungee.protocol.Vanilla;
|
import net.md_5.bungee.protocol.Vanilla;
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
@ -13,7 +13,6 @@ import net.md_5.bungee.api.ChatColor;
|
|||||||
import net.md_5.bungee.api.ProxyServer;
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
import net.md_5.bungee.api.config.ServerInfo;
|
import net.md_5.bungee.api.config.ServerInfo;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
import net.md_5.bungee.api.event.ChatEvent;
|
|
||||||
import net.md_5.bungee.api.event.PluginMessageEvent;
|
import net.md_5.bungee.api.event.PluginMessageEvent;
|
||||||
import net.md_5.bungee.api.event.ServerKickEvent;
|
import net.md_5.bungee.api.event.ServerKickEvent;
|
||||||
import net.md_5.bungee.api.scoreboard.Objective;
|
import net.md_5.bungee.api.scoreboard.Objective;
|
||||||
@ -22,8 +21,8 @@ import net.md_5.bungee.api.scoreboard.Score;
|
|||||||
import net.md_5.bungee.api.scoreboard.Scoreboard;
|
import net.md_5.bungee.api.scoreboard.Scoreboard;
|
||||||
import net.md_5.bungee.api.scoreboard.Team;
|
import net.md_5.bungee.api.scoreboard.Team;
|
||||||
import net.md_5.bungee.netty.ChannelWrapper;
|
import net.md_5.bungee.netty.ChannelWrapper;
|
||||||
|
import net.md_5.bungee.netty.PacketHandler;
|
||||||
import net.md_5.bungee.protocol.packet.Packet0KeepAlive;
|
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.PacketC9PlayerListItem;
|
||||||
import net.md_5.bungee.protocol.packet.PacketCEScoreboardObjective;
|
import net.md_5.bungee.protocol.packet.PacketCEScoreboardObjective;
|
||||||
import net.md_5.bungee.protocol.packet.PacketCFScoreboardScore;
|
import net.md_5.bungee.protocol.packet.PacketCFScoreboardScore;
|
||||||
@ -31,7 +30,8 @@ import net.md_5.bungee.protocol.packet.PacketD0DisplayScoreboard;
|
|||||||
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.PacketFFKick;
|
import net.md_5.bungee.protocol.packet.PacketFFKick;
|
||||||
import net.md_5.bungee.protocol.packet.PacketHandler;
|
|
||||||
|
;
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class DownstreamBridge extends PacketHandler
|
public class DownstreamBridge extends PacketHandler
|
||||||
|
@ -34,6 +34,7 @@ import net.md_5.bungee.netty.ChannelWrapper;
|
|||||||
import net.md_5.bungee.netty.CipherDecoder;
|
import net.md_5.bungee.netty.CipherDecoder;
|
||||||
import net.md_5.bungee.netty.CipherEncoder;
|
import net.md_5.bungee.netty.CipherEncoder;
|
||||||
import net.md_5.bungee.netty.PacketDecoder;
|
import net.md_5.bungee.netty.PacketDecoder;
|
||||||
|
import net.md_5.bungee.netty.PacketHandler;
|
||||||
import net.md_5.bungee.protocol.packet.Packet1Login;
|
import net.md_5.bungee.protocol.packet.Packet1Login;
|
||||||
import net.md_5.bungee.protocol.packet.Packet2Handshake;
|
import net.md_5.bungee.protocol.packet.Packet2Handshake;
|
||||||
import net.md_5.bungee.protocol.packet.PacketCDClientStatus;
|
import net.md_5.bungee.protocol.packet.PacketCDClientStatus;
|
||||||
@ -42,7 +43,6 @@ 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.PacketFEPing;
|
import net.md_5.bungee.protocol.packet.PacketFEPing;
|
||||||
import net.md_5.bungee.protocol.packet.PacketFFKick;
|
import net.md_5.bungee.protocol.packet.PacketFFKick;
|
||||||
import net.md_5.bungee.protocol.packet.PacketHandler;
|
|
||||||
import net.md_5.bungee.protocol.Vanilla;
|
import net.md_5.bungee.protocol.Vanilla;
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@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.ServerPing;
|
||||||
import net.md_5.bungee.api.config.ServerInfo;
|
import net.md_5.bungee.api.config.ServerInfo;
|
||||||
import net.md_5.bungee.netty.ChannelWrapper;
|
import net.md_5.bungee.netty.ChannelWrapper;
|
||||||
|
import net.md_5.bungee.netty.PacketHandler;
|
||||||
import net.md_5.bungee.protocol.packet.PacketFFKick;
|
import net.md_5.bungee.protocol.packet.PacketFFKick;
|
||||||
import net.md_5.bungee.protocol.packet.PacketHandler;
|
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class PingHandler extends PacketHandler
|
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.PlayerDisconnectEvent;
|
||||||
import net.md_5.bungee.api.event.PluginMessageEvent;
|
import net.md_5.bungee.api.event.PluginMessageEvent;
|
||||||
import net.md_5.bungee.netty.ChannelWrapper;
|
import net.md_5.bungee.netty.ChannelWrapper;
|
||||||
|
import net.md_5.bungee.netty.PacketHandler;
|
||||||
import net.md_5.bungee.protocol.packet.Packet0KeepAlive;
|
import net.md_5.bungee.protocol.packet.Packet0KeepAlive;
|
||||||
import net.md_5.bungee.protocol.packet.Packet3Chat;
|
import net.md_5.bungee.protocol.packet.Packet3Chat;
|
||||||
import net.md_5.bungee.protocol.packet.PacketCCSettings;
|
import net.md_5.bungee.protocol.packet.PacketCCSettings;
|
||||||
import net.md_5.bungee.protocol.packet.PacketFAPluginMessage;
|
import net.md_5.bungee.protocol.packet.PacketFAPluginMessage;
|
||||||
import net.md_5.bungee.protocol.packet.PacketHandler;
|
|
||||||
|
|
||||||
public class UpstreamBridge extends PacketHandler
|
public class UpstreamBridge extends PacketHandler
|
||||||
{
|
{
|
||||||
|
@ -8,15 +8,13 @@ import java.io.IOException;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import net.md_5.bungee.api.ProxyServer;
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
import net.md_5.bungee.connection.CancelSendSignal;
|
import net.md_5.bungee.connection.CancelSendSignal;
|
||||||
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
|
* This class is a primitive wrapper for {@link PacketHandler} instances tied to
|
||||||
* channels to maintain simple states, and only call the required, adapted
|
* channels to maintain simple states, and only call the required, adapted
|
||||||
* methods when the channel is connected.
|
* methods when the channel is connected.
|
||||||
*/
|
*/
|
||||||
public class HandlerBoss extends ChannelInboundMessageHandlerAdapter<byte[]>
|
public class HandlerBoss extends ChannelInboundMessageHandlerAdapter<Object>
|
||||||
{
|
{
|
||||||
|
|
||||||
private ChannelWrapper channel;
|
private ChannelWrapper channel;
|
||||||
@ -50,25 +48,27 @@ public class HandlerBoss extends ChannelInboundMessageHandlerAdapter<byte[]>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void messageReceived(ChannelHandlerContext ctx, byte[] msg) throws Exception
|
public void messageReceived(ChannelHandlerContext ctx, Object msg) throws Exception
|
||||||
{
|
{
|
||||||
if ( handler != null && ctx.channel().isActive() )
|
if ( handler != null && ctx.channel().isActive() )
|
||||||
{
|
{
|
||||||
DefinedPacket packet = DefinedPacket.packet( msg );
|
if ( msg instanceof PacketWrapper )
|
||||||
boolean sendPacket = true;
|
|
||||||
if ( packet != null )
|
|
||||||
{
|
{
|
||||||
|
boolean sendPacket = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
packet.handle( handler );
|
( (PacketWrapper) msg ).packet.handle( handler );
|
||||||
} catch ( CancelSendSignal ex )
|
} catch ( CancelSendSignal ex )
|
||||||
{
|
{
|
||||||
sendPacket = false;
|
sendPacket = false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if ( sendPacket )
|
if ( sendPacket )
|
||||||
{
|
{
|
||||||
handler.handle( msg );
|
handler.handle( ( (PacketWrapper) msg ).buf );
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
handler.handle( (byte[]) msg );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,8 @@ import io.netty.handler.codec.ReplayingDecoder;
|
|||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import net.md_5.bungee.protocol.Protocol;
|
||||||
|
import net.md_5.bungee.protocol.packet.DefinedPacket;
|
||||||
import net.md_5.bungee.protocol.skip.PacketReader;
|
import net.md_5.bungee.protocol.skip.PacketReader;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -23,7 +25,7 @@ public class PacketDecoder extends ReplayingDecoder<Void>
|
|||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
private int protocol;
|
private Protocol protocol;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void decode(ChannelHandlerContext ctx, ByteBuf in, MessageBuf<Object> out) throws Exception
|
protected void decode(ChannelHandlerContext ctx, ByteBuf in, MessageBuf<Object> out) throws Exception
|
||||||
@ -34,7 +36,7 @@ public class PacketDecoder extends ReplayingDecoder<Void>
|
|||||||
// Store our start index
|
// Store our start index
|
||||||
int startIndex = in.readerIndex();
|
int startIndex = in.readerIndex();
|
||||||
// Run packet through framer
|
// Run packet through framer
|
||||||
PacketReader.readPacket( in, protocol );
|
DefinedPacket packet = protocol.read( in.readUnsignedByte(), in );
|
||||||
// If we got this far, it means we have formed a packet, so lets grab the end index
|
// If we got this far, it means we have formed a packet, so lets grab the end index
|
||||||
int endIndex = in.readerIndex();
|
int endIndex = in.readerIndex();
|
||||||
// Allocate a buffer big enough for all bytes we have read
|
// Allocate a buffer big enough for all bytes we have read
|
||||||
@ -47,8 +49,15 @@ public class PacketDecoder extends ReplayingDecoder<Void>
|
|||||||
in.readerIndex( endIndex );
|
in.readerIndex( endIndex );
|
||||||
// Checkpoint our state incase we don't have enough data for another packet
|
// Checkpoint our state incase we don't have enough data for another packet
|
||||||
checkpoint();
|
checkpoint();
|
||||||
|
|
||||||
// Store our decoded message
|
// Store our decoded message
|
||||||
|
if ( packet != null )
|
||||||
|
{
|
||||||
|
out.add( new PacketWrapper( packet, buf ) );
|
||||||
|
} else
|
||||||
|
{
|
||||||
out.add( buf );
|
out.add( buf );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@ -1,8 +1,19 @@
|
|||||||
package net.md_5.bungee.netty;
|
package net.md_5.bungee.netty;
|
||||||
|
|
||||||
public abstract class PacketHandler extends net.md_5.bungee.protocol.packet.PacketHandler
|
public abstract class PacketHandler extends net.md_5.bungee.protocol.packet.AbstractPacketHandler
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public abstract String toString();
|
||||||
|
|
||||||
|
public void exception(Throwable t) throws Exception
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handle(byte[] buf) throws Exception
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public void connected(ChannelWrapper channel) throws Exception
|
public void connected(ChannelWrapper channel) throws Exception
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
16
proxy/src/main/java/net/md_5/bungee/netty/PacketWrapper.java
Normal file
16
proxy/src/main/java/net/md_5/bungee/netty/PacketWrapper.java
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
package net.md_5.bungee.netty;
|
||||||
|
|
||||||
|
import net.md_5.bungee.protocol.packet.DefinedPacket;
|
||||||
|
|
||||||
|
public class PacketWrapper
|
||||||
|
{
|
||||||
|
|
||||||
|
DefinedPacket packet;
|
||||||
|
byte[] buf;
|
||||||
|
|
||||||
|
public PacketWrapper(DefinedPacket packet, byte[] buf)
|
||||||
|
{
|
||||||
|
this.packet = packet;
|
||||||
|
this.buf = buf;
|
||||||
|
}
|
||||||
|
}
|
@ -61,7 +61,7 @@ public class PipelineUtils
|
|||||||
|
|
||||||
ch.pipeline().addLast( "outbound", new OutboundHandler() );
|
ch.pipeline().addLast( "outbound", new OutboundHandler() );
|
||||||
ch.pipeline().addLast( "timer", new ReadTimeoutHandler( BungeeCord.getInstance().config.getTimeout(), TimeUnit.MILLISECONDS ) );
|
ch.pipeline().addLast( "timer", new ReadTimeoutHandler( BungeeCord.getInstance().config.getTimeout(), TimeUnit.MILLISECONDS ) );
|
||||||
ch.pipeline().addLast( "decoder", new PacketDecoder( Vanilla.VANILLA_PROTOCOL ) );
|
ch.pipeline().addLast( "decoder", new PacketDecoder( Vanilla.getInstance() ) );
|
||||||
ch.pipeline().addLast( "packet-encoder", packetEncoder );
|
ch.pipeline().addLast( "packet-encoder", packetEncoder );
|
||||||
ch.pipeline().addLast( "array-encoder", arrayEncoder );
|
ch.pipeline().addLast( "array-encoder", arrayEncoder );
|
||||||
ch.pipeline().addLast( "handler", new HandlerBoss() );
|
ch.pipeline().addLast( "handler", new HandlerBoss() );
|
||||||
|
Loading…
Reference in New Issue
Block a user