package org.arkham.cs;
import org.arkham.cs.commands.ColorCommand;
import org.arkham.cs.commands.CosmeticCommand;
import org.arkham.cs.commands.ItemCommand;
import org.arkham.cs.commands.PortalCommand;
import org.arkham.cs.cosmetics.Portal;
import org.arkham.cs.db.Authentication;
import org.arkham.cs.db.SQLQueryThread;
import org.arkham.cs.effects.EffectManager;
import org.arkham.cs.events.BleedListener;
import org.arkham.cs.events.BubbleListener;
import org.arkham.cs.events.CommandPreEvent;
import org.arkham.cs.events.FlyListener;
import org.arkham.cs.events.MoveListener;
import org.arkham.cs.gui.GUIManager;
import org.arkham.cs.handler.ChatColorManager;
import org.arkham.cs.handler.ParticleLibManager;
import org.arkham.cs.interfaces.Button;
import org.arkham.cs.utils.PlayerMetaDataUtil;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class CosmeticSuite extends JavaPlugin {
private static CosmeticSuite instance;
private GUIManager guiManager;
private EffectManager effectManager;
private CosmeticCommand cCommand;
private ChatColorManager cManager;
public static final String PREFIX = ChatColor.translateAlternateColorCodes('&', "&8[&e&lA&b&lC&8]&e ");
public void onEnable() {
instance = this;
getDataFolder().mkdirs();
configSQL();
guiManager = new GUIManager();
guiManager.loadPages();
effectManager = new EffectManager();
cCommand = new CosmeticCommand();
cManager = new ChatColorManager();
new BubbleListener();
new FlyListener();
new SQLQueryThread();
new MoveListener();
new ColorCommand(this);
new PortalCommand(this);
new BleedListener(this);
new CommandPreEvent(this);
new ParticleLibManager();
new ItemCommand(this);
GUIManager.setUp();
SQLQueryThread.addQuery("CREATE DATABASE IF NOT EXISTS " + Authentication.sqldb);
SQLQueryThread.addQuery("CREATE TABLE IF NOT EXISTS `purchases` (`player` varchar(64) PRIMARY KEY , `buttons` longtext)");
SQLQueryThread.addQuery("CREATE TABLE IF NOT EXISTS `colors` (`player` varchar(64) PRIMARY KEY , `code` varchar(2))");
SQLQueryThread.addQuery("CREATE TABLE IF NOT EXISTS `globalkits` (`player` varchar(64), `id` int, `time` long)");
getServer().getPluginManager().registerEvents(guiManager, instance);
// getLogger().info("Printing Permiossion nodes now: ");
StringBuilder builder = new StringBuilder();
for (Button button : Button.allButtons) {
builder.append(button.getPermission() + " \n");
}
getLogger().info("===========================");
getLogger().info("Writing permiission nodes now.");
// File file = new File(this.getDataFolder(), "perms.txt");
// if(!file.exists()){
// try {
// file.createNewFile();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// try {
// PrintWriter writer = new PrintWriter(file);
// writer.write(builder.toString());
// writer.close();
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// }
getLogger().info("Permission Nodes Wrtiten");
getLogger().info("===========================");
}
public CosmeticCommand getCommand() {
return cCommand;
}
public void onDisable(){
for(Player player : Bukkit.getOnlinePlayers()){
PlayerMetaDataUtil.removeFromInGUI(player);
PlayerMetaDataUtil.removeFromSwitching(player);
player.removeMetadata("created", CosmeticSuite.getInstance());
player.removeMetadata("created2", CosmeticSuite.getInstance());
}
for(Location loc : Portal.portals){
Block block = loc.getBlock();
if(block.hasMetadata("portal")){
block.setType(Material.AIR);
}
if(block.hasMetadata("portal-2")){
block.setType(Material.AIR);
}
}
}
public void configSQL() {
saveDefaultConfig();
Authentication.sqldb = getConfig().getString("sql.db", Authentication.sqldb);
Authentication.sqlhost = getConfig().getString("sql.host", Authentication.sqlhost);
Authentication.sqlpass = getConfig().getString("sql.pass", Authentication.sqlpass);
Authentication.sqlport = getConfig().getInt("sql.port", Authentication.sqlport);
Authentication.sqluser = getConfig().getString("sql.user", Authentication.sqluser);
System.out.println(Authentication.sqluser + " :: " + Authentication.sqldb + " :: " + Authentication.sqlhost + " :: " + Authentication.sqlpass + " :: " + Authentication.sqlport);
Authentication.sqlurl = "jdbc:mysql://" + Authentication.sqlhost + ":" + Authentication.sqlport + "/" + Authentication.sqldb;
}
public static CosmeticSuite getInstance() {
return instance;
}
public GUIManager getGuiManager() {
return guiManager;
}
public EffectManager getEffectManager() {
return effectManager;
}
public ChatColorManager getChatColorManager() {
return cManager;
}
}