From 6ad4d646c4cb39176eae0cbe5c2d4be7e836aa3c Mon Sep 17 00:00:00 2001 From: fretuks Date: Wed, 29 Jul 2026 17:48:41 +0200 Subject: [PATCH] fix an issue with sanity shaders and update version number --- gradle.properties | 2 +- .../client/effects/SanityShaderHandler.java | 29 +++++++------------ .../network/SyncStatsS2CPacket.java | 15 ---------- .../mindmotion/shaders/program/desaturate.fsh | 7 +++-- 4 files changed, 15 insertions(+), 38 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7f9fd81..16a60d0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -52,7 +52,7 @@ mod_name=Mind & Motion # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=All Rights Reserved # The mod version. See https://semver.org/ -mod_version=1.4.4 +mod_version=1.4.5 # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. # See https://maven.apache.org/guides/mini/guide-naming-conventions.html diff --git a/src/main/java/net/fretux/mindmotion/client/effects/SanityShaderHandler.java b/src/main/java/net/fretux/mindmotion/client/effects/SanityShaderHandler.java index 9d3c490..85a9ca7 100644 --- a/src/main/java/net/fretux/mindmotion/client/effects/SanityShaderHandler.java +++ b/src/main/java/net/fretux/mindmotion/client/effects/SanityShaderHandler.java @@ -4,7 +4,6 @@ import com.mojang.logging.LogUtils; import net.fretux.mindmotion.ConfigMM; import net.fretux.mindmotion.client.ClientData; import net.fretux.mindmotion.client.shader.VentShaderHandler; -import net.fretux.mindmotion.mixin.PostChainAccessor; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.PostChain; import net.minecraft.client.renderer.PostPass; @@ -28,6 +27,7 @@ public class SanityShaderHandler { ResourceLocation.fromNamespaceAndPath("mindmotion", "shaders/post/desaturate.json"); private static float currentStrength = 0f; + private static boolean shaderErrorLogged = false; private static final Logger LOGGER = LogUtils.getLogger(); private static final Field PASSES_FIELD = ObfuscationReflectionHelper.findField(PostChain.class, "f_110009_"); @@ -37,11 +37,17 @@ public class SanityShaderHandler { try { return (List) PASSES_FIELD.get(chain); } catch (IllegalAccessException e) { - LOGGER.error("Failed to access PostChain.passes", e); + logShaderError("Failed to access sanity shader passes", e); return List.of(); } } + private static void logShaderError(String message, Throwable error) { + if (shaderErrorLogged) return; + shaderErrorLogged = true; + LOGGER.error(message, error); + } + @SubscribeEvent public static void onRenderWorld(RenderLevelStageEvent event) { @@ -85,23 +91,8 @@ public class SanityShaderHandler { if (current == null) { try { mc.gameRenderer.loadEffect(DESAT_EFFECT); - PostChain chain = mc.gameRenderer.currentEffect(); - LOGGER.info("Loaded post chain = {}", chain != null); - if (chain != null) { - try { - for (PostPass pass : safeGetPasses(chain)) { - EffectInstance fx = pass.getEffect(); - LOGGER.info("pass fx={}", fx != null ? fx.getName() : "null"); - if (fx != null) { - LOGGER.info(" Desat uniform={}", fx.getUniform("Desat") != null); - } - } - } catch (Throwable t) { - LOGGER.error("Failed to read PostChain passes via reflection", t); - } - } } catch (Exception e) { - LOGGER.error("Failed to read PostChain passes via reflection", e); + logShaderError("Failed to load sanity post-processing shader", e); return; } } @@ -174,7 +165,7 @@ public class SanityShaderHandler { } } } catch (Exception e) { - LOGGER.info("Error loading post chain{}", e.getMessage()); + logShaderError("Failed to update sanity shader uniforms", e); } } diff --git a/src/main/java/net/fretux/mindmotion/network/SyncStatsS2CPacket.java b/src/main/java/net/fretux/mindmotion/network/SyncStatsS2CPacket.java index c3e3935..131e987 100644 --- a/src/main/java/net/fretux/mindmotion/network/SyncStatsS2CPacket.java +++ b/src/main/java/net/fretux/mindmotion/network/SyncStatsS2CPacket.java @@ -94,20 +94,5 @@ public class SyncStatsS2CPacket { ClientData.MADNESS_DECAY_DELAY_TICKS = msg.madnessDecayDelayTicks; }); ctx.get().setPacketHandled(true); - - System.out.println( - "[Client] Sanity: " + msg.sanity + - ", Insanity: " + msg.insanity + - ", Tempo: " + msg.tempo + - ", VentCD: " + msg.ventCooldown + - ", MaxSanity: " + msg.maxSanity + - ", MaxTempo: " + msg.maxTempo + - ", SanityEnabled: " + msg.sanityEnabled + - ", TempoEnabled: " + msg.tempoEnabled + - ", Madness: " + msg.madness + - ", MaxMadness: " + msg.maxMadness - + ", MadnessDecayPerTick: " + msg.madnessDecayPerTick + - ", MadnessDecayDelayTicks: " + msg.madnessDecayDelayTicks - ); } } diff --git a/src/main/resources/assets/mindmotion/shaders/program/desaturate.fsh b/src/main/resources/assets/mindmotion/shaders/program/desaturate.fsh index e2669b0..2906dd8 100644 --- a/src/main/resources/assets/mindmotion/shaders/program/desaturate.fsh +++ b/src/main/resources/assets/mindmotion/shaders/program/desaturate.fsh @@ -84,8 +84,8 @@ void main() { float warp = intensity * 0.012 + PulseStrength * 0.006; shockUV += fromCenter * warp * dist; - // Chromatic aberration that ramps up with insanity - vec2 chromaOffset = fromCenter * (0.002 + intensity * 0.004); + // Chromatic aberration must disappear completely when no insanity effect is active. + vec2 chromaOffset = fromCenter * intensity * 0.006; float r = texture(DiffuseSampler, shockUV + chromaOffset).r; float g = texture(DiffuseSampler, shockUV).g; float b = texture(DiffuseSampler, shockUV - chromaOffset).b; @@ -150,7 +150,8 @@ void main() { float contrast = 1.0 + intensity * 0.35; col.rgb = (col.rgb - 0.5) * contrast + 0.5; - col.rgb = filmicTone(col.rgb, 1.05 + intensity * 0.2); + vec3 toneMapped = filmicTone(col.rgb, 1.05 + intensity * 0.2); + col.rgb = mix(col.rgb, toneMapped, intensity); col.rgb = clamp(col.rgb, 0.0, 1.0); fragColor = vec4(col.rgb, 1.0); }