Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,147 @@
|
||||
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);
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user