|
9 | 9 | import com.velocitypowered.api.plugin.Plugin;
|
10 | 10 | import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
11 | 11 | import com.velocitypowered.api.proxy.ProxyServer;
|
| 12 | +import it.renvins.serverpulse.api.ServerPulseProvider; |
| 13 | +import it.renvins.serverpulse.api.metrics.IDiskRetriever; |
| 14 | +import it.renvins.serverpulse.api.metrics.IPingRetriever; |
12 | 15 | import it.renvins.serverpulse.api.service.IDatabaseService;
|
13 | 16 | import it.renvins.serverpulse.api.service.IMetricsService;
|
14 | 17 | import it.renvins.serverpulse.common.DatabaseService;
|
15 | 18 | import it.renvins.serverpulse.common.MetricsService;
|
16 | 19 | import it.renvins.serverpulse.common.config.DatabaseConfiguration;
|
| 20 | +import it.renvins.serverpulse.common.config.MetricsConfiguration; |
| 21 | +import it.renvins.serverpulse.common.logger.PulseLogger; |
| 22 | +import it.renvins.serverpulse.common.metrics.DiskRetriever; |
| 23 | +import it.renvins.serverpulse.common.platform.Platform; |
| 24 | +import it.renvins.serverpulse.common.scheduler.TaskScheduler; |
| 25 | +import it.renvins.serverpulse.velocity.config.VelocityConfiguration; |
| 26 | +import it.renvins.serverpulse.velocity.config.VelocityDatabaseConfiguration; |
| 27 | +import it.renvins.serverpulse.velocity.config.VelocityMetricsConfiguration; |
| 28 | +import it.renvins.serverpulse.velocity.logger.VelocityLogger; |
| 29 | +import it.renvins.serverpulse.velocity.metrics.VelocityPingRetriever; |
| 30 | +import it.renvins.serverpulse.velocity.platform.VelocityPlatform; |
| 31 | +import it.renvins.serverpulse.velocity.scheduler.VelocityTaskScheduler; |
17 | 32 | import lombok.Getter;
|
18 | 33 | import org.slf4j.Logger;
|
19 | 34 |
|
|
22 | 37 | public class ServerPulseVelocity {
|
23 | 38 |
|
24 | 39 | @Getter private final ProxyServer server;
|
25 |
| - private final Logger logger; |
26 | 40 | private final Path dataDirectory;
|
| 41 | + private final PulseLogger logger; |
| 42 | + |
| 43 | + private final VelocityConfiguration config; |
| 44 | + |
| 45 | + private final IDiskRetriever diskRetriever; |
| 46 | + private final IPingRetriever pingRetriever; |
27 | 47 |
|
28 | 48 | private IDatabaseService databaseService;
|
29 | 49 | private IMetricsService metricsService;
|
30 | 50 |
|
31 | 51 | @Inject
|
32 |
| - public ServerPulseVelocity(ProxyServer server, Logger logger, @DataDirectory Path dataDirectory) { |
| 52 | + public ServerPulseVelocity(ProxyServer server, @DataDirectory Path dataDirectory, Logger logger) { |
33 | 53 | this.server = server;
|
34 |
| - this.logger = logger; |
35 | 54 | this.dataDirectory = dataDirectory;
|
| 55 | + |
| 56 | + this.logger = new VelocityLogger(logger); |
| 57 | + this.config = new VelocityConfiguration(logger, dataDirectory, "config.yml"); |
| 58 | + |
| 59 | + this.diskRetriever = new DiskRetriever(dataDirectory.toFile()); |
| 60 | + this.pingRetriever = new VelocityPingRetriever(this); |
36 | 61 | }
|
37 | 62 |
|
38 | 63 | @Subscribe
|
39 | 64 | public void onProxyInitialization() {
|
40 |
| - this.databaseService = new DatabaseService(); |
41 |
| - this.metricsService = new MetricsService(); |
42 |
| - } |
| 65 | + logger.info("Loading configuration file..."); |
| 66 | + config.load(); |
| 67 | + |
| 68 | + if(!config.getConfig().getBoolean("metrics.enabled")) { |
| 69 | + logger.error("Shutting down the plugin because metrics are disabled!"); |
| 70 | + server.shutdown(); |
| 71 | + |
| 72 | + return; |
| 73 | + } |
| 74 | + databaseService.load(); |
| 75 | + if (server.isShuttingDown()) { |
| 76 | + return; |
| 77 | + } |
| 78 | + |
| 79 | + DatabaseConfiguration dbConfig = new VelocityDatabaseConfiguration(config); |
| 80 | + MetricsConfiguration metricsConfig = new VelocityMetricsConfiguration(config); |
| 81 | + |
| 82 | + Platform platform = new VelocityPlatform(this); |
| 83 | + TaskScheduler scheduler = new VelocityTaskScheduler(this); |
| 84 | + |
| 85 | + this.databaseService = new DatabaseService(logger, platform, dbConfig, scheduler); |
| 86 | + this.metricsService = new MetricsService(logger, platform, metricsConfig, scheduler); |
43 | 87 |
|
44 |
| - private void loadConfig() { |
| 88 | + metricsService.load(); |
| 89 | + ServerPulseProvider.register(new ServerPulseVelocityAPI(databaseService, metricsService, diskRetriever, pingRetriever)); |
45 | 90 | }
|
46 | 91 | }
|
0 commit comments