diff --git a/src/main/java/com/massivecraft/massivecore/ps/PS.java b/src/main/java/com/massivecraft/massivecore/ps/PS.java index d4fc72b8..1c1c2608 100644 --- a/src/main/java/com/massivecraft/massivecore/ps/PS.java +++ b/src/main/java/com/massivecraft/massivecore/ps/PS.java @@ -1,6 +1,9 @@ package com.massivecraft.massivecore.ps; import java.io.Serializable; +import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.Set; import java.util.Map.Entry; import org.bukkit.Bukkit; @@ -839,6 +842,20 @@ public final class PS implements Cloneable, Serializable, Comparable return inSameUniverse(one, two, aspect.getMultiverse()); } + // -------------------------------------------- // + // GET SETS + // -------------------------------------------- // + + public static Set getDistinctChunks(Collection pss) + { + Set ret = new LinkedHashSet(); + for (PS ps : pss) + { + ret.add(ps.getChunk(true)); + } + return ret; + } + // -------------------------------------------- // // HASHCODE (CACHED) // -------------------------------------------- // diff --git a/src/main/java/com/massivecraft/massivecore/util/MUtil.java b/src/main/java/com/massivecraft/massivecore/util/MUtil.java index 84335008..48db16ae 100644 --- a/src/main/java/com/massivecraft/massivecore/util/MUtil.java +++ b/src/main/java/com/massivecraft/massivecore/util/MUtil.java @@ -653,6 +653,27 @@ public class MUtil return ret; } + public static Map> reverseIndex(Map map) + { + Map> ret = new LinkedHashMap>(); + + for (Entry entry : map.entrySet()) + { + K key = entry.getKey(); + V value = entry.getValue(); + + Set set = ret.get(value); + if (set == null) + { + set = new HashSet(); + ret.put(value, set); + } + set.add(key); + } + + return ret; + } + // -------------------------------------------- // // COLLECTION MANIPULATION // -------------------------------------------- //