148 lines
4.8 KiB
Java
148 lines
4.8 KiB
Java
package us.tss3.blockparty;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.world.WorldUnloadEvent;
|
|
import org.bukkit.plugin.java.JavaPlugin;
|
|
import us.tss3.blockparty.arena.Arena;
|
|
import us.tss3.blockparty.arena.ArenaManager;
|
|
import us.tss3.blockparty.command.BlockPartyCommand;
|
|
import us.tss3.blockparty.config.ConfigManager;
|
|
import us.tss3.blockparty.config.MessagesManager;
|
|
import us.tss3.blockparty.listener.GameplayRestrictionListener;
|
|
import us.tss3.blockparty.listener.PlayerConnectionListener;
|
|
import us.tss3.blockparty.persistence.StatsManager;
|
|
import us.tss3.blockparty.placeholder.BlockPartyExpansion;
|
|
import us.tss3.blockparty.reward.RewardManager;
|
|
import us.tss3.blockparty.scoreboard.ScoreboardManager;
|
|
import us.tss3.blockparty.session.SessionManager;
|
|
import us.tss3.blockparty.util.SoundUtil;
|
|
|
|
public class BlockPartyPlugin extends JavaPlugin implements Listener {
|
|
|
|
private ConfigManager configManager;
|
|
private MessagesManager messagesManager;
|
|
private ArenaManager arenaManager;
|
|
private SessionManager sessionManager;
|
|
private ScoreboardManager scoreboardManager;
|
|
private RewardManager rewardManager;
|
|
private StatsManager statsManager;
|
|
private SoundUtil soundUtil;
|
|
|
|
@Override
|
|
public void onEnable() {
|
|
saveDefaultConfig();
|
|
this.configManager = new ConfigManager(this);
|
|
configManager.load();
|
|
|
|
this.messagesManager = new MessagesManager(this);
|
|
messagesManager.load();
|
|
|
|
this.sessionManager = new SessionManager();
|
|
this.soundUtil = new SoundUtil(this);
|
|
this.rewardManager = new RewardManager(this);
|
|
this.statsManager = new StatsManager(this, configManager.getStorageSettings());
|
|
statsManager.init();
|
|
|
|
this.arenaManager = new ArenaManager(this);
|
|
arenaManager.loadAll();
|
|
|
|
this.scoreboardManager = new ScoreboardManager(this);
|
|
scoreboardManager.start();
|
|
|
|
getServer().getPluginManager().registerEvents(new PlayerConnectionListener(this), this);
|
|
getServer().getPluginManager().registerEvents(new GameplayRestrictionListener(this), this);
|
|
getServer().getPluginManager().registerEvents(this, this);
|
|
|
|
BlockPartyCommand commandHandler = new BlockPartyCommand(this);
|
|
var command = getCommand("blockparty");
|
|
if (command != null) {
|
|
command.setExecutor(commandHandler);
|
|
command.setTabCompleter(commandHandler);
|
|
}
|
|
|
|
registerPlaceholderApi();
|
|
|
|
getLogger().info("BlockParty enabled.");
|
|
}
|
|
|
|
@Override
|
|
public void onDisable() {
|
|
if (arenaManager != null) {
|
|
arenaManager.shutdownAll();
|
|
}
|
|
if (scoreboardManager != null) {
|
|
scoreboardManager.stop();
|
|
}
|
|
if (statsManager != null) {
|
|
statsManager.shutdown();
|
|
}
|
|
getLogger().info("BlockParty disabled.");
|
|
}
|
|
|
|
/** Reloads config.yml, messages.yml and arena definitions. Arenas mid-match are skipped (see ArenaManager#reloadSafely). */
|
|
public void reloadEverything() {
|
|
configManager.load();
|
|
messagesManager.load();
|
|
arenaManager.reloadSafely();
|
|
}
|
|
|
|
private void registerPlaceholderApi() {
|
|
if (!configManager.isPlaceholderApiEnabled()) {
|
|
return;
|
|
}
|
|
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") == null) {
|
|
return;
|
|
}
|
|
try {
|
|
new BlockPartyExpansion(this).register();
|
|
getLogger().info("Hooked into PlaceholderAPI.");
|
|
} catch (Throwable t) {
|
|
getLogger().warning("Failed to register PlaceholderAPI expansion: " + t.getMessage());
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onWorldUnload(WorldUnloadEvent event) {
|
|
for (Arena arena : arenaManager.all()) {
|
|
if (arena.getConfig().getWorldName() != null && arena.getConfig().getWorldName().equals(event.getWorld().getName())) {
|
|
getLogger().warning("World '" + event.getWorld().getName() + "' unloaded - disabling arena '" + arena.getConfig().getName() + "'.");
|
|
arena.disable();
|
|
}
|
|
}
|
|
}
|
|
|
|
public ConfigManager getConfigManager() {
|
|
return configManager;
|
|
}
|
|
|
|
public MessagesManager getMessages() {
|
|
return messagesManager;
|
|
}
|
|
|
|
public ArenaManager getArenaManager() {
|
|
return arenaManager;
|
|
}
|
|
|
|
public SessionManager getSessionManager() {
|
|
return sessionManager;
|
|
}
|
|
|
|
public ScoreboardManager getScoreboardManager() {
|
|
return scoreboardManager;
|
|
}
|
|
|
|
public RewardManager getRewardManager() {
|
|
return rewardManager;
|
|
}
|
|
|
|
public StatsManager getStatsManager() {
|
|
return statsManager;
|
|
}
|
|
|
|
public SoundUtil getSoundUtil() {
|
|
return soundUtil;
|
|
}
|
|
}
|