Bridge: обновление протокола
This commit is contained in:
@@ -6,6 +6,7 @@ package asys.bridge.bukkit;
|
||||
|
||||
import asys.bridge.client.Client;
|
||||
import asys.mcsmanager.packets.CS_Ping;
|
||||
import asys.mcsmanager.packets.SC_SetSettings;
|
||||
import io.netty.channel.Channel;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.core.Logger;
|
||||
@@ -125,4 +126,11 @@ public class BridgePlugin extends JavaPlugin {
|
||||
public void setNeedReconnect(boolean needReconnect) {
|
||||
this.needReconnect = needReconnect;
|
||||
}
|
||||
|
||||
public void setSettings(SC_SetSettings packetSettings) {
|
||||
if (packetSettings.getOnlineMode() != null) {
|
||||
spigotServer.setOnlineMode(packetSettings.getOnlineMode());
|
||||
getLogger().info("Change settings: onlineMode");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,13 +26,15 @@ public class ClientPacketHandler extends ChannelInboundHandlerAdapter implements
|
||||
|
||||
private static final BiMap<Integer, Class<? extends Packet>> pingPackets = ImmutableBiMap.of(
|
||||
3, CS_Ping.class,
|
||||
4, CS_ConsoleMessage.class
|
||||
4, CS_ConsoleMessage.class,
|
||||
5, SC_SetSettings.class
|
||||
);
|
||||
|
||||
ClientPacketHandler() {
|
||||
if (handshakeHandlers == null) {
|
||||
handshakeHandlers = ImmutableMap.of(
|
||||
SC_HandshakeResult.class, this
|
||||
SC_HandshakeResult.class, this,
|
||||
SC_SetSettings.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_SetSettings) {
|
||||
handleSetSettings((SC_SetSettings) 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,8 @@ public class ClientPacketHandler extends ChannelInboundHandlerAdapter implements
|
||||
BridgePlugin.INSTANCE.startPing(context.channel());
|
||||
}
|
||||
}
|
||||
|
||||
private void handleSetSettings(SC_SetSettings packet) {
|
||||
BridgePlugin.INSTANCE.setSettings(packet);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user