From bf13d882636fdaf99ee6b7865ff034d925fde347 Mon Sep 17 00:00:00 2001 From: tibs <37983572+TibiNonEst@users.noreply.github.com> Date: Mon, 10 Jan 2022 10:27:41 -0500 Subject: [PATCH] Fix color blending averages --- .../block/WaterCauldronBlockEntity.java | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/me/tibinonest/mods/cauldron_dyeing/block/WaterCauldronBlockEntity.java b/src/main/java/me/tibinonest/mods/cauldron_dyeing/block/WaterCauldronBlockEntity.java index 85674ab..1fcc284 100644 --- a/src/main/java/me/tibinonest/mods/cauldron_dyeing/block/WaterCauldronBlockEntity.java +++ b/src/main/java/me/tibinonest/mods/cauldron_dyeing/block/WaterCauldronBlockEntity.java @@ -29,21 +29,23 @@ public class WaterCauldronBlockEntity extends BlockEntity { newColor[1] = (int) (colorComponents[1] * 255.0f); newColor[2] = (int) (colorComponents[2] * 255.0f); - var workingColor = hasColor() ? color : new int[]{0, 0, 0}; + if (hasColor()) { + var avgColor = new int[3]; + avgColor[0] = (color[0] + newColor[0]) / 2; + avgColor[1] = (color[1] + newColor[1]) / 2; + avgColor[2] = (color[2] + newColor[2]) / 2; - var avgColor = new int[3]; - avgColor[0] = (workingColor[0] + newColor[0]) / 2; - avgColor[1] = (workingColor[1] + newColor[1]) / 2; - avgColor[2] = (workingColor[2] + newColor[2]) / 2; + var avgMax = (Ints.max(color) + Ints.max(newColor)) / 2.0f; - var avgMax = (Ints.max(workingColor) + Ints.max(newColor)) / 2.0f; + var maxOfAvg = (float) Ints.max(avgColor); + var gainFactor = avgMax / maxOfAvg; - var maxOfAvg = (float) Ints.max(avgColor); - var gainFactor = avgMax / maxOfAvg; - - color[0] = (int) (avgColor[0] * gainFactor); - color[1] = (int) (avgColor[1] * gainFactor); - color[2] = (int) (avgColor[2] * gainFactor); + color[0] = (int) (avgColor[0] * gainFactor); + color[1] = (int) (avgColor[1] * gainFactor); + color[2] = (int) (avgColor[2] * gainFactor); + } else { + color = newColor; + } markDirty(); rebuildBlock();