HungerGames/src/main/java/com/alttd/hunger_games/Main.java

79 lines
2.9 KiB
Java

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() {
}
}