Make sanity more intense

This commit is contained in:
2025-11-15 22:02:08 +01:00
parent 99be5edf3e
commit 0bfe52a3ee
8 changed files with 274 additions and 31 deletions
@@ -41,16 +41,10 @@ public class SanityTempoOverlay {
int insanityFill = (int) (BAR_WIDTH * insanityPercent);
RenderSystem.enableBlend();
// --- TEMPO BAR ---
drawRoundedBar(gui, xTempo, y, BAR_WIDTH, BAR_HEIGHT, 0xFF33AFFF, tempoFill);
gui.drawString(mc.font, Component.literal("Tempo"), xTempo, y - 10, 0x66CCFF, false);
// --- SANITY OR INSANITY BAR ---
boolean insaneMode = sanity <= 0;
if (!insaneMode) {
// Normal sanity bar
drawRoundedBar(gui, xSanity, y, BAR_WIDTH, BAR_HEIGHT, 0xFFFFFFFF, sanityFill);
gui.drawString(mc.font, Component.literal("Sanity"), xSanity + BAR_WIDTH - 30, y - 10, 0xFFFFFF, false);
} else {
@@ -93,15 +93,25 @@ public class SanityShaderHandler {
float blur = 0f;
float vig = 0f;
float fog = 0f;
float flash = 0f;
if (sanityPct < 0.5f) {
blur = (0.5f - sanityPct) * 0.6f;
vig = (0.5f - sanityPct) * 0.4f;
fog = (0.5f - sanityPct) * 0.25f;
blur = (0.5f - sanityPct) * 0.6f;
vig = (0.5f - sanityPct) * 0.4f;
fog = (0.5f - sanityPct) * 0.25f;
}
blur += insanityPct * 0.25f;
vig += insanityPct * 0.35f;
fog += insanityPct * 0.35f;
if (insanityPct >= 0.8f) {
float level = (insanityPct - 0.8f) / 0.2f;
flash = 0.5f * level;
if (mc.player.getRandom().nextFloat() < 0.01f) {
flash += 0.4f;
}
flash = Math.min(flash, 1f);
}
var uFlash = effect.getUniform("FlashStrength");
if (uFlash != null) uFlash.set(flash);
blur += insanityPct * 0.25f;
vig += insanityPct * 0.35f;
fog += insanityPct * 0.35f;
blur = Math.min(blur, 1f);
vig = Math.min(vig, 1f);
fog = Math.min(fog, 1f);
@@ -114,6 +124,24 @@ public class SanityShaderHandler {
var uFog = effect.getUniform("FogStrength");
if (uFog != null) uFog.set(fog);
float shake = 0f;
float pulse = 0f;
if (sanityPct <= 0.125f) {
float lowSan = (0.125f - sanityPct) / 0.125f;
shake = lowSan * 0.010f;
pulse = lowSan * 0.6f;
}
shake += insanityPct * 0.012f;
pulse += insanityPct * 0.8f;
shake = Math.min(shake, 0.025f);
pulse = Math.min(pulse, 1f);
var uShake = effect.getUniform("ShakeStrength");
if (uShake != null) uShake.set(shake);
var uPulse = effect.getUniform("PulseStrength");
if (uPulse != null) uPulse.set(pulse);
float time = (mc.level.getGameTime() % 200000) / 20f;
var uTime = effect.getUniform("Time");
if (uTime != null) uTime.set(time);
}
} catch (Exception e) {
e.printStackTrace();