package tc.oc.commons.bungee;
import tc.oc.api.model.ModelListenerBinder;
import tc.oc.commons.bungee.commands.ServerCommands;
import tc.oc.commons.bungee.inject.BungeePluginManifest;
import tc.oc.commons.bungee.listeners.LoginListener;
import tc.oc.commons.bungee.listeners.MetricListener;
import tc.oc.commons.bungee.listeners.PingListener;
import tc.oc.bungee.analytics.BungeePlayerReporter;
import tc.oc.bungee.analytics.PlayerTimeoutReporter;
import tc.oc.commons.bungee.listeners.PlayerServerRouter;
import tc.oc.commons.bungee.listeners.TeleportListener;
import tc.oc.commons.bungee.restart.RestartListener;
import tc.oc.commons.bungee.servers.LobbyTracker;
import tc.oc.commons.bungee.servers.ServerTracker;
import tc.oc.commons.bungee.sessions.MojangSessionServiceCommands;
import tc.oc.commons.bungee.sessions.MojangSessionServiceMonitor;
import tc.oc.commons.core.CommonsCoreManifest;
import tc.oc.commons.core.inject.HybridManifest;
import tc.oc.commons.core.plugin.PluginFacetBinder;
public class CommonsBungeeManifest extends HybridManifest {
@Override
protected void configure() {
install(new CommonsCoreManifest());
install(new BungeePluginManifest());
bindAndExpose(ServerTracker.class);
bindAndExpose(LobbyTracker.class);
final ModelListenerBinder models = new ModelListenerBinder(publicBinder());
models.bindListener().to(ServerTracker.class);
models.bindListener().to(LobbyTracker.class);
final PluginFacetBinder facets = new PluginFacetBinder(binder());
facets.register(ServerTracker.class);
facets.register(LobbyTracker.class);
facets.register(LoginListener.class);
facets.register(MetricListener.class);
facets.register(MojangSessionServiceCommands.class);
facets.register(MojangSessionServiceMonitor.class);
facets.register(PingListener.class);
facets.register(RestartListener.class);
facets.register(ServerCommands.class);
facets.register(PlayerServerRouter.class);
facets.register(TeleportListener.class);
// DataDog
facets.register(BungeePlayerReporter.class);
facets.register(PlayerTimeoutReporter.class);
}
}