From aaa5e958f04b5808a4943c1ab0222f69bbd01ba3 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 2 May 2026 15:14:25 -0500 Subject: [PATCH] Fix LOD shading applying incorrectly with Iris --- .../DependencyInjector.java | 2 +- .../core/api/internal/ClientApi.java | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/com/seibel/distanthorizons/coreapi/DependencyInjection/DependencyInjector.java b/api/src/main/java/com/seibel/distanthorizons/coreapi/DependencyInjection/DependencyInjector.java index f21673b96..8a286c592 100644 --- a/api/src/main/java/com/seibel/distanthorizons/coreapi/DependencyInjection/DependencyInjector.java +++ b/api/src/main/java/com/seibel/distanthorizons/coreapi/DependencyInjection/DependencyInjector.java @@ -35,7 +35,7 @@ import java.util.Map; */ public class DependencyInjector implements IDependencyInjector // Note to self: Don't try adding a generic type to IDhApiEvent, the constructor won't accept it { - protected final Map, ArrayList> dependencies = new HashMap<>(); + protected final HashMap, ArrayList> dependencies = new HashMap<>(); /** Internal class reference to BindableType since we can't get it any other way. */ protected final Class bindableInterface; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java index 6e6544c9d..62b7fdb9b 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java @@ -24,6 +24,7 @@ import com.seibel.distanthorizons.api.enums.config.EDhApiMcRenderingFadeMode; import com.seibel.distanthorizons.api.enums.rendering.EDhApiRenderPass; import com.seibel.distanthorizons.api.methods.events.abstractEvents.*; import com.seibel.distanthorizons.core.api.internal.rendering.DhRenderState; +import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector; import com.seibel.distanthorizons.core.enums.MinecraftTextFormat; import com.seibel.distanthorizons.core.file.structure.ClientOnlySaveStructure; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; @@ -40,6 +41,7 @@ import com.seibel.distanthorizons.core.util.objects.Pair; import com.seibel.distanthorizons.core.util.objects.RollingAverage; import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; +import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IIrisAccessor; import com.seibel.distanthorizons.core.wrapperInterfaces.render.renderPass.IDhMetaRenderer; import com.seibel.distanthorizons.core.wrapperInterfaces.render.renderPass.IDhVanillaFadeRenderer; import com.seibel.distanthorizons.core.wrapperInterfaces.render.renderPass.IDhTestTriangleRenderer; @@ -148,6 +150,15 @@ public class ClientApi public static long firstRenderTimeMs = 0; + /** + * keeping track of this is necessary to fix + * out-of-date LODs from rendering when the shading + * is changed by Iris, causing LODs to often + * lack the side shading, which looks pretty bad + * when shaders are disabled. + */ + private boolean irisShadersEnabledLastFrame = false; + //==============// @@ -504,6 +515,27 @@ public class ClientApi } //endregion + + + + //====================// + // Iris data re-build // + //====================// + //region + + // delayed getter since ClientApi is created before this accessor is bound + IIrisAccessor irisAccessor = ModAccessorInjector.INSTANCE.get(IIrisAccessor.class); + if (irisAccessor != null) + { + boolean shadersActive = irisAccessor.isShaderPackInUse(); + if (this.irisShadersEnabledLastFrame != shadersActive) + { + this.irisShadersEnabledLastFrame = shadersActive; + DhApi.Delayed.renderProxy.clearRenderDataCache(); + } + } + + //endregion } }