Add API to retrieve an attribute modifier from a UUID (#9924)
* Add attribute modifier from UUID API * Add method to remove by UUID * Add overload for UnmodifiableAttributeInstance, better precondition messages * rebase
This commit is contained in:
		
					parent
					
						
							
								7693140ca0
							
						
					
				
			
			
				commit
				
					
						a27d62766e
					
				
			
		
					 2 changed files with 90 additions and 0 deletions
				
			
		
							
								
								
									
										34
									
								
								patches/api/Add-UUID-attribute-modifier-API.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								patches/api/Add-UUID-attribute-modifier-API.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,34 @@
 | 
			
		|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: TonytheMacaroni <tonythemacaroni123@gmail.com>
 | 
			
		||||
Date: Thu, 9 Nov 2023 20:35:35 -0500
 | 
			
		||||
Subject: [PATCH] Add UUID attribute modifier API
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
diff --git a/src/main/java/org/bukkit/attribute/AttributeInstance.java b/src/main/java/org/bukkit/attribute/AttributeInstance.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/org/bukkit/attribute/AttributeInstance.java
 | 
			
		||||
+++ b/src/main/java/org/bukkit/attribute/AttributeInstance.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public interface AttributeInstance {
 | 
			
		||||
     @NotNull
 | 
			
		||||
     Collection<AttributeModifier> getModifiers();
 | 
			
		||||
 
 | 
			
		||||
+    // Paper start
 | 
			
		||||
+    /**
 | 
			
		||||
+     * Gets the modifier with the corresponding UUID.
 | 
			
		||||
+     *
 | 
			
		||||
+     * @param uuid the UUID of the modifier
 | 
			
		||||
+     * @return the modifier, if it exists
 | 
			
		||||
+     */
 | 
			
		||||
+    @org.jetbrains.annotations.Nullable AttributeModifier getModifier(@NotNull java.util.UUID uuid);
 | 
			
		||||
+
 | 
			
		||||
+    /**
 | 
			
		||||
+     * Remove a modifier with the corresponding UUID from this instance.
 | 
			
		||||
+     *
 | 
			
		||||
+     * @param uuid the UUID of the modifier
 | 
			
		||||
+     */
 | 
			
		||||
+    void removeModifier(@NotNull java.util.UUID uuid);
 | 
			
		||||
+    // Paper end
 | 
			
		||||
+
 | 
			
		||||
     /**
 | 
			
		||||
      * Add a modifier to this instance.
 | 
			
		||||
      *
 | 
			
		||||
							
								
								
									
										56
									
								
								patches/server/Add-UUID-attribute-modifier-API.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								patches/server/Add-UUID-attribute-modifier-API.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: TonytheMacaroni <tonythemacaroni123@gmail.com>
 | 
			
		||||
Date: Thu, 9 Nov 2023 20:34:44 -0500
 | 
			
		||||
Subject: [PATCH] Add UUID attribute modifier API
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
diff --git a/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java b/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java
 | 
			
		||||
+++ b/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java
 | 
			
		||||
@@ -0,0 +0,0 @@ import org.bukkit.attribute.Attribute;
 | 
			
		||||
 import org.bukkit.attribute.AttributeModifier;
 | 
			
		||||
 import org.bukkit.craftbukkit.attribute.CraftAttributeInstance;
 | 
			
		||||
 
 | 
			
		||||
+import java.util.UUID;
 | 
			
		||||
 import java.util.Collection;
 | 
			
		||||
 
 | 
			
		||||
 public class UnmodifiableAttributeInstance extends CraftAttributeInstance {
 | 
			
		||||
@@ -0,0 +0,0 @@ public class UnmodifiableAttributeInstance extends CraftAttributeInstance {
 | 
			
		||||
         throw new UnsupportedOperationException("Cannot modify default attributes");
 | 
			
		||||
     }
 | 
			
		||||
 
 | 
			
		||||
+    @Override
 | 
			
		||||
+    public void removeModifier(UUID uuid) {
 | 
			
		||||
+        throw new UnsupportedOperationException("Cannot modify default attributes");
 | 
			
		||||
+    }
 | 
			
		||||
+
 | 
			
		||||
     @Override
 | 
			
		||||
     public void addModifier(AttributeModifier modifier) {
 | 
			
		||||
         throw new UnsupportedOperationException("Cannot modify default attributes");
 | 
			
		||||
diff --git a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java
 | 
			
		||||
+++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public class CraftAttributeInstance implements AttributeInstance {
 | 
			
		||||
         return result;
 | 
			
		||||
     }
 | 
			
		||||
 
 | 
			
		||||
+    // Paper start
 | 
			
		||||
+    @Override
 | 
			
		||||
+    public AttributeModifier getModifier(java.util.UUID uuid) {
 | 
			
		||||
+        Preconditions.checkArgument(uuid != null, "UUID cannot be null");
 | 
			
		||||
+        net.minecraft.world.entity.ai.attributes.AttributeModifier modifier = this.handle.getModifier(uuid);
 | 
			
		||||
+        return modifier == null ? null : CraftAttributeInstance.convert(modifier);
 | 
			
		||||
+    }
 | 
			
		||||
+
 | 
			
		||||
+    @Override
 | 
			
		||||
+    public void removeModifier(java.util.UUID uuid) {
 | 
			
		||||
+        Preconditions.checkArgument(uuid != null, "UUID cannot be null");
 | 
			
		||||
+        this.handle.removeModifier(uuid);
 | 
			
		||||
+    }
 | 
			
		||||
+    // Paper end
 | 
			
		||||
+
 | 
			
		||||
     @Override
 | 
			
		||||
     public void addModifier(AttributeModifier modifier) {
 | 
			
		||||
         Preconditions.checkArgument(modifier != null, "modifier");
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue