refactor: simplify LoMinesPlugin (220→109 lines)

- Extract ComponentInitializer - component creation and initialization
- Extract RegistrationManager - commands, listeners, integrations
- Main class now delegates to specialized managers

Progress: 3/7 files >200 lines fixed
This commit is contained in:
loki5512344 2026-04-24 10:33:43 +02:00
parent 1e29889902
commit 41924ea97f
3 changed files with 168 additions and 147 deletions

View file

@ -0,0 +1,82 @@
package com.loki.lomines;
import com.loki.lomines.core.MineTicker;
import com.loki.lomines.core.Mines;
import com.loki.lomines.data.stats.StatsManager;
import com.loki.lomines.integration.IntegrationManager;
import com.loki.lomines.wand.GroupWandManager;
import dev.lolib.commands.CommandManager;
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.loLogger().info("Created mines directory");
}
}
Components initialize() {
Mines mines = new Mines(plugin);
GroupWandManager groupWandManager = new GroupWandManager();
StatsManager statsManager = new StatsManager(plugin);
CommandManager commandManager = new CommandManager(plugin);
IntegrationManager integrationManager = new IntegrationManager(plugin);
plugin.loLogger().info("Core components initialized");
return new Components(mines, groupWandManager, statsManager, commandManager, integrationManager);
}
void loadMines(Mines mines) {
try {
mines.loadAll();
plugin.loLogger().info("Loaded " + mines.getAll().size() + " mine(s)");
} catch (IOException e) {
plugin.loLogger().error("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.loLogger().info("Statistics system enabled");
} catch (IOException e) {
plugin.loLogger().warn("Failed to load statistics: " + e.getMessage());
}
}
}
record Components(
Mines mines,
GroupWandManager groupWandManager,
StatsManager statsManager,
CommandManager commandManager,
IntegrationManager integrationManager
) {}
}