Skip to content

Commit b1e85f3

Browse files
committed
fix optifine logspam
1 parent 5f4f452 commit b1e85f3

11 files changed

Lines changed: 198 additions & 1 deletion

File tree

src/main/java/com/falsepattern/falsetweaks/config/FalseTweaksGuiConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ private static List<IConfigElement> getConfigElements() throws ConfigException {
8080
if (ModuleConfig.RENDERING_SAFETY) {
8181
result.add(category("rendering_safety", RenderingSafetyConfig.class));
8282
}
83+
if (ModuleConfig.OPTIFINE_LOGSPAM_FIX && Compat.optiFineHasShaders()) {
84+
result.add(category("optispam", OptiSpamConfig.class));
85+
}
8386
return result;
8487
}
8588

src/main/java/com/falsepattern/falsetweaks/config/ModuleConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,11 @@ public class ModuleConfig {
162162
@Config.RequiresMcRestart
163163
public static boolean OVERLAY_CRASH_FIX;
164164

165+
@Config.Comment("Suppresses logspam coming from optifine's shader system. Makes shaderpack reloads faster.")
166+
@Config.DefaultBoolean(true)
167+
@Config.RequiresMcRestart
168+
public static boolean OPTIFINE_LOGSPAM_FIX;
169+
165170
static {
166171
ConfigurationManager.selfInit();
167172
ProfilerConfig.init();
@@ -173,6 +178,7 @@ public class ModuleConfig {
173178
ThreadingConfig.init();
174179
DynamicLightsConfig.init();
175180
RenderingSafetyConfig.init();
181+
OptiSpamConfig.init();
176182
}
177183

178184
public static boolean TRIANGULATOR() {
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.falsepattern.falsetweaks.config;
2+
3+
import com.falsepattern.falsetweaks.Tags;
4+
import com.falsepattern.lib.config.Config;
5+
import com.falsepattern.lib.config.ConfigurationManager;
6+
@Config(modid = Tags.MOD_ID,
7+
category = "optifine_log_spam_fixes")
8+
public class OptiSpamConfig {
9+
@Config.Comment("Suppresses \"Ambiguous shader option: ...\" warnings.")
10+
@Config.LangKey("config.falsetweaks.optispam.ambiguous")
11+
@Config.DefaultBoolean(true)
12+
public static boolean AMBIGUOUS_SHADER_OPTION;
13+
14+
@Config.Comment("Suppresses \"Block not found for name: ...\" warnings.")
15+
@Config.LangKey("config.falsetweaks.optispam.block_not_found")
16+
@Config.DefaultBoolean(true)
17+
public static boolean BLOCK_NOT_FOUND;
18+
19+
@Config.Comment("Suppresses \"Invalid block metadata: ...\" and \"Invalid block ID mapping: ...\" warnings.")
20+
@Config.LangKey("config.falsetweaks.optispam.invalid_id")
21+
@Config.DefaultBoolean(true)
22+
public static boolean INVALID_ID;
23+
24+
@Config.Comment("Suppresses \"Expression already defined: ...\" and \"Custom uniform/variable: ...\" logs.")
25+
@Config.LangKey("config.falsetweaks.optispam.custom_uniforms")
26+
@Config.DefaultBoolean(true)
27+
public static boolean CUSTOM_UNIFORMS;
28+
static {
29+
ConfigurationManager.selfInit();
30+
}
31+
//This is here to make the static initializer run
32+
public static void init() {
33+
34+
}
35+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.falsepattern.falsetweaks.mixin.mixins.client.optispam;
2+
3+
import com.falsepattern.falsetweaks.config.OptiSpamConfig;
4+
import org.spongepowered.asm.mixin.Mixin;
5+
import org.spongepowered.asm.mixin.injection.At;
6+
import org.spongepowered.asm.mixin.injection.Redirect;
7+
import org.spongepowered.asm.mixin.injection.Slice;
8+
import shadersmod.client.BlockAliases;
9+
import stubpackage.Config;
10+
11+
@Mixin(value = BlockAliases.class,
12+
remap = false)
13+
public abstract class BlockAliasesMixin {
14+
@Redirect(method = "loadBlockAliases",
15+
at = @At(value = "INVOKE",
16+
target = "LConfig;warn(Ljava/lang/String;)V"),
17+
slice = @Slice(from = @At(value = "INVOKE",
18+
target = "Ljava/util/Properties;load(Ljava/io/InputStream;)V"),
19+
to = @At(value = "INVOKE",
20+
target = "LConfig;warn(Ljava/lang/String;)V",
21+
ordinal = 3)))
22+
private static void suppressWarnings(String s) {
23+
if (!OptiSpamConfig.INVALID_ID) {
24+
Config.warn(s);
25+
}
26+
}
27+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.falsepattern.falsetweaks.mixin.mixins.client.optispam;
2+
3+
import com.falsepattern.falsetweaks.config.OptiSpamConfig;
4+
import org.spongepowered.asm.mixin.Mixin;
5+
import org.spongepowered.asm.mixin.injection.At;
6+
import org.spongepowered.asm.mixin.injection.Redirect;
7+
import stubpackage.Config;
8+
9+
@Mixin(targets = "ConnectedParser",
10+
remap = false)
11+
public abstract class ConnectedParserMixin {
12+
@Redirect(method = "warn",
13+
at = @At(value = "INVOKE",
14+
target = "LConfig;warn(Ljava/lang/String;)V"))
15+
private void suppressWarn(String s) {
16+
if (!OptiSpamConfig.BLOCK_NOT_FOUND) {
17+
Config.warn(s);
18+
}
19+
}
20+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.falsepattern.falsetweaks.mixin.mixins.client.optispam;
2+
3+
import com.falsepattern.falsetweaks.config.OptiSpamConfig;
4+
import org.spongepowered.asm.mixin.Mixin;
5+
import org.spongepowered.asm.mixin.injection.At;
6+
import org.spongepowered.asm.mixin.injection.Redirect;
7+
import shadersmod.common.SMCLog;
8+
import shadersmod.uniform.ShaderExpressionResolver;
9+
10+
@Mixin(value = ShaderExpressionResolver.class,
11+
remap = false)
12+
public abstract class ShaderExpressionResolverMixin {
13+
@Redirect(method = "registerExpression",
14+
at = @At(value = "INVOKE",
15+
target = "Lshadersmod/common/SMCLog;warning(Ljava/lang/String;)V"))
16+
private void suppressWarn(String message) {
17+
if (!OptiSpamConfig.CUSTOM_UNIFORMS) {
18+
SMCLog.warning(message);
19+
}
20+
}
21+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.falsepattern.falsetweaks.mixin.mixins.client.optispam;
2+
3+
import com.falsepattern.falsetweaks.config.OptiSpamConfig;
4+
import com.llamalad7.mixinextras.sugar.Share;
5+
import com.llamalad7.mixinextras.sugar.ref.LocalRef;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.Redirect;
9+
import shadersmod.client.ShaderOption;
10+
import shadersmod.client.ShaderPackParser;
11+
import shadersmod.common.SMCLog;
12+
import stubpackage.Config;
13+
14+
@Mixin(value = ShaderPackParser.class,
15+
remap = false)
16+
public abstract class ShaderPackParserMixin {
17+
@Redirect(method = "collectShaderOptions(Lshadersmod/client/IShaderPack;Ljava/lang/String;Ljava/util/Map;)V",
18+
at = @At(value = "INVOKE",
19+
target = "Lshadersmod/client/ShaderOption;getValueDefault()Ljava/lang/String;",
20+
ordinal = 0))
21+
private static String captureSo2(ShaderOption instance, @Share("captured") LocalRef<ShaderOption> so2) {
22+
if (OptiSpamConfig.AMBIGUOUS_SHADER_OPTION)
23+
so2.set(instance);
24+
return instance.getValueDefault();
25+
}
26+
27+
@Redirect(method = "collectShaderOptions(Lshadersmod/client/IShaderPack;Ljava/lang/String;Ljava/util/Map;)V",
28+
at = @At(value = "INVOKE",
29+
target = "LConfig;equals(Ljava/lang/Object;Ljava/lang/Object;)Z"))
30+
private static boolean hijackEquals(Object o1, Object o2, @Share("captured") LocalRef<ShaderOption> so2) {
31+
if (!OptiSpamConfig.AMBIGUOUS_SHADER_OPTION) {
32+
return Config.equals(o1, o2);
33+
}
34+
if (!Config.equals(o1, o2)) {
35+
so2.get().setEnabled(false);
36+
}
37+
return true;
38+
}
39+
40+
@Redirect(method = "parseCustomUniforms",
41+
at = @At(value = "INVOKE",
42+
target = "Lshadersmod/common/SMCLog;warning(Ljava/lang/String;)V"))
43+
private static void customUniWarn(String message) {
44+
if (!OptiSpamConfig.CUSTOM_UNIFORMS) {
45+
SMCLog.warning(message);
46+
}
47+
}
48+
49+
@Redirect(method = "parseCustomUniforms",
50+
at = @At(value = "INVOKE",
51+
target = "Lshadersmod/common/SMCLog;info(Ljava/lang/String;)V"))
52+
private static void customUniInfo(String message) {
53+
if (!OptiSpamConfig.CUSTOM_UNIFORMS) {
54+
SMCLog.info(message);
55+
}
56+
}
57+
}

src/main/java/com/falsepattern/falsetweaks/mixin/plugin/standard/Mixin.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,14 @@ public enum Mixin implements IMixin {
350350
RenderingSafety_RenderingRegistryMixin(Side.CLIENT, condition(() -> ModuleConfig.RENDERING_SAFETY), "rendersafety.RenderingRegistryMixin"),
351351
RenderingSafety_TileEntityRendererDispatcherMixin(Side.CLIENT, condition(() -> ModuleConfig.RENDERING_SAFETY).and(avoid(TargetedMod.DRAGONAPI)), "rendersafety.TileEntityRendererDispatcherMixin"),
352352
RenderingSafety_DragonAPI_TileEntityRenderEventMixin(Side.CLIENT, condition(() -> ModuleConfig.RENDERING_SAFETY).and(require(TargetedMod.DRAGONAPI)), "rendersafety.dragonapi.TileEntityRenderEventMixin"),
353-
353+
//endregion Render Safety
354+
355+
//region OptiFine Spam Fix
356+
OptiSpam_BlockAliasesMixin(Side.CLIENT, condition(() -> ModuleConfig.OPTIFINE_LOGSPAM_FIX).and(REQUIRE_OPTIFINE_WITH_SHADERS), "optispam.BlockAliasesMixin"),
357+
OptiSpam_ConnectedParserMixin(Side.CLIENT, condition(() -> ModuleConfig.OPTIFINE_LOGSPAM_FIX).and(REQUIRE_OPTIFINE_WITH_SHADERS), "optispam.ConnectedParserMixin"),
358+
OptiSpam_ShaderExpressionResolverMixin(Side.CLIENT, condition(() -> ModuleConfig.OPTIFINE_LOGSPAM_FIX).and(REQUIRE_OPTIFINE_WITH_SHADERS), "optispam.ShaderExpressionResolverMixin"),
359+
OptiSpam_ShaderPackParserMixin(Side.CLIENT, condition(() -> ModuleConfig.OPTIFINE_LOGSPAM_FIX).and(REQUIRE_OPTIFINE_WITH_SHADERS), "optispam.ShaderPackParserMixin"),
360+
//endregion OptiFine Spam Fix
354361
;
355362
// @formatter:on
356363

src/main/java/stubpackage/Config.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,11 @@ public static boolean isDynamicLightsFast() {
4646
public static boolean isDynamicHandLight() {
4747
return false;
4848
}
49+
50+
public static boolean equals(Object o1, Object o2) {
51+
return false;
52+
}
53+
public static void warn(String s) {
54+
55+
}
4956
}

src/main/resources/assets/falsetweaks/lang/en_US.lang

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,13 @@ config.falsetweaks.rendering_safety.block=Enable for inventory blocks
6767
config.falsetweaks.rendering_safety.tesr=Enable for tile entities
6868
config.falsetweaks.rendering_safety.item=Enable for items
6969

70+
config.falsetweaks.optispam.category=Optifine log spam fixes
71+
config.falsetweaks.optispam.category.tooltip=Suppresses a bunch of log spam coming from optifine's shader system. As a bonus, this also makes shader loading faster!
72+
config.falsetweaks.optispam.ambiguous=Ambiguous shader option
73+
config.falsetweaks.optispam.block_not_found=Block not found
74+
config.falsetweaks.optispam.invalid_id=Invalid IDs
75+
config.falsetweaks.optispam.custom_uniforms=Custom uniforms
76+
7077
gui.triangulator.calibrationdescription.line0=Click the Toggle button until the
7178
gui.triangulator.calibrationdescription.line1=yellow and the blue squares look the same,
7279
gui.triangulator.calibrationdescription.line2=then press the Apply button.

0 commit comments

Comments
 (0)