108 lines
3.9 KiB
Java
Executable File
108 lines
3.9 KiB
Java
Executable File
package net.krakatoa.proxy;
|
|
|
|
import earth.krakatao.KraSocketClient;
|
|
import earth.krakatao.KraSocketClientConfig;
|
|
import earth.krakatao.events.KraSocketClientEventInitiater;
|
|
import earth.krakatao.events.KraSocketClientEventInterface;
|
|
import earth.krakatao.protocol.KraSocketClientProtocol;
|
|
import earth.krakatoa.core.config.MongoConfig;
|
|
import earth.krakatoa.core.config.RedisConfig;
|
|
import earth.krakatoa.core.mongo.MongoManager;
|
|
import earth.krakatoa.core.redis.RedisManager;
|
|
import earth.krakatoa.core.util.Formatter;
|
|
import java.util.Arrays;
|
|
import lombok.Getter;
|
|
import lombok.SneakyThrows;
|
|
import net.krakatoa.proxy.command.CodeCommand;
|
|
import net.krakatoa.proxy.command.KrakatoapCommand;
|
|
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.md_5.bungee.api.plugin.Plugin;
|
|
import net.md_5.bungee.api.plugin.PluginManager;
|
|
|
|
@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 RedisManager redisManager;
|
|
|
|
@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();
|
|
|
|
this.mongoManager = new MongoManager(
|
|
new MongoConfig(this.configHandler.getMongodbHost(), this.configHandler.getMongodbPort(),
|
|
this.configHandler.getMongodbUsername(), this.configHandler.getMongodbPassword(),
|
|
this.configHandler.getMongodbDatabase()));
|
|
|
|
this.redisManager = new RedisManager(
|
|
new RedisConfig(this.configHandler.getRedisHost(), this.configHandler.getRedisPort()));
|
|
this.redisManager.connect();
|
|
|
|
loadListeners();
|
|
loadCommands();
|
|
}
|
|
|
|
@Override
|
|
public void onDisable() {
|
|
this.kraSocketClient.getSocketClient().getConnection().close();
|
|
this.kraSocketClient.getSocketClient().getConnection().closeConnection(1, "");
|
|
|
|
this.mongoManager.shutdown();
|
|
this.redisManager.shutdown();
|
|
|
|
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"),
|
|
new KrakatoapCommand("krakatoap"))
|
|
.forEach(listener -> {
|
|
pluginManager.registerCommand(this, listener);
|
|
});
|
|
}
|
|
}
|