// Path: bukkit/src/main/java/com/radiofreederp/nodebbintegration/NodeBBIntegrationBukkit.java
// public class NodeBBIntegrationBukkit extends JavaPlugin implements NodeBBIntegrationPlugin {
// 
//     private PluginLogger logger;
// 
//     private MinecraftServerCommon minecraftServer = new BukkitServer(this);
//     @Override
//     public MinecraftServerCommon getMinecraftServer() {
//         return minecraftServer;
//     }
// 
//     @Override
//     public void log(String message, Level level) {
//         logger.log(level, message);
//     }
// 
//     @Override
//     public void runTaskAsynchronously(Runnable task) {
//         Bukkit.getScheduler().runTaskAsynchronously(this, task);
//     }
// 
//     @Override
//     public void runTaskTimerAsynchronously(Runnable task, int delay, int interval) {
//         Bukkit.getScheduler().runTaskTimerAsynchronously(this, task, delay, interval);
//     }
// 
//     @Override
//     public void runTask(Runnable task) {
//         Bukkit.getScheduler().runTask(this, task);
//     }
// 
// 	@Override
// 	public void runTaskTimer(Runnable task, int delay, int interval) {
// 		Bukkit.getScheduler().runTaskTimer(this, task, delay, interval);
// 	}
// 
//     @Override
//     public void initTaskTick() {
//         new TaskStatus(this);
//         new TaskPing(this);
//     }
// 
//     @Override
//     public void eventWebChat(Object... args) {
//         // Interpret message.
//         if (args[0] != null)
//         {
//             try
//             {
//                 final String name = ((JSONObject)args[0]).getString("name");
//                 final String message = ((JSONObject)args[0]).getString("message");
//                 Bukkit.broadcastMessage("[" + ChatColor.GOLD + "WEB" + ChatColor.RESET + "] <" + name + "> " + message);
//             }
//             catch (JSONException e)
//             {
//                 e.printStackTrace();
//             }
//         }
//     }
// 
//     @Override
//     public void eventGetPlayerVotes(Object... req) {
//         Logger.log("Got eventGetPlayerVotes");
// 
//         // Interpret message.
//         // TODO: Should be an error object.
//         if (req[0] == null) return;
// 
//         Logger.log("Compiling votes...");
//         //JSONObject res = getPluginConfig().getPlayerVotes((JSONObject)req[0]);
// 
//         Logger.log("Sending votes...");
//         //SocketIOClient.emit("PlayerVotes", res, cb -> {});
//     }
// 
//     @Override
//     public void onEnable() {
//         // Set static instance.
//         NBBPlugin.instance = this;
// 
//         // Start logger.
//         logger = new PluginLogger(this);
//         Logger.init(this);
// 
//         // Loads config and updates if necessary.
// 		new PluginConfigBukkit();
// 
//         // Start the socket client.
//         SocketIOClient.create(this);
// 
//         // Monitor the TPS.
//         initTaskTick();
// 
//         // Initialize NBBPlugin Hooks
//         VaultHook.hook(this);
//         OnTimeHook.hook(this);
//         VotifierHook.hook(this);
//         VanishNoPacketHook.hook(this);
// 
//         // Register listeners.
//         getServer().getPluginManager().registerEvents(new ListenerPlayerJoin(this), this);
//         getServer().getPluginManager().registerEvents(new ListenerPlayerQuit(this), this);
//         getServer().getPluginManager().registerEvents(new ListenerPlayerChat(this), this);
//         getServer().getPluginManager().registerEvents(new ListenerServerListPing(this), this);
//         getServer().getPluginManager().registerEvents(new ListenerWorldSave(this), this);
// 
//         // Register commands.
//         this.getCommand("nodebb").setExecutor(new CommandNodeBBBukkit());
//         this.getCommand("register").setExecutor(new CommandLinkBukkit()); // TODO
//         this.getCommand("link").setExecutor(new CommandLinkBukkit());
// 
//         // Sync Players
//         new BukkitRunnable(){
//             @Override
//             public void run() {
//                 SocketIOClient.emit(ESocketEvent.RANKS_WITH_MEMBERS, minecraftServer.getGroupsWithMembers(), args -> Logger.log("Received " + ESocketEvent.RANKS_WITH_MEMBERS + " callback."));
//             }
//         }.runTaskLater(this, 100);
// 
//         // Turn off debug messages after setup.
//         PluginConfigBukkit.setDebug(false);
//     }
// 
//     @Override
//     public void onDisable() {
//         try {
//             // Try to close the connection gracefully.
//             SocketIOClient.close();
//         } catch (Exception e) {
//             // Any error doesn't matter.
//         }
//     }
// }
// 
// Path: common/src/main/java/com/radiofreederp/nodebbintegration/NodeBBIntegrationPlugin.java
// public interface NodeBBIntegrationPlugin {
//     // TODO: This can be static.
//     MinecraftServerCommon getMinecraftServer();
// 
//     void log(String message, Level level);
// 
//     void runTaskAsynchronously(Runnable task);
//     void runTaskTimerAsynchronously(Runnable task, int delay, int interval);
//     void runTask(Runnable task);
//     void runTaskTimer(Runnable task, int delay, int interval);
// 
//     void initTaskTick();
// 
//     // TODO
//     void eventWebChat(Object... args);
//     void eventGetPlayerVotes(Object... args);
// }


import com.radiofreederp.nodebbintegration.NodeBBIntegrationBukkit;
import com.radiofreederp.nodebbintegration.NodeBBIntegrationPlugin;
import com.vexsoftware.votifier.model.Vote;
import com.vexsoftware.votifier.model.VotifierEvent;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;

package com.radiofreederp.nodebbintegration.bukkit.listeners;


/**
 * Created by Yari on 12/29/2015.
 */
public class ListenerVotifier implements Listener
{

// Path: bukkit/src/main/java/com/radiofreederp/nodebbintegration/NodeBBIntegrationBukkit.java
// public class NodeBBIntegrationBukkit extends JavaPlugin implements NodeBBIntegrationPlugin {
// 
//     private PluginLogger logger;
// 
//     private MinecraftServerCommon minecraftServer = new BukkitServer(this);
//     @Override
//     public MinecraftServerCommon getMinecraftServer() {
//         return minecraftServer;
//     }
// 
//     @Override
//     public void log(String message, Level level) {
//         logger.log(level, message);
//     }
// 
//     @Override
//     public void runTaskAsynchronously(Runnable task) {
//         Bukkit.getScheduler().runTaskAsynchronously(this, task);
//     }
// 
//     @Override
//     public void runTaskTimerAsynchronously(Runnable task, int delay, int interval) {
//         Bukkit.getScheduler().runTaskTimerAsynchronously(this, task, delay, interval);
//     }
// 
//     @Override
//     public void runTask(Runnable task) {
//         Bukkit.getScheduler().runTask(this, task);
//     }
// 
// 	@Override
// 	public void runTaskTimer(Runnable task, int delay, int interval) {
// 		Bukkit.getScheduler().runTaskTimer(this, task, delay, interval);
// 	}
// 
//     @Override
//     public void initTaskTick() {
//         new TaskStatus(this);
//         new TaskPing(this);
//     }
// 
//     @Override
//     public void eventWebChat(Object... args) {
//         // Interpret message.
//         if (args[0] != null)
//         {
//             try
//             {
//                 final String name = ((JSONObject)args[0]).getString("name");
//                 final String message = ((JSONObject)args[0]).getString("message");
//                 Bukkit.broadcastMessage("[" + ChatColor.GOLD + "WEB" + ChatColor.RESET + "] <" + name + "> " + message);
//             }
//             catch (JSONException e)
//             {
//                 e.printStackTrace();
//             }
//         }
//     }
// 
//     @Override
//     public void eventGetPlayerVotes(Object... req) {
//         Logger.log("Got eventGetPlayerVotes");
// 
//         // Interpret message.
//         // TODO: Should be an error object.
//         if (req[0] == null) return;
// 
//         Logger.log("Compiling votes...");
//         //JSONObject res = getPluginConfig().getPlayerVotes((JSONObject)req[0]);
// 
//         Logger.log("Sending votes...");
//         //SocketIOClient.emit("PlayerVotes", res, cb -> {});
//     }
// 
//     @Override
//     public void onEnable() {
//         // Set static instance.
//         NBBPlugin.instance = this;
// 
//         // Start logger.
//         logger = new PluginLogger(this);
//         Logger.init(this);
// 
//         // Loads config and updates if necessary.
// 		new PluginConfigBukkit();
// 
//         // Start the socket client.
//         SocketIOClient.create(this);
// 
//         // Monitor the TPS.
//         initTaskTick();
// 
//         // Initialize NBBPlugin Hooks
//         VaultHook.hook(this);
//         OnTimeHook.hook(this);
//         VotifierHook.hook(this);
//         VanishNoPacketHook.hook(this);
// 
//         // Register listeners.
//         getServer().getPluginManager().registerEvents(new ListenerPlayerJoin(this), this);
//         getServer().getPluginManager().registerEvents(new ListenerPlayerQuit(this), this);
//         getServer().getPluginManager().registerEvents(new ListenerPlayerChat(this), this);
//         getServer().getPluginManager().registerEvents(new ListenerServerListPing(this), this);
//         getServer().getPluginManager().registerEvents(new ListenerWorldSave(this), this);
// 
//         // Register commands.
//         this.getCommand("nodebb").setExecutor(new CommandNodeBBBukkit());
//         this.getCommand("register").setExecutor(new CommandLinkBukkit()); // TODO
//         this.getCommand("link").setExecutor(new CommandLinkBukkit());
// 
//         // Sync Players
//         new BukkitRunnable(){
//             @Override
//             public void run() {
//                 SocketIOClient.emit(ESocketEvent.RANKS_WITH_MEMBERS, minecraftServer.getGroupsWithMembers(), args -> Logger.log("Received " + ESocketEvent.RANKS_WITH_MEMBERS + " callback."));
//             }
//         }.runTaskLater(this, 100);
// 
//         // Turn off debug messages after setup.
//         PluginConfigBukkit.setDebug(false);
//     }
// 
//     @Override
//     public void onDisable() {
//         try {
//             // Try to close the connection gracefully.
//             SocketIOClient.close();
//         } catch (Exception e) {
//             // Any error doesn't matter.
//         }
//     }
// }
// 
// Path: common/src/main/java/com/radiofreederp/nodebbintegration/NodeBBIntegrationPlugin.java
// public interface NodeBBIntegrationPlugin {
//     // TODO: This can be static.
//     MinecraftServerCommon getMinecraftServer();
// 
//     void log(String message, Level level);
// 
//     void runTaskAsynchronously(Runnable task);
//     void runTaskTimerAsynchronously(Runnable task, int delay, int interval);
//     void runTask(Runnable task);
//     void runTaskTimer(Runnable task, int delay, int interval);
// 
//     void initTaskTick();
// 
//     // TODO
//     void eventWebChat(Object... args);
//     void eventGetPlayerVotes(Object... args);
// }


// Path: bukkit-legacy/src/main/java/com/radiofreederp/nodebbintegration/bukkit/listeners/ListenerVotifier.java
import com.radiofreederp.nodebbintegration.NodeBBIntegrationBukkit;
import com.radiofreederp.nodebbintegration.NodeBBIntegrationPlugin;
import com.vexsoftware.votifier.model.Vote;
import com.vexsoftware.votifier.model.VotifierEvent;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;

package com.radiofreederp.nodebbintegration.bukkit.listeners;


/**
 * Created by Yari on 12/29/2015.
 */
public class ListenerVotifier implements Listener
{

    @EventHandler(priority=EventPriority.NORMAL)
