package com.alttd.hunger_games; import com.alttd.hunger_games.commands.BaseCommand; import com.alttd.hunger_games.config.Config; import com.alttd.hunger_games.config.LootItems; import com.alttd.hunger_games.config.Messages; import com.alttd.hunger_games.event_listeners.*; import com.alttd.hunger_games.services.*; import lombok.extern.slf4j.Slf4j; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @Slf4j public final class Main extends JavaPlugin { private Round round; private RoundService roundService; private PlayerService playerService; private PlayerTeleporterService playerTeleporterService; private LootService lootService; private StatService statService; private BossBarService bossBarService; private TabListService tabListService; @Override public void onEnable() { log.info("Starting HungerGames"); reloadConfigs(); registerServices(); registerCommands(); registerEvents(); registerSchedulers(); } private void registerServices() { round = Round.createSingletonInstance(); lootService = new LootService(); statService = new StatService(this, round); playerTeleporterService = PlayerTeleporterService.createSingletonInstance(); roundService = RoundService.createSingletonInstance(round, this, lootService, statService, playerTeleporterService); tabListService = new TabListService(round, roundService); roundService.setTabListService(tabListService); playerService = PlayerService.createSingletonInstance(round, roundService, playerTeleporterService); bossBarService = BossBarService.createSingletonInstance(round, roundService); round.setBossBarService(bossBarService); roundService.setBossBarService(bossBarService); } @Override public void onDisable() { log.info("Disabling HungerGames"); } private void registerCommands() { BaseCommand command = new BaseCommand(this, roundService, playerService, round, statService, tabListService); } private void registerEvents() { PluginManager pluginManager = getServer().getPluginManager(); pluginManager.registerEvents(new PlayerDisconnectListener(playerService), this); pluginManager.registerEvents(new PlayerJoinListener(playerService, tabListService), this); pluginManager.registerEvents(new PlayerDamageListener(roundService, playerService, statService), this); pluginManager.registerEvents(new ChestListener(roundService, lootService), this); pluginManager.registerEvents(new ItemSpawnListener(roundService), this); pluginManager.registerEvents(new CommandListener(), this); } public void reloadConfigs() { Config.reload(); Messages.reload(); LootItems.reload(); } private void registerSchedulers() { } }