From cdb36052c7af065634350394ed5cbaa6c29e0c61 Mon Sep 17 00:00:00 2001 From: MistPhizzle Date: Fri, 11 Jul 2014 23:34:03 -0400 Subject: [PATCH] Add a converter Converts data from orion's plugin. --- .classpath | 1 + .../ProjectKorra/BendingPlayer.java | 2 + .../projectkorra/ProjectKorra/Commands.java | 96 +++++++++++++++++++ src/plugin.yml | 3 +- 4 files changed, 101 insertions(+), 1 deletion(-) diff --git a/.classpath b/.classpath index 6b746735..5a84bf1f 100644 --- a/.classpath +++ b/.classpath @@ -11,5 +11,6 @@ + diff --git a/src/com/projectkorra/ProjectKorra/BendingPlayer.java b/src/com/projectkorra/ProjectKorra/BendingPlayer.java index ec9c7666..c7437d91 100644 --- a/src/com/projectkorra/ProjectKorra/BendingPlayer.java +++ b/src/com/projectkorra/ProjectKorra/BendingPlayer.java @@ -1,5 +1,7 @@ package com.projectkorra.ProjectKorra; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; diff --git a/src/com/projectkorra/ProjectKorra/Commands.java b/src/com/projectkorra/ProjectKorra/Commands.java index 02de8ee7..25ed7066 100644 --- a/src/com/projectkorra/ProjectKorra/Commands.java +++ b/src/com/projectkorra/ProjectKorra/Commands.java @@ -1,16 +1,25 @@ package com.projectkorra.ProjectKorra; +import java.io.File; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedList; import java.util.List; +import java.util.UUID; + import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.PluginCommand; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; import com.projectkorra.ProjectKorra.Ability.AbilityModuleManager; @@ -41,6 +50,7 @@ public class Commands { String[] addaliases = {"add", "a"}; String[] whoaliases = {"who", "w"}; + private static int importTask; private void init() { PluginCommand projectkorra = plugin.getCommand("projectkorra"); CommandExecutor exe; @@ -211,6 +221,92 @@ public class Commands { return true; } } + if (args[0].equalsIgnoreCase("import")) { + if (!s.hasPermission("bending.command.import")) { + s.sendMessage(ChatColor.RED + "You don't have permission to do that."); + return true; + } + + s.sendMessage(ChatColor.GREEN + "Preparing data for import."); + File bendingPlayersFile = new File(".", "converted.yml"); + FileConfiguration bendingPlayers = YamlConfiguration.loadConfiguration(bendingPlayersFile); + + final LinkedList bPlayers = new LinkedList(); + for (String string: bendingPlayers.getConfigurationSection("").getKeys(false)) { + if (string.equalsIgnoreCase("version")) continue; + String playername = string; + UUID uuid = Bukkit.getOfflinePlayer(playername).getUniqueId(); + ArrayList element = new ArrayList(); + List oe = bendingPlayers.getIntegerList(string + ".BendingTypes"); + + if (oe.contains(0)) { + element.add(Element.Air); + } + if (oe.contains(1)) { + element.add(Element.Water); + } + if (oe.contains(2)) { + element.add(Element.Earth); + } + if (oe.contains(3)) { + element.add(Element.Fire); + } + if (oe.contains(4)) { + element.add(Element.Chi); + } + + BendingPlayer bPlayer = new BendingPlayer(uuid, playername, element, new HashMap(), false); + bPlayers.add(bPlayer); + } + + final int total = bPlayers.size(); + final CommandSender sender = s; + s.sendMessage(ChatColor.GREEN + "Import of data started. Do NOT stop / reload your server."); + importTask = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() { + public void run() { + int i = 0; + if (i >= 10) { + sender.sendMessage(ChatColor.GREEN + "10 / " + total + " players converted thus far!"); + return; + } + + while (i < 10) { + if (bPlayers.isEmpty()) { + sender.sendMessage(ChatColor.GREEN + "Import complete, it may be best to reload your server."); + Bukkit.getServer().getScheduler().cancelTask(importTask); + for (Player player: Bukkit.getOnlinePlayers()) { + Methods.createBendingPlayer(player.getUniqueId(), player.getName()); + } + return; + } + StringBuilder elements = new StringBuilder(); + BendingPlayer bPlayer = bPlayers.pop(); + if (bPlayer.hasElement(Element.Air)) elements.append("a"); + if (bPlayer.hasElement(Element.Water)) elements.append("w"); + if (bPlayer.hasElement(Element.Earth)) elements.append("e"); + if (bPlayer.hasElement(Element.Fire)) elements.append("f"); + if (bPlayer.hasElement(Element.Chi)) elements.append("c"); + + DBConnection.sql.modifyQuery("INSERT INTO pk_players (uuid, player, element, permaremoved) VALUES ('" + bPlayer.uuid.toString() + "', '" + bPlayer.player + "', '" + elements + "', 'false')"); +// ResultSet rs2 = DBConnection.sql.readQuery("SELECT * FROM pk_players WHERE uuid = '" + bPlayer.uuid.toString() + "'"); + +// try { +// if (rs2.next()) { // SQL Data already exists for player. +// DBConnection.sql.modifyQuery("UPDATE pk_players SET player = '" + bPlayer.player + "' WHERE uuid = '" + bPlayer.uuid.toString()); +// DBConnection.sql.modifyQuery("UPDATE pk_players SET element = '" + elements + "' WHERE uuid = '" + bPlayer.uuid.toString()); +// DBConnection.sql.modifyQuery("UPDATE pk_players SET permaremoved = 'false' WHERE uuid = '" + bPlayer.uuid.toString()); +// } else { +// } +// } catch (SQLException ex) { +// ex.printStackTrace(); +// } + i++; + } + } + }, 0, 40); + return true; + + } if (Arrays.asList(displayaliases).contains(args[0].toLowerCase())) { if (args.length > 2) { s.sendMessage(ChatColor.GOLD + "Proper Usage: /bending display "); diff --git a/src/plugin.yml b/src/plugin.yml index 92ae20a8..de11010c 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: ProjectKorra author: ProjectKorra -version: 1.2.0 BETA 6 +version: 1.2.0 BETA 7 main: com.projectkorra.ProjectKorra.ProjectKorra commands: projectkorra: @@ -20,6 +20,7 @@ permissions: bending.admin.choose: true bending.ability.AvatarState: true bending.ability.Bloodbending: true + bending.command.import: true bending.player: default: true description: Grants access to most abilities and basic commands.