SGM/src/main/java/xyz/twovb/sgm/SGM.java
2vb 5d0035282d
Some checks failed
Build plugin / build (push) Has been cancelled
a
2024-06-26 00:21:19 -07:00

88 lines
3.1 KiB
Java

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);
}
}
}