Architectury port, EMI compat

This commit is contained in:
Martin Prokoph
2024-09-06 21:44:34 +02:00
parent b6266b8e48
commit f68048d955
41 changed files with 611 additions and 234 deletions

View File

@@ -0,0 +1,85 @@
package eu.midnightdust.blur;
import eu.midnightdust.blur.config.BlurConfig;
import eu.midnightdust.blur.util.RainbowColor;
import eu.midnightdust.lib.util.MidnightColorUtil;
import net.minecraft.client.gui.DrawContext;
import org.joml.Math;
import org.joml.Matrix4f;
import java.awt.Color;
import java.lang.Double;
import static eu.midnightdust.blur.BlurInfo.*;
import static eu.midnightdust.blur.util.RainbowColor.hue;
import static eu.midnightdust.blur.util.RainbowColor.hue2;
public class Blur {
public static void init() {
BlurConfig.init("blur", BlurConfig.class);
}
public static boolean doFade = false;
public static void onScreenChange() {
if (screenHasBlur) {
if (doFade) {
start = System.currentTimeMillis();
doFade = false;
}
} else if (prevScreenHasBlur && BlurConfig.fadeOutTimeMillis > 0) {
start = System.currentTimeMillis();
doFade = true;
} else {
start = -1;
doFade = true;
}
}
public static void updateProgress(boolean fadeIn) {
double x;
if (fadeIn) {
x = Math.min((System.currentTimeMillis() - start) / (double) BlurConfig.fadeTimeMillis, 1);
}
else {
x = Math.max(1 + (start - System.currentTimeMillis()) / (double) BlurConfig.fadeOutTimeMillis, 0);
if (x <= 0) {
start = -1;
}
}
x = BlurConfig.animationCurve.apply(x, fadeIn);
x = Math.clamp(0, 1, x);
progress = Double.valueOf(x).floatValue();
}
public static int getBackgroundColor(boolean second) {
int a = second ? BlurConfig.gradientEndAlpha : BlurConfig.gradientStartAlpha;
var col = MidnightColorUtil.hex2Rgb(second ? BlurConfig.gradientEnd : BlurConfig.gradientStart);
if (BlurConfig.rainbowMode) col = second ? Color.getHSBColor(hue, 1, 1) : Color.getHSBColor(hue2, 1, 1);
int r = (col.getRGB() >> 16) & 0xFF;
int b = (col.getRGB() >> 8) & 0xFF;
int g = col.getRGB() & 0xFF;
float prog = progress;
a *= prog;
r *= prog;
g *= prog;
b *= prog;
return a << 24 | r << 16 | b << 8 | g;
}
public static int getRotation() {
if (BlurConfig.rainbowMode) return RainbowColor.rotation;
return BlurConfig.gradientRotation;
}
public static void renderRotatedGradient(DrawContext context, int width, int height) {
float diagonal = Math.sqrt((float) width*width + height*height);
int smallestDimension = Math.min(width, height);
Matrix4f posMatrix = context.getMatrices().peek().getPositionMatrix();
posMatrix.rotationZ(Math.toRadians(getRotation()));
posMatrix.setTranslation(width / 2f, height / 2f, 0); // Make the gradient's center the pivot point
posMatrix.scale(diagonal / smallestDimension); // Scales the gradient to the maximum diagonal value needed
context.fillGradient(-width / 2, -height / 2, width / 2, height / 2, Blur.getBackgroundColor(false), Blur.getBackgroundColor(true)); // Actually draw the gradient
posMatrix.rotationZ(0);
}
}