Trying to do some hacky things!

This commit is contained in:
Shaun Bennett 2014-12-12 04:18:47 -06:00
parent b65ca5f7dd
commit 56bc8dc232
5 changed files with 41 additions and 15 deletions

View File

@ -18,8 +18,8 @@ import net.md_5.bungee.api.ServerPing;
import net.md_5.bungee.api.event.ProxyPingEvent;
import net.md_5.bungee.connection.CustomMotd;
import net.md_5.bungee.connection.InitialHandler;
import net.md_5.bungee.protocol.packet.PingPacket;
import net.md_5.bungee.protocol.packet.StatusResponse;
import org.apache.commons.io.comparator.NameFileComparator;
public class Motd implements CustomMotd
{
@ -64,12 +64,22 @@ public class Motd implements CustomMotd
initialHandler.unsafe().sendPacket(new StatusResponse(gson.toJson(ping)));
_ticks++;
if (_ticks > MAX_TICKS)
{
PingPacket packet = initialHandler.getPingPacket();
if (packet != null)
{
initialHandler.unsafe().sendPacket(packet);
initialHandler.setPingPacket(null);
}
}
}
else
{
_task.cancel(true);
if (initialHandler.getChannelWrapper().getHandle().isOpen())
initialHandler.getChannelWrapper().getHandle().close();
_task.cancel(true);
}
}
}, 0, 200, TimeUnit.MILLISECONDS);

View File

@ -1,17 +1,13 @@
package mineplex.bungee.motd;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import net.md_5.bungee.api.event.PreLoginEvent;
import net.md_5.bungee.api.event.ProxyPingEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.connection.CustomMotd;
import net.md_5.bungee.connection.CustomMotdFactory;
import net.md_5.bungee.connection.InitialHandler;
import net.md_5.bungee.event.EventHandler;
public class MotdManager implements Listener, Runnable, CustomMotdFactory
{

View File

@ -1,6 +1,7 @@
package net.md_5.bungee.connection;
import net.md_5.bungee.api.event.ProxyPingEvent;
import net.md_5.bungee.protocol.packet.PingPacket;
public interface CustomMotd
{

View File

@ -12,7 +12,6 @@ import java.beans.ConstructorProperties;
import java.math.BigInteger;
import java.net.InetSocketAddress;
import java.net.URLEncoder;
import java.nio.channels.Channel;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.List;
@ -41,15 +40,12 @@ import net.md_5.bungee.api.config.ListenerInfo;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.PendingConnection;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.connection.Connection.Unsafe;
import net.md_5.bungee.api.event.LoginEvent;
import net.md_5.bungee.api.event.PlayerHandshakeEvent;
import net.md_5.bungee.api.event.PostLoginEvent;
import net.md_5.bungee.api.event.PreLoginEvent;
import net.md_5.bungee.api.event.ProxyPingEvent;
import net.md_5.bungee.chat.ComponentSerializer;
import net.md_5.bungee.connection.LoginResult;
import net.md_5.bungee.connection.UpstreamBridge;
import net.md_5.bungee.http.HttpClient;
import net.md_5.bungee.netty.ChannelWrapper;
import net.md_5.bungee.netty.HandlerBoss;
@ -74,6 +70,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection {
private static CustomMotdFactory _customMotdFactory;
private PingPacket _pingPacket;
private final ProxyServer bungee;
private ChannelWrapper ch;
private final ListenerInfo listener;
@ -180,11 +177,22 @@ public class InitialHandler extends PacketHandler implements PendingConnection {
this.thisState = InitialHandler.State.PING;
}
public void handle(PingPacket ping) throws Exception {
if (thisState == State.PING) return; // MINEPLEX
Preconditions.checkState(this.thisState == InitialHandler.State.PING, "Not expecting PING");
this.unsafe.sendPacket(ping);
this.disconnect((String)"");
public void handle(final PingPacket ping) throws Exception {
_pingPacket = ping;
// if (thisState == State.PING) return; // MINEPLEX
// Preconditions.checkState(this.thisState == InitialHandler.State.PING, "Not expecting PING");
// getChannelWrapper().getHandle().eventLoop().schedule(new Runnable()
// {
// @Override
// public void run()
// {
// unsafe.sendPacket(ping);
// }
// }, 6, TimeUnit.SECONDS);
//
// this.unsafe.sendPacket(ping);
// this.disconnect((String)"");
}
public void handle(Handshake handshake) throws Exception {
@ -450,6 +458,16 @@ public class InitialHandler extends PacketHandler implements PendingConnection {
return ch; //MINEPLEX
}
public PingPacket getPingPacket()
{
return _pingPacket; // MINEPLEX
}
public void setPingPacket(PingPacket packet)
{
_pingPacket = packet;
}
private static enum State {
HANDSHAKE,
STATUS,

View File

@ -43,6 +43,7 @@ public class PingHandler extends PacketHandler {
public void handle(StatusResponse statusResponse) throws Exception {
Gson gson = this.protocol == 4?BungeeCord.getInstance().gsonLegacy:BungeeCord.getInstance().gson;
this.callback.done(gson.fromJson(statusResponse.getResponse(), ServerPing.class), (Throwable)null);
System.out.println("handle");
// this.channel.close(); //MINEPLEX
}