package tech.sbdevelopment.v10lift; import lombok.Getter; import org.bstats.bukkit.Metrics; import org.bstats.charts.SingleLineChart; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; import tech.sbdevelopment.v10lift.commands.V10LiftCommand; import tech.sbdevelopment.v10lift.commands.V10LiftTabCompleter; import tech.sbdevelopment.v10lift.listeners.BlockBreakListener; import tech.sbdevelopment.v10lift.listeners.EntityDamageListener; import tech.sbdevelopment.v10lift.listeners.PlayerInteractListener; import tech.sbdevelopment.v10lift.listeners.SignChangeListener; import tech.sbdevelopment.v10lift.managers.DBManager; import tech.sbdevelopment.v10lift.managers.DataManager; import tech.sbdevelopment.v10lift.managers.VaultManager; import tech.sbdevelopment.v10lift.sbutils.ConfigUpdater; import tech.sbdevelopment.v10lift.sbutils.UpdateManager; import tech.sbdevelopment.v10lift.sbutils.YamlFile; import java.io.IOException; import java.sql.SQLException; import java.util.Collections; public class V10LiftPlugin extends JavaPlugin { @Getter private static V10LiftPlugin instance; private static YamlFile config; private static DBManager dbManager; @Getter private static YamlFile messages; private static boolean vault = false; @Override public void onEnable() { instance = this; //Load the config config = new YamlFile("config"); config.loadDefaults(); //And update config try { ConfigUpdater.update(this, "config.yml", config.getJavaFile(), Collections.emptyList()); } catch (IOException e) { Bukkit.getLogger().warning("[V10Lift] Couldn't update the config.yml. Please check the stacktrace below."); e.printStackTrace(); } //Load the messages messages = new YamlFile("messages"); messages.loadDefaults(); //Load the database dbManager = new DBManager("data"); try { dbManager.load(); } catch (SQLException e) { Bukkit.getLogger().warning("[V10Lift] Couldn't connect to the SQLite database. Please check the stacktrace below."); e.printStackTrace(); } //Load vault if found if (VaultManager.setupPermissions()) { Bukkit.getLogger().info("[V10Lift] Loading Vault hook for group whitelist support."); vault = true; } //Load the command getCommand("v10lift").setExecutor(new V10LiftCommand()); getCommand("v10lift").setTabCompleter(new V10LiftTabCompleter()); //Register the listeners Bukkit.getPluginManager().registerEvents(new PlayerInteractListener(), this); Bukkit.getPluginManager().registerEvents(new BlockBreakListener(), this); Bukkit.getPluginManager().registerEvents(new SignChangeListener(), this); Bukkit.getPluginManager().registerEvents(new EntityDamageListener(), this); //Load metrics Bukkit.getLogger().info("[V10Lift] Loading metrics. Can be disabled in the global bStats config."); Metrics metrics = new Metrics(this, 6564); metrics.addCustomChart(new SingleLineChart("lifts", () -> DataManager.getLifts().size())); //Load the update checker if (getSConfig().getFile().getBoolean("UpdateChecker.Enabled")) { UpdateManager updateManager = new UpdateManager(this, 72317); updateManager.handleResponse((versionResponse, version) -> { switch (versionResponse) { case FOUND_NEW: Bukkit.getLogger().warning("[V10Lift] There is a new version available! Current: " + this.getDescription().getVersion() + " New: " + version.get()); if (getSConfig().getFile().getBoolean("UpdateChecker.DownloadOnUpdate")) { Bukkit.getLogger().info("[V10Lift] Trying to download the update. This could take some time..."); updateManager.handleDownloadResponse((downloadResponse, fileName) -> { switch (downloadResponse) { case DONE: Bukkit.getLogger().info("[V10Lift] Update downloaded! If you restart your server, it will be loaded. Filename: " + fileName); break; case ERROR: Bukkit.getLogger().severe("[V10Lift] Something went wrong when trying downloading the latest version."); break; case UNAVAILABLE: Bukkit.getLogger().warning("[V10Lift] Unable to download the latest version."); break; } }).runUpdate(); } break; case LATEST: Bukkit.getLogger().info("[V10Lift] You are running the latest version [" + this.getDescription().getVersion() + "]!"); break; case THIS_NEWER: Bukkit.getLogger().info("[V10Lift] You are running a newer version [" + this.getDescription().getVersion() + "]! This is probably fine."); break; case UNAVAILABLE: Bukkit.getLogger().severe("[V10Lift] Unable to perform an update check."); break; } }).check(); } Bukkit.getLogger().info("[V10Lift] Plugin loaded successfully!"); } @Override public void onDisable() { dbManager.save(); dbManager.closeConnection(); instance = null; } public static YamlFile getSConfig() { return config; } public static DBManager getDBManager() { return dbManager; } public static boolean isVaultEnabled() { return vault; } }