47 lines
		
	
	
	
		
			1.8 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
		
		
			
		
	
	
			47 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) {
							 | 
						||
| 
								 | 
							
								+        Validate.notNull(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.
							 |