package tc.oc.commons.bungee.listeners;
import java.net.InetSocketAddress;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.md_5.bungee.api.event.PostLoginEvent;
import net.md_5.bungee.api.event.ProxyPingEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;
import tc.oc.api.servers.ServerService;
import tc.oc.api.servers.BungeeMetricRequest;
import tc.oc.commons.core.plugin.PluginFacet;
@Singleton
public class MetricListener implements Listener, PluginFacet {
private final ServerService serverService;
@Inject MetricListener(ServerService serverService) {
this.serverService = serverService;
}
@EventHandler
public void ping(final ProxyPingEvent event) {
doBungeMetric(event.getConnection().getAddress(), BungeeMetricRequest.Type.PING);
}
@EventHandler
public void join(final PostLoginEvent event) {
doBungeMetric(event.getPlayer().getAddress(), BungeeMetricRequest.Type.LOGIN);
}
private void doBungeMetric(InetSocketAddress address, BungeeMetricRequest.Type type) {
serverService.doBungeeMetric(new BungeeMetricRequest(address.getAddress().getHostAddress(), type));
}
}