403 lines
13 KiB
Java
403 lines
13 KiB
Java
package com.songoda.epicbosses;
|
|
|
|
import com.songoda.core.SongodaCore;
|
|
import com.songoda.core.SongodaPlugin;
|
|
import com.songoda.core.commands.CommandManager;
|
|
import com.songoda.core.compatibility.CompatibleMaterial;
|
|
import com.songoda.core.configuration.Config;
|
|
import com.songoda.core.hooks.EconomyManager;
|
|
import com.songoda.core.hooks.WorldGuardHook;
|
|
import com.songoda.epicbosses.api.BossAPI;
|
|
import com.songoda.epicbosses.commands.*;
|
|
import com.songoda.epicbosses.container.BossEntityContainer;
|
|
import com.songoda.epicbosses.container.MinionEntityContainer;
|
|
import com.songoda.epicbosses.file.DisplayFileHandler;
|
|
import com.songoda.epicbosses.file.EditorFileHandler;
|
|
import com.songoda.epicbosses.file.LangFileHandler;
|
|
import com.songoda.epicbosses.managers.*;
|
|
import com.songoda.epicbosses.managers.files.*;
|
|
import com.songoda.epicbosses.settings.Settings;
|
|
import com.songoda.epicbosses.utils.Debug;
|
|
import com.songoda.epicbosses.utils.IReloadable;
|
|
import com.songoda.epicbosses.utils.Message;
|
|
import com.songoda.epicbosses.utils.ServerUtils;
|
|
import com.songoda.epicbosses.utils.file.YmlFileHandler;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.World;
|
|
import org.bukkit.configuration.file.FileConfiguration;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* @author AMinecraftDev
|
|
* @version 1.0.0
|
|
* @since 06-Sep-17
|
|
*/
|
|
public class EpicBosses extends SongodaPlugin implements IReloadable {
|
|
|
|
private static EpicBosses INSTANCE;
|
|
|
|
private MessagesFileManager bossMessagesFileManager;
|
|
private CommandsFileManager bossCommandFileManager;
|
|
private AutoSpawnFileManager autoSpawnFileManager;
|
|
private DropTableFileManager dropTableFileManager;
|
|
private MinionsFileManager minionsFileManager;
|
|
private BossesFileManager bossesFileManager;
|
|
private SkillsFileManager skillsFileManager;
|
|
private ItemsFileManager itemStackManager;
|
|
|
|
private BossDropTableManager bossDropTableManager;
|
|
private BossEntityContainer bossEntityContainer;
|
|
private BossMechanicManager bossMechanicManager;
|
|
private BossLocationManager bossLocationManager;
|
|
private BossListenerManager bossListenerManager;
|
|
private BossEntityManager bossEntityManager;
|
|
private BossTargetManager bossTargetManager;
|
|
private BossPanelManager bossPanelManager;
|
|
private BossSkillManager bossSkillManager;
|
|
private BossTauntManager bossTauntManager;
|
|
private BossHookManager bossHookManager;
|
|
|
|
private AutoSpawnManager autoSpawnManager;
|
|
|
|
private MinionMechanicManager minionMechanicManager;
|
|
private MinionEntityContainer minionEntityContainer;
|
|
|
|
private CommandManager commandManager;
|
|
|
|
private DebugManager debugManager = new DebugManager();
|
|
|
|
private YmlFileHandler langFileHandler, editorFileHandler, displayFileHandler;
|
|
private FileConfiguration lang, editor, display;
|
|
|
|
private boolean debug = true;
|
|
|
|
public static EpicBosses getInstance() {
|
|
return INSTANCE;
|
|
}
|
|
|
|
@Override
|
|
public void onPluginLoad() {
|
|
INSTANCE = this;
|
|
|
|
// Register WorldGuard
|
|
WorldGuardHook.addHook("boss-spawn-region", true);
|
|
WorldGuardHook.addHook("boss-blocked-region", false);
|
|
}
|
|
|
|
@Override
|
|
public void onPluginDisable() {
|
|
this.autoSpawnManager.stopIntervalSystems();
|
|
}
|
|
|
|
@Override
|
|
public void onPluginEnable() {
|
|
// Run Songoda Updater
|
|
SongodaCore.registerPlugin(this, 19, CompatibleMaterial.ZOMBIE_SPAWN_EGG);
|
|
|
|
// Load Economy
|
|
EconomyManager.load();
|
|
|
|
// Setup Config
|
|
Settings.setupConfig();
|
|
|
|
// Set economy preference
|
|
EconomyManager.getManager().setPreferredHook(Settings.ECONOMY_PLUGIN.getString());
|
|
|
|
if (!this.getDataFolder().exists())
|
|
this.getDataFolder().mkdir();
|
|
|
|
Debug.setPlugin(this);
|
|
|
|
long beginMs = System.currentTimeMillis();
|
|
|
|
new BossAPI(this);
|
|
new ServerUtils(this);
|
|
|
|
this.bossSkillManager = new BossSkillManager(this);
|
|
this.bossHookManager = new BossHookManager(this);
|
|
this.bossTauntManager = new BossTauntManager(this);
|
|
this.bossTargetManager = new BossTargetManager(this);
|
|
this.bossEntityContainer = new BossEntityContainer();
|
|
this.minionEntityContainer = new MinionEntityContainer();
|
|
this.bossMechanicManager = new BossMechanicManager(this);
|
|
this.minionMechanicManager = new MinionMechanicManager(this);
|
|
this.bossLocationManager = new BossLocationManager(this);
|
|
|
|
loadFileManagersAndHandlers();
|
|
|
|
//Managers that rely on Files
|
|
this.bossDropTableManager = new BossDropTableManager(this);
|
|
this.bossPanelManager = new BossPanelManager(this);
|
|
this.bossEntityManager = new BossEntityManager(this);
|
|
|
|
this.autoSpawnManager = new AutoSpawnManager(this);
|
|
|
|
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI"))
|
|
new PlaceholderManager(this).register();
|
|
|
|
createFiles();
|
|
reloadFiles();
|
|
|
|
this.debug = getConfig().getBoolean("Settings.debug", false);
|
|
|
|
this.itemStackManager.reload();
|
|
this.bossesFileManager.reload();
|
|
this.minionsFileManager.reload();
|
|
this.skillsFileManager.reload();
|
|
this.bossCommandFileManager.reload();
|
|
this.bossMessagesFileManager.reload();
|
|
this.dropTableFileManager.reload();
|
|
this.autoSpawnFileManager.reload();
|
|
|
|
// Register commands
|
|
this.commandManager = new CommandManager(this);
|
|
this.commandManager.addMainCommand("boss")
|
|
.addSubCommands(
|
|
new CommandCreate(bossEntityContainer),
|
|
new CommandDebug(debugManager),
|
|
new CommandDropTable(bossPanelManager),
|
|
new CommandEdit(bossPanelManager, bossEntityContainer),
|
|
new CommandGiveEgg(bossesFileManager, bossEntityManager),
|
|
new CommandInfo(bossesFileManager, bossEntityManager),
|
|
new CommandItems(bossPanelManager),
|
|
new CommandKillAll(bossEntityManager),
|
|
new CommandList(bossPanelManager),
|
|
new CommandMenu(bossPanelManager),
|
|
new CommandNearby(this),
|
|
new CommandNewSkill(skillsFileManager, bossSkillManager),
|
|
new CommandNewAutoSpawn(autoSpawnFileManager),
|
|
new CommandNewCommand(bossCommandFileManager),
|
|
new CommandNewMessage(bossCommandFileManager, bossMessagesFileManager),
|
|
new CommandNewDropTable(dropTableFileManager, bossDropTableManager),
|
|
new CommandReload(this, bossEntityManager),
|
|
new CommandShop(this),
|
|
new CommandSkills(bossPanelManager),
|
|
new CommandSpawn(bossesFileManager),
|
|
new CommandTime(this)
|
|
);
|
|
|
|
this.bossListenerManager = new BossListenerManager(this);
|
|
|
|
this.bossPanelManager.load();
|
|
|
|
//RELOAD/LOAD ALL MANAGERS
|
|
this.bossSkillManager.load();
|
|
this.bossHookManager.reload();
|
|
this.bossLocationManager.reload();
|
|
this.bossMechanicManager.load();
|
|
this.minionMechanicManager.load();
|
|
|
|
saveMessagesToFile();
|
|
|
|
this.bossListenerManager.load();
|
|
|
|
this.autoSpawnManager.startIntervalSystems();
|
|
|
|
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
|
|
System.out.println("hiiiit");
|
|
new PlaceholderManager(this).register();
|
|
}
|
|
|
|
ServerUtils.get().logDebug("Loaded all fields and managers, saved messages and plugin is initialized and ready to go. (took " + (System.currentTimeMillis() - beginMs) + "ms).");
|
|
}
|
|
|
|
@Override
|
|
public List<Config> getExtraConfig() {
|
|
return new ArrayList<>();
|
|
}
|
|
|
|
@Override
|
|
public void onConfigReload() {
|
|
this.itemStackManager.reload();
|
|
this.bossesFileManager.reload();
|
|
this.minionsFileManager.reload();
|
|
this.skillsFileManager.reload();
|
|
this.bossCommandFileManager.reload();
|
|
this.bossMessagesFileManager.reload();
|
|
this.dropTableFileManager.reload();
|
|
this.autoSpawnFileManager.reload();
|
|
|
|
this.bossMechanicManager.load();
|
|
|
|
reloadFiles();
|
|
|
|
this.bossPanelManager.reload();
|
|
this.bossHookManager.reload();
|
|
this.bossLocationManager.reload();
|
|
this.debug = getConfig().getBoolean("Settings.debug", false);
|
|
|
|
Message.setFile(getLang());
|
|
}
|
|
|
|
private void loadFileManagersAndHandlers() {
|
|
this.itemStackManager = new ItemsFileManager(this);
|
|
this.bossesFileManager = new BossesFileManager(this);
|
|
this.minionsFileManager = new MinionsFileManager(this);
|
|
this.bossCommandFileManager = new CommandsFileManager(this);
|
|
this.bossMessagesFileManager = new MessagesFileManager(this);
|
|
this.dropTableFileManager = new DropTableFileManager(this);
|
|
this.skillsFileManager = new SkillsFileManager(this);
|
|
this.autoSpawnFileManager = new AutoSpawnFileManager(this);
|
|
|
|
this.langFileHandler = new LangFileHandler(this);
|
|
this.editorFileHandler = new EditorFileHandler(this);
|
|
this.displayFileHandler = new DisplayFileHandler(this);
|
|
}
|
|
|
|
private void reloadFiles() {
|
|
this.lang = this.langFileHandler.loadFile();
|
|
this.editor = this.editorFileHandler.loadFile();
|
|
this.display = this.displayFileHandler.loadFile();
|
|
}
|
|
|
|
private void createFiles() {
|
|
this.editorFileHandler.createFile();
|
|
this.langFileHandler.createFile();
|
|
this.displayFileHandler.createFile();
|
|
}
|
|
|
|
private void saveMessagesToFile() {
|
|
FileConfiguration lang = getLang();
|
|
|
|
for (Message message : Message.values()) {
|
|
if (!lang.contains(message.getPath())) {
|
|
lang.set(message.getPath(), message.getDefault());
|
|
}
|
|
}
|
|
|
|
this.langFileHandler.saveFile(lang);
|
|
Message.setFile(lang);
|
|
}
|
|
|
|
public MessagesFileManager getBossMessagesFileManager() {
|
|
return this.bossMessagesFileManager;
|
|
}
|
|
|
|
public CommandsFileManager getBossCommandFileManager() {
|
|
return this.bossCommandFileManager;
|
|
}
|
|
|
|
public AutoSpawnFileManager getAutoSpawnFileManager() {
|
|
return this.autoSpawnFileManager;
|
|
}
|
|
|
|
public DropTableFileManager getDropTableFileManager() {
|
|
return this.dropTableFileManager;
|
|
}
|
|
|
|
public MinionsFileManager getMinionsFileManager() {
|
|
return this.minionsFileManager;
|
|
}
|
|
|
|
public BossesFileManager getBossesFileManager() {
|
|
return this.bossesFileManager;
|
|
}
|
|
|
|
public SkillsFileManager getSkillsFileManager() {
|
|
return this.skillsFileManager;
|
|
}
|
|
|
|
public ItemsFileManager getItemStackManager() {
|
|
return this.itemStackManager;
|
|
}
|
|
|
|
public BossDropTableManager getBossDropTableManager() {
|
|
return this.bossDropTableManager;
|
|
}
|
|
|
|
public BossEntityContainer getBossEntityContainer() {
|
|
return this.bossEntityContainer;
|
|
}
|
|
|
|
public BossMechanicManager getBossMechanicManager() {
|
|
return this.bossMechanicManager;
|
|
}
|
|
|
|
public BossLocationManager getBossLocationManager() {
|
|
return this.bossLocationManager;
|
|
}
|
|
|
|
public BossListenerManager getBossListenerManager() {
|
|
return this.bossListenerManager;
|
|
}
|
|
|
|
public BossEntityManager getBossEntityManager() {
|
|
return this.bossEntityManager;
|
|
}
|
|
|
|
public BossTargetManager getBossTargetManager() {
|
|
return this.bossTargetManager;
|
|
}
|
|
|
|
public BossPanelManager getBossPanelManager() {
|
|
return this.bossPanelManager;
|
|
}
|
|
|
|
public BossSkillManager getBossSkillManager() {
|
|
return this.bossSkillManager;
|
|
}
|
|
|
|
public BossTauntManager getBossTauntManager() {
|
|
return this.bossTauntManager;
|
|
}
|
|
|
|
public BossHookManager getBossHookManager() {
|
|
return this.bossHookManager;
|
|
}
|
|
|
|
public AutoSpawnManager getAutoSpawnManager() {
|
|
return this.autoSpawnManager;
|
|
}
|
|
|
|
public MinionMechanicManager getMinionMechanicManager() {
|
|
return this.minionMechanicManager;
|
|
}
|
|
|
|
public MinionEntityContainer getMinionEntityContainer() {
|
|
return this.minionEntityContainer;
|
|
}
|
|
|
|
public CommandManager getCommandManager() {
|
|
return commandManager;
|
|
}
|
|
|
|
public DebugManager getDebugManager() {
|
|
return this.debugManager;
|
|
}
|
|
|
|
public YmlFileHandler getLangFileHandler() {
|
|
return this.langFileHandler;
|
|
}
|
|
|
|
public YmlFileHandler getEditorFileHandler() {
|
|
return this.editorFileHandler;
|
|
}
|
|
|
|
public YmlFileHandler getDisplayFileHandler() {
|
|
return this.displayFileHandler;
|
|
}
|
|
|
|
public FileConfiguration getLang() {
|
|
return this.lang;
|
|
}
|
|
|
|
public FileConfiguration getEditor() {
|
|
return this.editor;
|
|
}
|
|
|
|
public FileConfiguration getDisplay() {
|
|
return this.display;
|
|
}
|
|
|
|
public boolean isDebug() {
|
|
return this.debug;
|
|
}
|
|
|
|
@Override
|
|
public void reload() {
|
|
reloadConfig();
|
|
}
|
|
}
|