100 lines
2.8 KiB
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
|
|
|
|
*/
|
|
|
|
}
|