Bridge: отправка ping-пакетов на Zond
This commit is contained in:
@@ -18,6 +18,11 @@ public class BridgePlugin extends JavaPlugin {
|
||||
this.bridgeBukkit.startReconnect();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
this.bridgeBukkit.startPing();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
this.bridgeBukkit.setNeedReconnect(false);
|
||||
|
||||
@@ -20,7 +20,7 @@ public abstract class AbstractBridge implements IBridge {
|
||||
connectTicker = new TaskTicker().setStepTimeMs(5000L);
|
||||
connectTicker.setTask(() -> {
|
||||
getLogger().info(String.format("Connect(%d) to Zond...", ++tryConnect));
|
||||
client.connect(getConfig().getString("host"), getConfig().getInt("port"));
|
||||
client.connect("127.0.0.1", getConfig().getInt("port"));
|
||||
if (client.isConnected()) {
|
||||
stopReconnect();
|
||||
} else {
|
||||
@@ -48,24 +48,13 @@ public abstract class AbstractBridge implements IBridge {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startPing(Channel channel) {
|
||||
public void startPing() {
|
||||
pingTicker = new TaskTicker().setStepTimeMs(5000L);
|
||||
pingTicker.setTask(() -> {
|
||||
channel.write(new CS_Ping(
|
||||
client.sendPacket(new CS_Ping(
|
||||
System.currentTimeMillis(),
|
||||
20.0D, //FIXME fake tps
|
||||
getCountOnlinePlayers()
|
||||
));
|
||||
if (channel.isWritable()) {
|
||||
channel.flush();
|
||||
} else {
|
||||
getLogger().warn("Lost connection!");
|
||||
channel.close();
|
||||
stopPing();
|
||||
|
||||
getLogger().warn("Try reconnect...");
|
||||
startReconnect();
|
||||
}
|
||||
getCountOnlinePlayers()));
|
||||
}).start();
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
package asys.bridge.client;
|
||||
|
||||
import asys.mcsmanager.packets.Packet;
|
||||
import asys.mcsmanager.packets.codec.PacketDecoder;
|
||||
import asys.mcsmanager.packets.codec.PacketEncoder;
|
||||
import asys.mcsmanager.packets.codec.PacketHandler;
|
||||
@@ -65,4 +66,10 @@ public class Client {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public void sendPacket(Packet packet) {
|
||||
if (isConnected()) {
|
||||
channelFuture.channel().writeAndFlush(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,6 @@
|
||||
*/
|
||||
package asys.bridge.client;
|
||||
|
||||
import io.netty.channel.Channel;
|
||||
|
||||
public interface IBridge {
|
||||
ILogger getLogger();
|
||||
IConfig getConfig();
|
||||
@@ -15,7 +13,7 @@ public interface IBridge {
|
||||
boolean isNeedReconnect();
|
||||
void setNeedReconnect(boolean value);
|
||||
void stopReconnect();
|
||||
void startPing(Channel channel);
|
||||
void startPing();
|
||||
void stopPing();
|
||||
void disconnect();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user