LoMines/src/main/java/dev/loki/lomines/ComponentInitializer.java

81 lines
2.5 KiB
Java

package dev.loki.lomines;
import dev.loki.lomines.core.mine.service.MineTicker;
import dev.loki.lomines.core.mine.registry.Mines;
import dev.loki.lomines.data.stats.service.StatsManager;
import dev.loki.lomines.integration.IntegrationManager;
import dev.loki.lomines.wand.group.GroupWandManager;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
/**
* Initializes and manages plugin components.
*/
final class ComponentInitializer {
private final LoMinesPlugin plugin;
ComponentInitializer(LoMinesPlugin plugin) {
this.plugin = plugin;
}
void createDirectories() throws IOException {
Path dataFolder = plugin.getDataFolder().toPath();
Path minesFolder = dataFolder.resolve("mines");
if (!Files.exists(minesFolder)) {
Files.createDirectories(minesFolder);
plugin.getLogger().info("Created mines directory");
}
}
Components initialize() {
Mines mines = new Mines(plugin);
GroupWandManager groupWandManager = new GroupWandManager();
StatsManager statsManager = new StatsManager(plugin);
IntegrationManager integrationManager = new IntegrationManager(plugin);
plugin.getLogger().info("Core components initialized");
return new Components(mines, groupWandManager, statsManager, integrationManager);
}
void loadMines(Mines mines) {
try {
mines.loadAll();
plugin.getLogger().info("Loaded " + mines.getAll().size() + " mine(s)");
} catch (IOException e) {
plugin.getLogger().severe("Failed to load mines: " + e.getMessage());
e.printStackTrace();
}
}
MineTicker startTicker(Mines mines) {
MineTicker ticker = new MineTicker(mines, plugin);
ticker.start();
return ticker;
}
void startStatistics(StatsManager statsManager) {
if (plugin.getConfig().getBoolean("statistics-enabled", true)) {
try {
statsManager.load();
statsManager.startAutoSave();
plugin.getLogger().info("Statistics system enabled");
} catch (IOException e) {
plugin.getLogger().warning("Failed to load statistics: " + e.getMessage());
}
}
}
record Components(
Mines mines,
GroupWandManager groupWandManager,
StatsManager statsManager,
IntegrationManager integrationManager
) {
}
}