From 97fb820dd363c80ef0e8c7218800f609b738d3f5 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 5 Jun 2017 12:54:44 +0300 Subject: [PATCH] =?UTF-8?q?Bridge:=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B0=D0=BD?= =?UTF-8?q?=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bridge/build.gradle | 2 +- .../bridge/client/ClientPacketHandler.java | 27 +++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/bridge/build.gradle b/bridge/build.gradle index cd42b01..9c830d9 100644 --- a/bridge/build.gradle +++ b/bridge/build.gradle @@ -1,5 +1,5 @@ group = 'asys' -version = '0.5.3-SNAPSHOT' +version = '0.6-SNAPSHOT' repositories { maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' } diff --git a/bridge/src/main/java/asys/bridge/client/ClientPacketHandler.java b/bridge/src/main/java/asys/bridge/client/ClientPacketHandler.java index 6f34d33..0360d8e 100644 --- a/bridge/src/main/java/asys/bridge/client/ClientPacketHandler.java +++ b/bridge/src/main/java/asys/bridge/client/ClientPacketHandler.java @@ -26,13 +26,15 @@ public class ClientPacketHandler extends ChannelInboundHandlerAdapter implements private static final BiMap> pingPackets = ImmutableBiMap.of( 3, CS_Ping.class, - 4, CS_ConsoleMessage.class + 4, CS_ConsoleMessage.class, + 5, SC_Command.class ); ClientPacketHandler() { if (handshakeHandlers == null) { handshakeHandlers = ImmutableMap.of( - SC_HandshakeResult.class, this + SC_HandshakeResult.class, this, + SC_Command.class, this ); } } @@ -68,10 +70,17 @@ public class ClientPacketHandler extends ChannelInboundHandlerAdapter implements @Override public void handle(Packet packet, ChannelHandlerContext context) { BridgePlugin.INSTANCE.getLogger().info("handle : " + packet.getClass().getSimpleName()); - SC_HandshakeResult pkt = (SC_HandshakeResult) packet; - if (pkt.getErrorCode() != 0) { + if (packet instanceof SC_HandshakeResult) { + handleHandshakeResult((SC_HandshakeResult) packet, context); + } else if (packet instanceof SC_Command) { + handleCommand((SC_Command) packet); + } + } + + private void handleHandshakeResult(SC_HandshakeResult packet, ChannelHandlerContext context) { + if (packet.getErrorCode() != 0) { BridgePlugin.INSTANCE.getLogger().severe( - String.format("Handshake: #%d %s", pkt.getErrorCode(), pkt.getMessage())); + String.format("Handshake: #%d %s", packet.getErrorCode(), packet.getMessage())); BridgePlugin.INSTANCE.setNeedReconnect(false); } else { context.channel().attr(KNOWN_PACKETS).set(pingPackets); @@ -79,4 +88,12 @@ public class ClientPacketHandler extends ChannelInboundHandlerAdapter implements BridgePlugin.INSTANCE.startPing(context.channel()); } } + + private void handleCommand(SC_Command packet) { + BridgePlugin.INSTANCE.getLogger().info("Command: " + packet.getCommand()); + BridgePlugin.INSTANCE.getServer().dispatchCommand( + BridgePlugin.INSTANCE.getServer().getConsoleSender(), + packet.getCommand() + ); + } }