Update closest color conversion
ViaVersion altered their color conversion to fix an issue and this just copies those changes
@@ -400,13 +400,16 @@ public class MessageUtils {
int testB = testColor.getValue() & 0xFF;
// Check by the greatest diff of the 3 values
- int rDiff = Math.abs(testR - r);
- int gDiff = Math.abs(testG - g);
- int bDiff = Math.abs(testB - b);
- int maxDiff = Math.max(Math.max(rDiff, gDiff), bDiff);
- if (closest == null || maxDiff < smallestDiff) {
+ int rAverage = (testR + r) / 2;
+ int rDiff = testR - r;
+ int gDiff = testG - g;
+ int bDiff = testB - b;
+ int diff = ((2 + (rAverage >> 8)) * rDiff * rDiff)
+ + (4 * gDiff * gDiff)
+ + ((2 + ((255 - rAverage) >> 8)) * bDiff * bDiff);
+ if (closest == null || diff < smallestDiff) {
closest = testColor.getKey();
- smallestDiff = maxDiff;
+ smallestDiff = diff;
}
}
