package xyz.twovb.sgm; import dev.rollczi.litecommands.bukkit.LiteBukkitMessages; import dev.rollczi.litecommands.bukkit.LiteCommandsBukkit; import lombok.Getter; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.java.JavaPlugin; import xyz.twovb.sgm.commands.handlers.InvalidArgsHandler; import xyz.twovb.sgm.commands.handlers.NoPermissionsHandler; import xyz.twovb.sgm.commands.impl.LevelCommand; import xyz.twovb.sgm.commands.impl.SGMCommand; import xyz.twovb.toolbox.managers.ConfigManager; import xyz.twovb.toolbox.managers.DatabaseManager; import xyz.twovb.toolbox.managers.PlaceholderManager; import xyz.twovb.toolbox.utils.CustomLogger; import java.io.IOException; import java.sql.SQLException; import java.util.Objects; public final class SGM extends JavaPlugin { @Getter private static SGM instance; private FileConfiguration BuildInfo; @Getter private FileConfiguration Messages; @Getter private CustomLogger cLogger; private ConfigManager configManager; @Getter private DatabaseManager databaseManager; @Override public void onEnable() { instance = this; cLogger = new CustomLogger(this); configManager = new ConfigManager(this); Messages = configManager.loadConfig("messages.yml"); this.saveDefaultConfig(); BuildInfo = new YamlConfiguration(); try { BuildInfo.load(Objects.requireNonNull(this.getTextResource("build-info.yml"))); } catch (IOException | InvalidConfigurationException ignored) { } registerCommands(); registerPlaceholders(); connectToDatabase(); } private void connectToDatabase() { databaseManager = new DatabaseManager(); try { databaseManager.connect(DatabaseManager.DatabaseType.SQLITE, this, "sgm"); cLogger.log("Connected to database!"); } catch (SQLException | ClassNotFoundException e) { throw new RuntimeException(e); } } private void registerPlaceholders() { PlaceholderManager pm = new PlaceholderManager(); pm.registerPlaceholder("%commit.id%", BuildInfo.getString("commit.id")); pm.registerPlaceholder("%commit.branch%", BuildInfo.getString("commit.branch")); pm.registerPlaceholder("%commit.message%", BuildInfo.getString("commit.message")); pm.registerPlaceholder("%name%", this.getName()); } private void registerCommands() { LiteCommandsBukkit.builder().commands(new SGMCommand(), new LevelCommand()).invalidUsage(new InvalidArgsHandler()).missingPermission(new NoPermissionsHandler()).message(LiteBukkitMessages.PLAYER_NOT_FOUND, input -> Messages.getString("commands.invalid-player").replace("%player%", input)).message(LiteBukkitMessages.PLAYER_ONLY, input -> Messages.getString("commands.player-only")).build(); } @Override public void onDisable() { try { databaseManager.close(); } catch (SQLException e) { cLogger.error(e); } } }