package me.vaqxine.BuycraftAmplification; import java.util.Collection; import java.util.Map.Entry; import java.util.UUID; import java.util.concurrent.CopyOnWriteArrayList; import me.vaqxine.BuycraftAmplification.database.SQLQueryThread; import me.vaqxine.BuycraftAmplification.libs.UUIDLibrary; import me.vaqxine.BuycraftAmplification.listeners.LoginListener; import me.vaqxine.BuycraftAmplification.tasks.PendingCommandTask; import me.vaqxine.NetworkManager.NetworkManager; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; public class BuycraftAmplification extends JavaPlugin { private static BuycraftAmplification plugin; public static Logger log = new Logger(); public static boolean spoof_uuid = true; public static volatile CopyOnWriteArrayList<String> sql_query = new CopyOnWriteArrayList<String>(); // All SQL queries to run on ThreadPool. public static String local_server_prefix = null; private static SQLQueryThread sql_worker; public void onEnable(){ plugin = this; sql_worker = new SQLQueryThread(); sql_worker.start(); if(Bukkit.getPluginManager().isPluginEnabled("NetworkManager")){ // local_server_prefix swag String ip_and_port = Bukkit.getIp() + ":" + Bukkit.getPort(); if(NetworkManager.bungee_server_map.containsValue(ip_and_port)){ for(Entry<String, String> server_data : NetworkManager.bungee_server_map.entrySet()){ if(server_data.getValue().equals(ip_and_port)){ local_server_prefix = server_data.getKey(); break; } } } } this.getServer().getPluginManager().registerEvents(new LoginListener(), this); this.getServer().getScheduler().runTaskTimerAsynchronously(this, new PendingCommandTask(), 60 * 20L, 60 * 20L); sql_query.add("CREATE TABLE IF NOT EXISTS buycraft_amplification(uuid varchar(64) PRIMARY KEY NOT NULL, commands_to_run LONGTEXT, player_commands_to_run LONGTEXT)"); } public void onDisable(){ sql_worker.doWork(); sql_worker.interrupt(); sql_worker = null; // TODO: Run rest of sql_query SYNC. } public static BuycraftAmplification getPlugin(){ return plugin; } @SuppressWarnings("deprecation") public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if(cmd.getName().equalsIgnoreCase("logincommand")){ if(sender instanceof Player && !((Player)sender).isOp()) return true; final Player pl = sender instanceof Player ? ((Player)sender) : null; // /logincommand Vaquxine eco give Vaquxine 5000 if(args.length < 1){ if(pl != null){ pl.sendMessage("Syntax: /logincommand (server) <player_name> <full command syntax>"); pl.sendMessage("I.E. /logincommand prison3 Vaquxine eco give Vaquxine 500"); } else { log.debug("Syntax: /logincommand (server) <player_name> <full command syntax>", this.getClass()); log.debug("I.E. /logincommand prison3 Vaquxine eco give Vaquxine 500", this.getClass()); } return true; } if(args.length == 1){ // logincommand forcecheck final Collection<? extends Player> players = Bukkit.getOnlinePlayers(); if(args[0].equalsIgnoreCase("forcecheck")){ Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable(){ public void run(){ for(Player pl : players){ // Check if they have any pending commands_to_run. UUID uuid = spoof_uuid ? UUIDLibrary.getSpoofedUUIDFromName(pl.getName()) : pl.getUniqueId(); PendingCommandTask.runLoginCommands(uuid, pl.getName()); } } }); } else { if(pl != null){ pl.sendMessage("Syntax: /logincommand (server) <player_name> <full command syntax>"); pl.sendMessage("I.E. /logincommand prison3 Vaquxine eco give Vaquxine 500"); } else { log.debug("Syntax: /logincommand (server) <player_name> <full command syntax>", this.getClass()); log.debug("I.E. /logincommand prison3 Vaquxine eco give Vaquxine 500", this.getClass()); } } return true; } // Not Used int index = 0; String server = args[0]; // We need to make sure this is really a server param and not just omit. final String player_name = args[1]; String c = ""; for(int i = 2; i < args.length; i++){ c += args[i] + " "; } if(c.endsWith(" ")) c = c.substring(0, c.length() - 1); if(Bukkit.getPlayer(player_name) != null){ Bukkit.dispatchCommand(Bukkit.getConsoleSender(), c); return true; } BuycraftAmplificationAPI.queueLoginCommand(player_name, c, false, server.equals("*") ? null : server); } return true; } }