81 lines
2.5 KiB
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
|
|
) {
|
|
}
|
|
}
|