ProxySystem/src/main/java/net/krakatoa/proxy/ProxySystem.java

101 lines
3.5 KiB
Java

package net.krakatoa.proxy;
import com.mongodb.async.client.MongoCollection;
import earth.krakatao.KraSocketClient;
import earth.krakatao.KraSocketClientConfig;
import earth.krakatao.events.KraSocketClientEventInitiater;
import earth.krakatao.events.KraSocketClientEventInterface;
import earth.krakatao.protocol.KraSocketClientProtocol;
import java.util.Arrays;
import lombok.Getter;
import lombok.SneakyThrows;
import net.krakatoa.proxy.command.CodeCommand;
import net.krakatoa.proxy.command.SendTestMessageCommand;
import net.krakatoa.proxy.config.ConfigHandler;
import net.krakatoa.proxy.listener.LoginListener;
import net.krakatoa.proxy.listener.PlayerDisconnectListener;
import net.krakatoa.proxy.listener.PostLoginListener;
import net.krakatoa.proxy.listener.SocketClientMessageListener;
import net.krakatoa.proxy.mongo.MongoManager;
import net.krakatoa.proxy.util.Formatter;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.api.plugin.PluginManager;
import org.bson.Document;
@Getter
public class ProxySystem extends Plugin {
@Getter
private static ProxySystem instance;
private ConfigHandler configHandler;
private Formatter formatter;
private KraSocketClientProtocol kraSocketClientProtocol;
private KraSocketClient kraSocketClient;
private KraSocketClientEventInitiater kraSocketClientEventInitiater;
private KraSocketClientEventInterface kraSocketClientEventInterface;
private MongoManager mongoManager;
private MongoCollection<Document> players;
@SneakyThrows
@Override
public void onEnable() {
instance = this;
this.configHandler = new ConfigHandler();
this.configHandler.load();
this.formatter = new Formatter();
this.kraSocketClientProtocol = new KraSocketClientProtocol();
KraSocketClientConfig kraSocketClientConfig = new KraSocketClientConfig(
this.configHandler.getWebSocketProtocol(), this.configHandler.getWebSocketHost(),
this.configHandler.getWebSocketPort(), this.configHandler.getWebSocketAccessKey(),
"proxy-1", this.configHandler.getWebSocketAckTimeouts());
this.kraSocketClientEventInitiater = new KraSocketClientEventInitiater();
this.kraSocketClientEventInterface = new SocketClientMessageListener();
this.kraSocketClient = new KraSocketClient(kraSocketClientConfig,
this.kraSocketClientEventInterface, this.kraSocketClientProtocol);
this.kraSocketClient.getSocketClient().connect();
mongoManager = new MongoManager(configHandler.getMongodbHost(),
configHandler.getMongodbPort(), configHandler.getMongodbUsername(),
configHandler.getMongodbPassword());
mongoManager.connect(configHandler.getMongodbDatabase());
players = mongoManager.getMongoDatabase().getCollection("players");
loadListeners();
loadCommands();
}
@Override
public void onDisable() {
this.kraSocketClient.getSocketClient().getConnection().close();
this.kraSocketClient.getSocketClient().getConnection().closeConnection(1, "");
instance = null;
}
public void loadListeners() {
PluginManager pluginManager = getProxy().getPluginManager();
Arrays.asList(new PostLoginListener(), new PlayerDisconnectListener(), new LoginListener())
.forEach(listener -> {
pluginManager.registerListener(this, listener);
});
}
public void loadCommands() {
PluginManager pluginManager = getProxy().getPluginManager();
Arrays.asList(new CodeCommand("code"), new SendTestMessageCommand("sendTestMessage"))
.forEach(listener -> {
pluginManager.registerCommand(this, listener);
});
}
}