Some optimization to PlotMeConverter.

This commit is contained in:
Sauilitired 2014-11-16 10:16:38 +01:00
parent 07895be660
commit 38c7edbddd
2 changed files with 113 additions and 62 deletions

View File

@ -84,7 +84,11 @@ public class PlotMain extends JavaPlugin {
* Contains storage options
*/
public static YamlConfiguration storage;
public static int storage_ver = 1;
/**
* Storage version
*/
public static int storage_ver =
1;
/**
* MySQL Connection
*/
@ -92,20 +96,42 @@ public class PlotMain extends JavaPlugin {
/**
* WorldEdit object
*/
public static WorldEditPlugin worldEdit = null;
public static WorldEditPlugin worldEdit =
null;
/**
* BarAPI object
*/
public static BarAPI barAPI = null;
public static BarAPI barAPI =
null;
/**
* World Guard
* World Guard Object
*/
public static WorldGuardPlugin worldGuard = null;
public static WorldGuardListener worldGuardListener = null;
public static Economy economy;
public static boolean useEconomy = false;
public static HashMap<Material, String> booleanFlags = new HashMap<>();
public static WorldGuardPlugin worldGuard =
null;
/**
* World Guard Listener
*/
public static WorldGuardListener worldGuardListener =
null;
/**
* Economy Object (vault)
*/
public static Economy
economy;
/**
* Use Economy?
*/
public static boolean useEconomy =
false;
/**
* Boolean Flags (material)
*/
public static HashMap<Material, String> booleanFlags =
new HashMap<>();
/**
* Initialize the material flags
*/
static {
booleanFlags.put(Material.WOODEN_DOOR, "wooden_door");
booleanFlags.put(Material.IRON_DOOR, "iron_door");
@ -120,6 +146,7 @@ public class PlotMain extends JavaPlugin {
booleanFlags.put(Material.DISPENSER, "dispenser");
booleanFlags.put(Material.DROPPER, "dropper");
}
/**
* The UUID Saver
*/
@ -137,8 +164,14 @@ public class PlotMain extends JavaPlugin {
* All loaded plot worlds
*/
private static HashMap<String, PlotWorld> worlds = new HashMap<>();
/**
* All world managers
*/
private static HashMap<String, PlotManager> managers = new HashMap<>();
/**
* Check for expired plots
*/
public static void checkForExpiredPlots() {
final JavaPlugin plugin = PlotMain.getMain();
Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
@ -1252,15 +1285,15 @@ public class PlotMain extends JavaPlugin {
return plots;
}
public static void setAllPlotsRaw(final LinkedHashMap<String, HashMap<PlotId, Plot>> plots) {
PlotMain.plots = plots;
}
public static void setAllPlotsRaw(final HashMap<String, HashMap<PlotId, Plot>> plots) {
PlotMain.plots = new LinkedHashMap<>(plots);
// PlotMain.plots.putAll(plots);
}
public static void setAllPlotsRaw(final LinkedHashMap<String, HashMap<PlotId, Plot>> plots) {
PlotMain.plots = plots;
}
/**
* !!WorldGeneration!!
*/
@ -1325,6 +1358,9 @@ public class PlotMain extends JavaPlugin {
} catch (final Exception e) {
sendConsoleSenderMessage(C.PREFIX.s() + "&cFailed to load up metrics.");
}
} else {
// We should at least make them feel bad.
sendConsoleSenderMessage("Using metrics will allow us to improve the plugin\nPlease consider it :)");
}
// Kill mobs on roads?
@ -1337,6 +1373,7 @@ public class PlotMain extends JavaPlugin {
Broadcast(C.ENABLED);
}
// Add tables to this one, if we create more :D
final String[] tables = new String[]{
"plot_trusted", "plot_ratings", "plot_comments"
};
@ -1415,6 +1452,10 @@ public class PlotMain extends JavaPlugin {
getServer().getPluginManager().disablePlugin(this);
return;
}
// We should not start the plugin if
// plotme is present. Maybe do this
// earlier, and no register any commands
// nor listeners, just run the converter?
if (getServer().getPluginManager().getPlugin("PlotMe") != null) {
try {
new PlotMeConverter(this).runAsync();

View File

@ -21,22 +21,6 @@
package com.intellectualcrafters.plot.database;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.Plugin;
import com.google.common.base.Charsets;
import com.intellectualcrafters.plot.PlotHomePosition;
import com.intellectualcrafters.plot.PlotId;
@ -45,45 +29,73 @@ import com.intellectualcrafters.plot.generator.WorldGenerator;
import com.worldcretornica.plotme.PlayerList;
import com.worldcretornica.plotme.Plot;
import com.worldcretornica.plotme.PlotManager;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.Plugin;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.*;
/**
* Created 2014-08-17 for ${PROJECT_NAME}
* Created 2014-08-17 for PlotSquared
*
* @author Citymonstret
* @author Empire92
*/
public class PlotMeConverter {
/**
* PlotMain Object
*/
private final PlotMain plugin;
/**
* Constructor
*
* @param plugin Plugin Used to run the converter
*/
public PlotMeConverter(final PlotMain plugin) {
this.plugin = plugin;
}
private void sendMessage(String message) {
PlotMain.sendConsoleSenderMessage("&3PlotMe&8->&3PlotSquared&8: " + message);
}
public void runAsync() throws Exception {
// We have to make it wait a couple of seconds
Bukkit.getScheduler().runTaskLater(this.plugin, new Runnable() {
@Override
public void run() {
PlotMain.sendConsoleSenderMessage("&3PlotMe&8->&3PlotSquared&8: &7Conversion has started");
PlotMain.sendConsoleSenderMessage("&3PlotMe&8->&3PlotSquared&8: &7Caching playerdata...");
final ArrayList<com.intellectualcrafters.plot.Plot> createdPlots = new ArrayList<com.intellectualcrafters.plot.Plot>();
final boolean online = Bukkit.getServer().getOnlineMode();
final Plugin plotMePlugin = Bukkit.getPluginManager().getPlugin("PlotMe");
final FileConfiguration plotConfig = plotMePlugin.getConfig();
final Set<String> worlds = new HashSet<String>();
sendMessage("&7Conversion has started");
sendMessage("7Caching playerdata...");
final ArrayList<com.intellectualcrafters.plot.Plot> createdPlots =
new ArrayList<>();
// Online Mode
final boolean online =
Bukkit.getServer().getOnlineMode();
// PlotMe Plugin
final Plugin plotMePlugin =
Bukkit.getPluginManager().getPlugin("PlotMe");
// PlotMe Configuration
final FileConfiguration plotConfig =
plotMePlugin.getConfig();
// Plot Worlds
final Set<String> worlds = new HashSet<>();
// Loop through the worlds
int duplicate;
HashMap<String, Plot> plots;
for (World world : Bukkit.getWorlds()) {
int duplicate = 0;
final HashMap<String, Plot> plots = PlotManager.getPlots(world);
duplicate = 0;
plots = PlotManager.getPlots(world);
if (plots != null) {
worlds.add(world.getName());
PlotMain.sendConsoleSenderMessage("&3PlotMe&8->&3PlotSquared&8: &7Converting configuration for world '" + world.getName() + "'...");
sendMessage("&7Converting configuration for world '" + world.getName() + "'...");
try {
final Integer pathwidth = plotConfig.getInt("worlds." + world.getName() + ".PathWidth"); //
PlotMain.config.set("worlds." + world.getName() + ".road.width", pathwidth);
@ -94,10 +106,10 @@ public class PlotMeConverter {
PlotMain.config.set("worlds." + world.getName() + ".wall.block", wallblock);
final String floor = plotConfig.getString("worlds." + world.getName() + ".PlotFloorBlockId"); //
PlotMain.config.set("worlds." + world.getName() + ".plot.floor", Arrays.asList(new String[]{floor}));
PlotMain.config.set("worlds." + world.getName() + ".plot.floor", Arrays.asList(floor));
final String filling = plotConfig.getString("worlds." + world.getName() + ".PlotFillingBlockId"); //
PlotMain.config.set("worlds." + world.getName() + ".plot.filling", Arrays.asList(new String[]{filling}));
PlotMain.config.set("worlds." + world.getName() + ".plot.filling", Arrays.asList(filling));
final String road = plotConfig.getString("worlds." + world.getName() + ".RoadMainBlockId");
PlotMain.config.set("worlds." + world.getName() + ".road.block", road);
@ -110,24 +122,23 @@ public class PlotMeConverter {
final Boolean auto_link = plotConfig.getBoolean("worlds." + world.getName() + ".AutoLinkPlots"); //
PlotMain.config.set("worlds." + world.getName() + ".plot.auto_merge", auto_link);
} catch (final Exception e) {
PlotMain.sendConsoleSenderMessage(" - Failed to save configuration for world '" + world.getName() + "'. This will need to be done using the setup command or manually.");
sendMessage("&c-- &lFailed to save configuration for world '" + world.getName() + "'\nThis will need to be done using the setup command, or manually");
}
PlotMain.sendConsoleSenderMessage("&3PlotMe&8->&3PlotSquared&8: &7Processing '" + plots.size() + "' plots for world '" + world.getName() + "'");
sendMessage("&7Processing '" + plots.size() + "' plots for world '" + world.getName() + "'");
ArrayList<UUID> psAdded, psTrusted, psDenied;
for (final Plot plot : plots.values()) {
final ArrayList<UUID> psAdded = new ArrayList<>();
final ArrayList<UUID> psTrusted = new ArrayList<>();
final ArrayList<UUID> psDenied = new ArrayList<>();
psAdded = new ArrayList<>();
psTrusted = new ArrayList<>();
psDenied = new ArrayList<>();
if (world == null) {
world = Bukkit.getWorld("world");
}
try {
if (online) {
PlayerList denied = null;
PlayerList added = null;
PlayerList denied;
PlayerList added;
final Field fAdded = plot.getClass().getDeclaredField("allowed");
final Field fDenied = plot.getClass().getDeclaredField("denied");
fAdded.setAccessible(true);
@ -175,15 +186,14 @@ public class PlotMeConverter {
}
}
} catch (final Throwable e) {
// Okay, this is evil.
}
}
} catch (final Throwable e) {
e.printStackTrace();
} finally {
}
final PlotId id = new PlotId(Integer.parseInt(plot.id.split(";")[0]), Integer.parseInt(plot.id.split(";")[1]));
com.intellectualcrafters.plot.Plot pl = null;
com.intellectualcrafters.plot.Plot pl;
if (online) {
pl = new com.intellectualcrafters.plot.Plot(id, plot.getOwnerId(), plot.getBiome(), psAdded, psTrusted, psDenied,