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

100 lines
2.8 KiB
Java

package net.krakatoa.proxy;
import com.mongodb.async.client.MongoCollection;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;
import lombok.Getter;
import lombok.SneakyThrows;
import net.krakatoa.proxy.command.CodeCommand;
import net.krakatoa.proxy.config.ConfigHandler;
import net.krakatoa.proxy.listener.PlayerDisconnectListener;
import net.krakatoa.proxy.listener.PostLoginListener;
import net.krakatoa.proxy.mongo.MongoManager;
import net.krakatoa.proxy.protocol.KraProtocol;
import net.krakatoa.proxy.socket.SocketClient;
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 MongoManager mongoManager;
private SocketClient socketClient;
private KraProtocol kraProtocol;
private Formatter formatter;
private MongoCollection<Document> players;
@SneakyThrows
@Override
public void onEnable() {
instance = this;
configHandler = new ConfigHandler();
configHandler.load();
kraProtocol = new KraProtocol();
formatter = new Formatter();
System.out.println(
"mongo cfg " + configHandler.getMongodbHost() + " " + configHandler.getMongodbUsername());
mongoManager = new MongoManager(configHandler.getMongodbHost(),
configHandler.getMongodbPort(), configHandler.getMongodbUsername(),
configHandler.getMongodbPassword());
mongoManager.connect(configHandler.getMongodbDatabase());
try {
socketClient = new SocketClient(
new URI(configHandler.getWebSocketProtocol() + "://" + configHandler.getWebSocketHost()
+ ":" + configHandler.getWebSocketPort() + "/ws?t="
+ configHandler.getWebSocketAccessKey() + "&s=proxy-1"));
} catch (URISyntaxException e) {
e.printStackTrace();
}
socketClient.connect();
players = mongoManager.getMongoDatabase().getCollection("players");
loadListeners();
loadCommands();
}
@Override
public void onDisable() {
socketClient.getConnection().close();
socketClient.getConnection().closeConnection(1, "");
instance = null;
}
public void loadListeners() {
PluginManager pluginManager = getProxy().getPluginManager();
Arrays.asList(new PostLoginListener(), new PlayerDisconnectListener())
.forEach(listener -> {
pluginManager.registerListener(this, listener);
});
}
public void loadCommands() {
PluginManager pluginManager = getProxy().getPluginManager();
Arrays.asList(new CodeCommand("code")).forEach(listener -> {
pluginManager.registerCommand(this, listener);
});
}
/*
TODO: proxy ping & join only accessible for 1.17.1 clients
*/
}