46 lines
		
	
	
	
		
			1.8 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			1.8 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
						|
From: Aikar <aikar@aikar.co>
 | 
						|
Date: Tue, 16 Jul 2013 21:26:50 -0400
 | 
						|
Subject: [PATCH] Add MetadataStoreBase.removeAll(Plugin)
 | 
						|
 | 
						|
So that on reload, metadata will be cleared
 | 
						|
 | 
						|
diff --git a/src/main/java/org/bukkit/metadata/MetadataStoreBase.java b/src/main/java/org/bukkit/metadata/MetadataStoreBase.java
 | 
						|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
						|
--- a/src/main/java/org/bukkit/metadata/MetadataStoreBase.java
 | 
						|
+++ b/src/main/java/org/bukkit/metadata/MetadataStoreBase.java
 | 
						|
@@ -0,0 +0,0 @@ import java.util.ArrayList;
 | 
						|
 import java.util.Collection;
 | 
						|
 import java.util.Collections;
 | 
						|
 import java.util.HashMap;
 | 
						|
+import java.util.Iterator; // Paper
 | 
						|
 import java.util.List;
 | 
						|
 import java.util.Map;
 | 
						|
 import java.util.WeakHashMap;
 | 
						|
@@ -0,0 +0,0 @@ public abstract class MetadataStoreBase<T> {
 | 
						|
         }
 | 
						|
     }
 | 
						|
 
 | 
						|
+    /**
 | 
						|
+     * Removes all metadata in the metadata store that originates from the
 | 
						|
+     * given plugin.
 | 
						|
+     *
 | 
						|
+     * @param owningPlugin the plugin requesting the invalidation.
 | 
						|
+     * @throws IllegalArgumentException If plugin is null
 | 
						|
+     */
 | 
						|
+    public void removeAll(@NotNull Plugin owningPlugin) {
 | 
						|
+        Preconditions.checkNotNull(owningPlugin, "Plugin cannot be null");
 | 
						|
+        for (Iterator<Map<Plugin, MetadataValue>> iterator = metadataMap.values().iterator(); iterator.hasNext(); ) {
 | 
						|
+            Map<Plugin, MetadataValue> values = iterator.next();
 | 
						|
+            if (values.containsKey(owningPlugin)) {
 | 
						|
+                values.remove(owningPlugin);
 | 
						|
+            }
 | 
						|
+            if (values.isEmpty()) {
 | 
						|
+                iterator.remove();
 | 
						|
+            }
 | 
						|
+        }
 | 
						|
+    }
 | 
						|
+
 | 
						|
     /**
 | 
						|
      * Creates a unique name for the object receiving metadata by combining
 | 
						|
      * unique data from the subject with a metadataKey.
 |