From fd529ce967bc266dbdb6d6cf570f35517a61a420 Mon Sep 17 00:00:00 2001 From: KennyTV Date: Thu, 30 Jul 2020 15:22:27 +0200 Subject: [PATCH] Properly implement color diff Semi fixes #239 --- .../chat/TranslatableRewriter1_16.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_15_2to1_16/chat/TranslatableRewriter1_16.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_15_2to1_16/chat/TranslatableRewriter1_16.java index bccd5007..e32ef29e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_15_2to1_16/chat/TranslatableRewriter1_16.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_15_2to1_16/chat/TranslatableRewriter1_16.java @@ -98,13 +98,16 @@ public class TranslatableRewriter1_16 extends TranslatableRewriter { } // Check by the greatest diff of the 3 values - int rDiff = Math.abs(color.r - r); - int gDiff = Math.abs(color.g - g); - int bDiff = Math.abs(color.b - b); - int maxDiff = Math.max(Math.max(rDiff, gDiff), bDiff); - if (closest == null || maxDiff < smallestDiff) { + int rAverage = (color.r + r) / 2; + int rDiff = color.r - r; + int gDiff = color.g - g; + int bDiff = color.b - b; + int diff = ((2 + (rAverage >> 8)) * rDiff * rDiff) + + (4 * gDiff * gDiff) + + ((2 + ((255 - rAverage) >> 8)) * bDiff * bDiff); + if (closest == null || diff < smallestDiff) { closest = color; - smallestDiff = maxDiff; + smallestDiff = diff; } } return closest.colorName;