From d5fe805d8f12ec9f5bc0a7e2a7c746a9034ff2b8 Mon Sep 17 00:00:00 2001 From: boy0001 Date: Wed, 11 Mar 2015 21:27:30 +1100 Subject: [PATCH] Improved sorting --- .../plot/PlotSquared.java | 38 +++++++++++-------- .../plot/commands/Purge.java | 2 +- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/PlotSquared.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/PlotSquared.java index 9b92739c0..2ead8a81f 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/PlotSquared.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/PlotSquared.java @@ -149,7 +149,21 @@ public class PlotSquared { Collections.sort(newPlots, new Comparator() { @Override public int compare(Plot p1, Plot p2) { - return p1.hashCode() + p1.world.hashCode() - p2.hashCode() + p2.world.hashCode(); + int h1 = p1.hashCode(); + int h2 = p2.hashCode(); + if (h1 < 0) { + h1 = -h1*2 - 1; + } + else { + h1*=2; + } + if (h2 < 0) { + h2 = -h2*2 - 1; + } + else { + h2*=2; + } + return h1-h2; } }); return newPlots; @@ -157,21 +171,15 @@ public class PlotSquared { public static ArrayList sortPlots(Collection plots, final String priorityWorld) { ArrayList newPlots = new ArrayList<>(); - newPlots.addAll(plots); - Collections.sort(newPlots, new Comparator() { - @Override - public int compare(Plot p1, Plot p2) { - int w1 = 0; - int w2 = 0; - if (!p1.world.equals(priorityWorld)) { - w1 = p1.hashCode(); - } - if (!p2.world.equals(priorityWorld)) { - w2 = p2.hashCode(); - } - return p1.hashCode() + w1 - p2.hashCode() - w2; + HashMap worldPlots = PlotSquared.plots.get(priorityWorld); + if (worldPlots != null) { + newPlots.addAll(sortPlots(worldPlots.values())); + } + for (Entry> entry : PlotSquared.plots.entrySet()) { + if (!entry.getKey().equals(priorityWorld)) { + entry.getValue().values(); } - }); + } return newPlots; } diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Purge.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Purge.java index e9438a3b7..f7e1d7bce 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Purge.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Purge.java @@ -92,7 +92,7 @@ public class Purge extends SubCommand { return false; } final String worldname = args[1]; - if (!BlockManager.manager.isWorld(worldname) || !PlotSquared.isPlotWorld(worldname)) { + if (!PlotSquared.getAllPlotsRaw().containsKey(worldname)) { MainUtil.sendMessage(plr, "INVALID WORLD"); return false; }