CometSkyBlock/plugin/src/main/java/com/alttd/cometskyblock/CometSkyBlockPlugin.java
destro174 9cbcab4a82
Ore generators (#14)
* Add alias `ch` for challenge command

* Add base layer for Ore Generators.

* Fix default ore for generators
2024-03-04 12:44:43 +01:00

117 lines
4.4 KiB
Java

package com.alttd.cometskyblock;
import com.alttd.cometskyblock.challenges.ChallengeHandler;
import com.alttd.cometskyblock.challenges.ChallengeLoader;
import com.alttd.cometskyblock.commands.admin.SkyBlockCommand;
import com.alttd.cometskyblock.commands.challenges.ChallengeCommand;
import com.alttd.cometskyblock.commands.island.IslandCommand;
import com.alttd.cometskyblock.configuration.*;
import com.alttd.cometskyblock.gui.GUIListener;
import com.alttd.cometskyblock.island.IslandData;
import com.alttd.cometskyblock.island.oregenerator.GeneratorHandler;
import com.alttd.cometskyblock.island.oregenerator.GeneratorLoader;
import com.alttd.cometskyblock.listeners.BedListener;
import com.alttd.cometskyblock.listeners.CobbestoneGeneratorListener;
import com.alttd.cometskyblock.listeners.PlayerJoinListener;
import com.alttd.cometskyblock.listeners.PlayerListener;
import com.alttd.cometskyblock.managers.IslandManager;
import com.alttd.cometskyblock.worldgenerator.MasterWorldGenerator;
import lombok.Getter;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.slf4j.Logger;
import java.nio.file.Path;
public class CometSkyBlockPlugin extends JavaPlugin implements CometSkyBlockAPI {
@Getter private static CometSkyBlockPlugin instance;
@Getter private ConfigurationContainer<PluginConfiguration> pluginConfiguration;
@Getter private ConfigurationContainer<DatabaseConfiguration> databaseConfiguration;
@Getter private ConfigurationContainer<MessageConfiguration> messagesConfiguration;
@Getter private ConfigurationContainer<WorldBorderConfiguration> worldBorderConfiguration;
@Getter private IslandManager islandManager;
@Getter private MasterWorldGenerator worldGenerator;
@Getter private ChallengeHandler challengeHandler;
@Getter private ChallengeLoader challengeLoader;
@Getter private GeneratorLoader generatorLoader;
@Getter private GeneratorHandler generatorHandler;
@Override
public void onLoad() {
instance = this;
CometSkyBlockAPI.Provider.register(instance);
}
@Override
public void onEnable() {
// Load configurations
loadConfiguration();
// Load commands
loadCommands();
// Load event listeners
loadEventListeners();
// Reload island data for top list
IslandData.reloadAllIslandData();
// load data from storage
// run cleanup tasks
// CleanupAndDeleteOldIslands and playerdata
// load worlds & manager
islandManager = new IslandManager(this);
worldGenerator = new MasterWorldGenerator(this);
challengeHandler = new ChallengeHandler(this);
loadChallenges();
generatorHandler = new GeneratorHandler(this);
new GeneratorLoader(this).loadAllGenerators();
worldGenerator.checkMasterIslandWorld();
}
@Override
public void onDisable() {
// Cancel all running tasks
getServer().getScheduler().cancelTasks(this);
// close data connection
}
public void loadChallenges() {
challengeHandler.clearChallenges();
challengeLoader = new ChallengeLoader(this);
challengeLoader.loadAllChallenges();
}
public void loadConfiguration() {
Path path = this.getDataFolder().toPath();
Logger logger = this.getSLF4JLogger();
pluginConfiguration = ConfigurationContainer.load(logger, path, PluginConfiguration.class, "config");
databaseConfiguration = ConfigurationContainer.load(logger, path, DatabaseConfiguration.class, "database");
messagesConfiguration = ConfigurationContainer.load(logger, path, MessageConfiguration.class, "messages");
worldBorderConfiguration = ConfigurationContainer.load(logger, path, WorldBorderConfiguration.class, "worldborder");
}
public void loadCommands() {
getCommand("island").setExecutor(new IslandCommand(this));
getCommand("challenges").setExecutor(new ChallengeCommand(this));
getCommand("skyblock").setExecutor( new SkyBlockCommand(this));
}
public void loadEventListeners() {
final PluginManager pm = getServer().getPluginManager();
pm.registerEvents(new PlayerJoinListener(this), this);
pm.registerEvents(new BedListener(this), this);
pm.registerEvents(new CobbestoneGeneratorListener(this), this);
pm.registerEvents(new GUIListener(this), this);
pm.registerEvents(new PlayerListener(this), this);
}
}