Fix setPatternColor on tropical fish bucket meta (#6877)
This commit is contained in:
		
					parent
					
						
							
								0f52610a18
							
						
					
				
			
			
				commit
				
					
						c23b1138fb
					
				
			
		
					 1 changed files with 71 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -0,0 +1,71 @@
 | 
			
		|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Bjarne Koll <git@lynxplay.dev>
 | 
			
		||||
Date: Sat, 6 Nov 2021 23:15:20 +0100
 | 
			
		||||
Subject: [PATCH] Fix setPatternColor on tropical fish bucket meta
 | 
			
		||||
 | 
			
		||||
Prior to this commit, the tropical fish bucket meta would set the body
 | 
			
		||||
color to the previous metas pattern colour when updating the pattern
 | 
			
		||||
colour.
 | 
			
		||||
 | 
			
		||||
This commit hence simply fixes this by using the proper body colour
 | 
			
		||||
value when updating the pattern color.
 | 
			
		||||
 | 
			
		||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaTropicalFishBucket.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaTropicalFishBucket.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaTropicalFishBucket.java
 | 
			
		||||
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaTropicalFishBucket.java
 | 
			
		||||
@@ -0,0 +0,0 @@ class CraftMetaTropicalFishBucket extends CraftMetaItem implements TropicalFishB
 | 
			
		||||
         if (this.variant == null) {
 | 
			
		||||
             this.variant = 0;
 | 
			
		||||
         }
 | 
			
		||||
-        this.variant = CraftTropicalFish.getData(color, this.getPatternColor(), this.getPattern());
 | 
			
		||||
+        this.variant = CraftTropicalFish.getData(color, this.getBodyColor(), this.getPattern()); // Paper - properly set tropical fish pattern color without mutating body color
 | 
			
		||||
     }
 | 
			
		||||
 
 | 
			
		||||
     @Override
 | 
			
		||||
diff --git a/src/test/java/io/papermc/paper/inventory/CraftMetaTropicalFishBucketTest.java b/src/test/java/io/papermc/paper/inventory/CraftMetaTropicalFishBucketTest.java
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/src/test/java/io/papermc/paper/inventory/CraftMetaTropicalFishBucketTest.java
 | 
			
		||||
@@ -0,0 +0,0 @@
 | 
			
		||||
+package io.papermc.paper.inventory;
 | 
			
		||||
+
 | 
			
		||||
+import org.bukkit.DyeColor;
 | 
			
		||||
+import org.bukkit.Material;
 | 
			
		||||
+import org.bukkit.entity.TropicalFish;
 | 
			
		||||
+import org.bukkit.inventory.ItemStack;
 | 
			
		||||
+import org.bukkit.inventory.meta.TropicalFishBucketMeta;
 | 
			
		||||
+import org.bukkit.support.AbstractTestingBase;
 | 
			
		||||
+import org.junit.Assert;
 | 
			
		||||
+import org.junit.Test;
 | 
			
		||||
+
 | 
			
		||||
+public class CraftMetaTropicalFishBucketTest extends AbstractTestingBase {
 | 
			
		||||
+
 | 
			
		||||
+    @Test
 | 
			
		||||
+    public void testAllCombinations() {
 | 
			
		||||
+        final var rawMeta = new ItemStack(Material.TROPICAL_FISH_BUCKET).getItemMeta();
 | 
			
		||||
+        Assert.assertTrue("Meta was not a tropical fish bucket", rawMeta instanceof TropicalFishBucketMeta);
 | 
			
		||||
+
 | 
			
		||||
+        final var meta = (TropicalFishBucketMeta) rawMeta;
 | 
			
		||||
+
 | 
			
		||||
+        for (final var bodyColor : DyeColor.values()) {
 | 
			
		||||
+            for (final var pattern : TropicalFish.Pattern.values()) {
 | 
			
		||||
+                for (final var patternColor : DyeColor.values()) {
 | 
			
		||||
+                    meta.setBodyColor(bodyColor);
 | 
			
		||||
+                    Assert.assertEquals("Body color did not match post body color!", bodyColor, meta.getBodyColor());
 | 
			
		||||
+
 | 
			
		||||
+                    meta.setPattern(pattern);
 | 
			
		||||
+                    Assert.assertEquals("Pattern did not match post pattern!", pattern, meta.getPattern());
 | 
			
		||||
+                    Assert.assertEquals("Body color did not match post pattern!", bodyColor, meta.getBodyColor());
 | 
			
		||||
+
 | 
			
		||||
+                    meta.setPatternColor(patternColor);
 | 
			
		||||
+                    Assert.assertEquals("Pattern did not match post pattern color!", pattern, meta.getPattern());
 | 
			
		||||
+                    Assert.assertEquals("Body color did not match post pattern color!", bodyColor, meta.getBodyColor());
 | 
			
		||||
+                    Assert.assertEquals("Pattern color did not match post pattern color!", patternColor, meta.getPatternColor());
 | 
			
		||||
+                }
 | 
			
		||||
+            }
 | 
			
		||||
+        }
 | 
			
		||||
+    }
 | 
			
		||||
+
 | 
			
		||||
+}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue